VEU.WathBody/1-docs/3-tech/kit-helpers-spec.md

40 lines
2.8 KiB
Markdown
Raw 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.

# Спецификация потребления: Kit.Helpers
> Спецификация разделяемой библиотеки в объёме потребления системы
> VEU.WathBody (шаг 5 процесса). Библиотека развивается вне проекта
> (`3-app\1-lib\Kit.Helpers`, net10.0, Npgsql 10) — здесь фиксируется
> только контракт использования; исходники не изменяются.
## Потребляемые компоненты (v1)
| Компонент | Использует | Назначение в VEU.WathBody |
|---|---|---|
| `Db.Postgres.SqlServerHelper` | `FitParser`, `MetricsEngine`, `ProgramStore`, `RestApi`, `AdminWeb` | Единственный путь к PostgreSQL: выполнение хранимых функций слоя `src`/`ref` (шаг 6) |
| `SqlServerHelperFluent` | те же | Fluent-обёртка вызовов функций |
| `Log.Logger` | все серверные компоненты | Файловые логи; `Log.Path`, уровень из конфигурации |
| `JsonHelper` | `ProgramStore`, `FitParser` | Сериализация/десериализация версий программ и фактов (`facts_json`) |
## Контракты
- **БД:** соединение — из `Db.ConnectionString`; каждый вызов функции БД —
короткое соединение (без долгоживущих транзакций); ошибки — исключения
библиотеки, оборачиваются компонентом в лог + код ответа API.
- **Логи:** уровень из конфигурации; в лог не пишутся ключи, пароли
и хэши (инвариант «Тайны», requirements раздел 5); ротация — средствами
Logger по дням.
- **JSON:** `JsonHelper` — единственная точка сериализации программ
(стабильный порядок полей — диффы версий сравнимы).
## Не потребляется в v1
`Cache` (нет кэшируемых справочников большого объёма), `Http.*`
(Fetcher реализует собственный клиент Garmin — FluentHttpClient может
быть подключён в итерации 2 после прототипа), `Session`, `HttpContext`.
## Версии и обновления
Фиксируется прямой ссылкой на проект `3-app\1-lib\Kit.Helpers` (monorepo);
обновления библиотеки — только после прогона тестов сервера
(`c-tst`); Breaking-изменения API библиотеки — повод пересмотреть
настоящую спецификацию.