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

2.2 KiB
Raw Permalink Blame History

Спецификация 03: делоад — ProgressionRules.CheckDeload

Источники: Ф-12.4, документ метрик правило 10, дизайн LLM-планирования разд. 6 («делоад не реже чем каждые 6 недель, объём −40–50 %»).

1. Сигнатура

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)».

🛡 Активация — только человеком; авто-делоада активной версии нет.