fix: Convert goal values to float before progress calculation
All checks were successful
Deploy Development / deploy (push) Successful in 46s
Build Test / lint-backend (push) Successful in 0s
Build Test / build-frontend (push) Successful in 13s

TypeError: unsupported operand type(s) for -: 'decimal.Decimal' and 'float'

PostgreSQL NUMERIC columns return Decimal objects. Must convert
current_value, target_value, start_value to float before passing
to calculate_goal_progress_pct().

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Lars 2026-03-28 12:39:26 +01:00
parent 8da577fe58
commit 112226938d

View File

@ -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)