From 7daa2e40c719f1e2d81065aaaeb4ea1e15451f84 Mon Sep 17 00:00:00 2001 From: Lars Date: Thu, 26 Mar 2026 10:31:39 +0100 Subject: [PATCH] fix: sleep quality calculation using wrong key (stage vs phase) BUG: sleep_avg_quality showed 0% despite valid sleep data ROOT CAUSE: sleep_segments use 'phase' key, not 'stage' FIX: Changed s.get('stage') to s.get('phase') in get_sleep_avg_quality() version: 9.5.1 (bugfix) module: prompts 2.0.1 --- backend/placeholder_resolver.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/placeholder_resolver.py b/backend/placeholder_resolver.py index a8e3f88..126929d 100644 --- a/backend/placeholder_resolver.py +++ b/backend/placeholder_resolver.py @@ -347,8 +347,8 @@ def get_sleep_avg_quality(profile_id: str, days: int = 7) -> str: for row in rows: segments = row['sleep_segments'] if segments: - # Note: stages are stored lowercase (deep, rem, light, awake) - deep_rem_min = sum(s.get('duration_min', 0) for s in segments if s.get('stage') in ['deep', 'rem']) + # Note: segments use 'phase' key (not 'stage'), stored lowercase (deep, rem, light, awake) + deep_rem_min = sum(s.get('duration_min', 0) for s in segments if s.get('phase') in ['deep', 'rem']) total_min = sum(s.get('duration_min', 0) for s in segments) if total_min > 0: quality_pct = (deep_rem_min / total_min) * 100