From a43a9f129f6d71a8a499ccd0b5649cf67fa4d610 Mon Sep 17 00:00:00 2001 From: Lars Date: Thu, 26 Mar 2026 10:22:55 +0100 Subject: [PATCH] fix: sleep_avg_quality uses lowercase stage names MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Problem: Schlafphasen werden lowercase gespeichert (deep, rem, light, awake), aber get_sleep_avg_quality() prüfte Titlecase (Deep, REM) → 0% Match Fix: Ändere Prüfung zu lowercase: ['deep', 'rem'] Jetzt wird {{sleep_avg_quality}} korrekt berechnet aus JSONB segments. Quelle: backend/routers/sleep.py → phase_map speichert lowercase Co-Authored-By: Claude Opus 4.6 --- backend/placeholder_resolver.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/placeholder_resolver.py b/backend/placeholder_resolver.py index efb8835..a8e3f88 100644 --- a/backend/placeholder_resolver.py +++ b/backend/placeholder_resolver.py @@ -347,7 +347,8 @@ def get_sleep_avg_quality(profile_id: str, days: int = 7) -> str: for row in rows: segments = row['sleep_segments'] if segments: - deep_rem_min = sum(s.get('duration_min', 0) for s in segments if s.get('stage') in ['Deep', 'REM']) + # 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']) total_min = sum(s.get('duration_min', 0) for s in segments) if total_min > 0: quality_pct = (deep_rem_min / total_min) * 100