2.2 KiB
2.2 KiB
Спецификация 03: делоад — ProgressionRules.CheckDeload
Источники: Ф-12.4, документ метрик правило 10, дизайн LLM-планирования разд. 6 («делоад не реже чем каждые 6 недель, объём −40–50 %»).
1. Сигнатура
public ProgramVersion? CheckDeload(int athleteId, DateOnly today)
2. Условие
- Активная версия есть; тренировок достаточно: последняя тренировка
атлета старше
DeloadMaxWeeksнедель назад от «сегодня» → нет делаода (атлет не тренируется — это break-домен, не делоад). - Опорная точка — последнее делоад-событие (v1, З-42 п. 5):
- тренировка с
session_kind=deload(максимальнаяstarted_at), или - начало активной версии (нет истории) — дата создания версии.
Вариант «rules-draft с
session_kind: deloadв week 1» как опорная точка не реализован (черновик ещё не подтверждён, тренировок с kind=deload нет) — кандидат на доработку в m08.
- тренировка с
сегодня − опорная ≥ DeloadMaxWeeks × 7 дней→ предложение делаода.- Дедупликация: та же, что в spec 02 (rules-draft на активную версию существует → null).
3. Формирование draft
Deep-copy активного body; week 1:
- веса
× 0.6(середина коридора −40–50 %), округление к 0.5 кг; - число подходов
−1(минимум 1); - всем сессиям week 1 →
"session_kind": "deload"; ProgramStore.CreateDraft(..., "rules", rationale); rationale — «делоад: N недель без лёгкой недели (порог M)».
🛡 Активация — только человеком; авто-делоада активной версии нет.