How the 52-week annual view and the ATP calculator stay in sync.
/athlete/<pid>/year/ โ read-only 52-week grid. Each row shows the
week's phase, target hours, target Load, actual vs planned Load bar,
session counts, and any races./static/calculators/atp_builder.html) โ the
periodisation calculator. When opened with ?athlete=<pid> it pre-
loads the athlete's saved ATP and the new Save as ATP for this
athlete button persists it back to the platform.The annual plan view reads from a MacrocyclePlan row keyed to the
athlete. When that row exists, its weekly intent (planned Load,
planned hours, phase label) overrides the simple sum-of-scheduled-
workouts. When no plan exists, the view falls back to summing the
planned_load of dropped ScheduledWorkouts.
The single-athlete calendar's left summary panel surfaces an ATP This Week block: phase chip, target hours, target Load, and "filled %" comparing scheduled load to the ATP target. Under 60% you get a warning; over 130% you get an info note.
/athlete/<pid>/year/.Still stuck? Ask us a question and we'll write up an answer.
Ask a question