From eda8502568d3b0f3263dfb9c99bd2f96418ade7c Mon Sep 17 00:00:00 2001 From: Alexander Bocken Date: Fri, 3 Apr 2026 08:24:42 +0200 Subject: [PATCH] fitness: compute kcal server-side and store in session document Previously kcal was computed on-the-fly in 3 places with inconsistent inputs (hardcoded 80kg, missing GPS data, no demographics). Now a shared computeSessionKcal() helper runs server-side using the best available method (GPS + real demographics) and stores the result in a new kcalEstimate field on WorkoutSession. Kcal is recomputed on save, recalculate, GPX upload, and GPX delete. The stats overview uses stored values with a legacy fallback for sessions saved before this change. --- src/lib/components/fitness/SessionCard.svelte | 56 +---------- src/lib/server/computeSessionKcal.ts | 94 +++++++++++++++++++ src/models/WorkoutSession.ts | 18 ++++ src/routes/api/fitness/sessions/+server.ts | 5 + .../api/fitness/sessions/[id]/gpx/+server.ts | 19 +++- .../sessions/[id]/recalculate/+server.ts | 11 ++- .../api/fitness/stats/overview/+server.ts | 90 +++++++++++------- .../[id]/+page.svelte | 63 +------------ 8 files changed, 207 insertions(+), 149 deletions(-) create mode 100644 src/lib/server/computeSessionKcal.ts diff --git a/src/lib/components/fitness/SessionCard.svelte b/src/lib/components/fitness/SessionCard.svelte index 35b2d36..77a1266 100644 --- a/src/lib/components/fitness/SessionCard.svelte +++ b/src/lib/components/fitness/SessionCard.svelte @@ -1,8 +1,6 @@