VEU.WathBody/1-docs/4-modules/m04-metrics-engine/api_specs/01-metrics-config.md

43 lines
2.5 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.

# Спецификация: конфигурация порогов Safety (MetricsConfig)
> Источники: Ф-13.5 (Р3-А: пороги конфигурируемые, умолчания —
> документ метрик), документ метрик п. 2.1–2.3, правила 1, 6.
## 1. Секция `Safety` в appsettings (json, camelCase)
```json
"Safety": {
"bpCancelSys": 150, // АД сист. → отмена (документ метрик п. 2.2)
"bpCancelDias": 90, // АД диаст. → отмена
"bpElevatedSys": 140, // нижняя граница коридора «только кардио»
"bpElevatedDias": 95, // диаст. коридора
"hrRestingRise": 8, // пульс покоя ≥ базовый +8 (правило 1)
"hrRestingDays": 2, // …дней подряд
"wellbeingLow": 2, // самочувствие ≤2 (правило 1)
"wellbeingDays": 2, // …дней подряд
"lightDayCount": 3, // 3+ дня → cancel_recommendation
"kneePainMin": 1, // боль ≥1 (правило 6)
"kneeRepeatSessions": 2, // …занятий подряд
"hrBaselineDays": 14, // окно базового пульса покоя
"hrBaselineMin": 3 // минимум значений для базового
}
```
## 2. Класс `Core\Metrics\MetricsConfig.cs`
- свойства `int` с умолчаниями из таблицы выше;
- `static MetricsConfig Load(JsonElement root)` — чтение секции
`Safety` (отсутствует/частичная секция → умолчания по каждому
полю; нечисловое значение → исключение с именем поля);
- объект хранится в `ServerConfig` (поле `Safety`) и в DI как
синглтон; валидация `ServerConfig.Validate` дополняется проверкой:
`bpElevatedSys ≤ bpCancelSys`, все значения > 0, иначе ошибка
валидации конфига (фатально). Коридоры диастолы по документу
метрик перекрываются (отмена >90, «кардио» до 95) — проверка
`bpElevatedDias ≤ bpCancelDias` не применяется.
## 3. Инвариант
🛡 Пороги читаются только из конфигурации; в расчётном коде числовые
пороги не хардкодятся (Р3-А).