diff --git a/backend/app/services/garmin_connect_sync.py b/backend/app/services/garmin_connect_sync.py index e8b275e..b62d2cc 100644 --- a/backend/app/services/garmin_connect_sync.py +++ b/backend/app/services/garmin_connect_sync.py @@ -252,6 +252,7 @@ def sync_wellness(garmin, user_id: int, since: Optional[datetime], db, _set(row, "weight_kg", round(bwf / 1000 if bwf > 300 else bwf, 2)) # Body battery — store summary + fine-grained timeline + bb = None if bb_raw: bb = _parse_body_battery(bb_raw, day_str) if bb: @@ -374,7 +375,11 @@ def _compute_body_battery_hires(bb_values, intraday_hr): if not bb_values or not intraday_hr or len(bb_values) < 2: return None - bb = sorted(bb_values, key=lambda x: x[0]) + # Drop entries with None timestamp or level — raw API data can have gaps + bb = sorted([v for v in bb_values if v[0] is not None and v[1] is not None], + key=lambda x: x[0]) + if len(bb) < 2: + return None hr = sorted(intraday_hr, key=lambda x: x[0]) hr_vals = [bpm for _, bpm in hr if bpm is not None and bpm > 0]