Fix treadmill/indoor distance over-measure and clean up polluted PRs
- Garmin Connect sync now applies Garmins corrected summary distance/moving time, overriding the raw wrist-estimated FIT distance for treadmill/indoor runs - Exclude indoor (no-GPS) runs from distance personal records (bogus fast splits) - backfill_indoor_distances task: re-fetch corrected distance for historical indoor runs - recompute_personal_records_all task: wipe and rebuild PRs from valid activities Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -181,7 +181,14 @@ def sync_activities(garmin, user_id: int, since: Optional[datetime],
|
||||
dest = dest_dir / f"{garmin_id}.fit"
|
||||
dest.write_bytes(fit_data)
|
||||
|
||||
process_activity_file.delay(str(dest), user_id, "fit", garmin_id)
|
||||
# Pass Garmin's corrected summary so treadmill/indoor wrist-distance is
|
||||
# overridden by the authoritative displayed distance/moving time.
|
||||
summary = {
|
||||
"distance": act.get("distance"),
|
||||
"moving": act.get("movingDuration"),
|
||||
"elapsed": act.get("elapsedDuration") or act.get("duration"),
|
||||
}
|
||||
process_activity_file.delay(str(dest), user_id, "fit", garmin_id, summary)
|
||||
queued += 1
|
||||
|
||||
if status_callback and (queued % 5 == 0 or queued == total):
|
||||
|
||||
Reference in New Issue
Block a user