VEU.WathBody/1-docs/4-modules/m05-progression-rules/api_specs/03-deload.md

38 lines
2.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Спецификация 03: делоад — ProgressionRules.CheckDeload
Источники: Ф-12.4, документ метрик правило 10, дизайн LLM-планирования
разд. 6 («делоад не реже чем каждые 6 недель, объём −40–50 %»).
## 1. Сигнатура
```csharp
public ProgramVersion? CheckDeload(int athleteId, DateOnly today)
```
## 2. Условие
1. Активная версия есть; тренировок достаточно: последняя тренировка
атлета старше `DeloadMaxWeeks` недель назад от «сегодня» → нет
делаода (атлет не тренируется — это break-домен, не делоад).
2. Опорная точка — последнее делоад-событие (v1, З-42 п. 5):
- тренировка с `session_kind=deload` (максимальная `started_at`), или
- начало активной версии (нет истории) — дата создания версии.
Вариант «rules-draft с `session_kind: deload` в week 1» как опорная
точка **не реализован** (черновик ещё не подтверждён, тренировок
с kind=deload нет) — кандидат на доработку в m08.
3. `сегодня − опорная ≥ DeloadMaxWeeks × 7 дней` → предложение делаода.
4. Дедупликация: та же, что в 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)».
🛡 Активация — только человеком; авто-делоада активной версии нет.