2.0 KiB
2.0 KiB
Спецификация 05: метрики и план/факт
Источники: Ф-9.4/Ф-9.5, m04 (workout_metrics), дизайн LLM-планирования разд. 2 (body). Только чтение (🛡3).
1. Метрики
GET /api/admin/metrics?athleteId&dateFrom&dateTo (Bearer) →
{"workouts":[{"workoutId":"…","date":"2026-10-14","adherence":100.0,
"tonnage":640.0,"tonnageByGroup":{"push":640.0},
"e1pmByExercise":{"<uuid>":120.0},"redFlags":[]}],
"weekly":[{"week":"2026-10-12","workouts":2,"avgAdherence":85.0,
"tonnage":2400.0}]}
- по тренировкам — строки
workout_metricsпериода (поля как в БД; JSON-поля — как есть); weekly— группировка по ISO-неделе даты тренировки: число тренировок, среднее adherence, сумма тоннажа.
2. План/факт (PlanSummaryService)
GET /api/admin/plan?athleteId → сводка по активной версии:
{"activeVersion":3,"weeks":[{"week":1,"from":"2026-10-05","to":"2026-10-11",
"planned":2,"performed":1,"missed":1,"avgAdherence":100.0}]}
- неделя N активной версии:
from= понедельник недели создания версии + 7×(N−1) дней;to= from+6; planned— число сессий вweeks[N-1].sessions(body; в v1 все недели одинаковые по составу — считаем по своей неделе массива);performed— тренировки атлета за [from..to] в плановые дни недели (day-of-week сессии; день без сессии в плане не считается);missed= planned − performed (не < 0);avgAdherence— среднее adherence этих тренировок (нет — null);- активной версии нет →
{"activeVersion":null,"weeks":[]}.