VEU.WathBody/1-docs/4-modules/m05-progression-rules/api_specs/01-config.md

2.6 KiB
Raw Permalink Blame History

Спецификация 01: конфиг ProgressionConfig

Источники: requirements разд. 3 (Progression.*, Deload.*); умолчания там же. По образцу MetricsConfig (m04, spec 01).

1. Поля (секция Progression в appsettings.json)

Поле Ключ Умолчание Семантика
BaseStepKg progression.baseStepKg 2.5 шаг прогрессии базовых (правило 1)
IsoStepKg progression.isoStepKg 1.0 шаг прогрессии изоляции (валидация 0.25–5, О-3-А)
BackoffPercent progression.backoffPercent 5 снижение при недовыполнении, %
DeloadMaxWeeks progression.deloadMaxWeeks 6 недель между делоадами
MissDaysForBreak progression.missDaysForBreak 4 дней пропуска всех сессий → break (Ф-14.1, Жижин)
ReturnMinFactor progression.returnMinFactor 0.6 нижняя граница коэффициента возврата (−40 %)
ReturnMaxFactor progression.returnMaxFactor 0.9 верхняя граница снижения простоя 7–13 дней (−10 %)

Загрузка — ProgressionConfig.Load(JsonElement root): секция progression, reflection по свойствам, camelCase → PascalCase, нечисловое значение → исключение (упадёт при старте serve, как у MetricsConfig). Регистрация в DI: AddSingleton(config.Progression).

2. Валидация Validate()

  • IsoStepKg вне [0.25; 5] → ошибка (коридор метрик «+0,5–1 кг», О-3-А);
  • BaseStepKg вне [0.5; 10] → ошибка;
  • BackoffPercent вне [1; 20] → ошибка (утверждённый диапазон, З-37 п. 4);
  • DeloadMaxWeeks вне [3; 12], MissDaysForBreak < 2 → ошибка (диапазон делаода — З-37 п. 4);
  • ReturnMinFactor вне [0.3; 0.9], ReturnMaxFactor вне (0.5; 1], ReturnMinFactor > ReturnMaxFactor → ошибка.

3. Инвариант 🛡

Пороги правил — только из конфига; в коде не хардкодятся (Р3-А). Коэффициенты возврата по длительности простоя — константы таблицы документа перерывов (разд. 3.2), фактор ограничен конфигом ReturnMinFactor/ReturnMaxFactor.