diff --git a/backend/calculations/body_metrics.py b/backend/calculations/body_metrics.py index 8a20d9a..af1a138 100644 --- a/backend/calculations/body_metrics.py +++ b/backend/calculations/body_metrics.py @@ -400,6 +400,10 @@ def _score_weight_trend(profile_id: str) -> Optional[int]: if None in [current, target]: return None + # Convert Decimal to float (PostgreSQL NUMERIC returns Decimal) + current = float(current) + target = float(target) + # If no start_value, use oldest weight in last 90 days if start is None: with get_db() as conn: @@ -414,6 +418,8 @@ def _score_weight_trend(profile_id: str) -> Optional[int]: """, (profile_id,)) row = cur.fetchone() start = float(row['weight']) if row else current + else: + start = float(start) # Progress percentage progress_pct = calculate_goal_progress_pct(current, target, start)