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

38 lines
2.6 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.

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