2.6 KiB
2.6 KiB
Спецификация 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.