diff --git a/backend/app/services/garmin_connect_sync.py b/backend/app/services/garmin_connect_sync.py index 5011ad9..b9a567f 100644 --- a/backend/app/services/garmin_connect_sync.py +++ b/backend/app/services/garmin_connect_sync.py @@ -91,8 +91,11 @@ def sync_activities(garmin, user_id: int, since: Optional[datetime], # All-time: full pull on first sync, incremental thereafter start_date = (since - timedelta(days=1)).date() if since else date(2010, 1, 1) elif since: - # Incremental: one day overlap to catch any late-arriving activities - start_date = (since - timedelta(days=1)).date() + # Use whichever is earlier: one day before last sync OR the configured lookback + # window. This ensures increasing lookback_days actually fetches older data. + incremental = (since - timedelta(days=1)).date() + lookback = date.today() - timedelta(days=max(lookback_days, 1)) + start_date = min(incremental, lookback) else: start_date = date.today() - timedelta(days=max(lookback_days, 1)) end_date = date.today() @@ -194,8 +197,11 @@ def sync_wellness(garmin, user_id: int, since: Optional[datetime], db, if lookback_days == -1: start_date = (since - timedelta(days=1)).date() if since else date(2010, 1, 1) elif since: - # Incremental: one day overlap to catch any late-arriving wellness data - start_date = (since - timedelta(days=1)).date() + # Use whichever is earlier: one day before last sync OR the configured lookback + # window. This ensures increasing lookback_days actually fetches older data. + incremental = (since - timedelta(days=1)).date() + lookback = date.today() - timedelta(days=max(lookback_days, 1)) + start_date = min(incremental, lookback) else: start_date = date.today() - timedelta(days=max(lookback_days, 1)) days = (date.today() - start_date).days + 1