Files
healthlog/docs/backlog/razbor-metrik-v-obekty.md
T
av 809153e03f предложение переработано по итогам ревью дизайна
- три решения опровергнуты экспериментами: повтор при SQLITE_BUSY не сходится
  без _txlock=immediate (242 из 800 против 800 из 800), разбор в map[string]any
  держит 197 МиБ против 54, канонизация без json.Number теряет литерал
- канонизации назначен дом: общий internal/canon вместо hae, иначе импорт
  экспорта Apple потребует второй реализации и хеш-детектор станет бесполезен
- вывод слоя вернул шаг наследования, WARN сравнивается только с надёжным
  заголовком; в bucket возвращены units и границы содержимого
2026-08-01 15:16:58 +03:00

38 lines
2.6 KiB
Markdown

# Разбор метрик в часовые объекты
**Приоритет:** высокий
Приём работает, но дальше архива данные не идут: 89 доставок лежат телами
`.json.gz`, а в SQLite только строки `delivery`. Всё остальное — каталог,
Read API, MCP — стоит на этой задаче.
Правила выведены на живом потоке и проверены, изобретать заново не нужно
(`docs/local-research.md`, находки 33, 35, 36, 38, 39, 41):
- ключ точки — координаты `метрика + слой + метка`; `source` в ключ не входит;
- слой выводится из выравнивания меток: плотная метрика (≥10 точек)
классифицируется сама, редкая наследует преобладающий слой доставки;
- при столкновении выигрывает более полная точка, а не последняя пришедшая
(0.66% координат различаются набором полей, а не значением);
- три формата времени: локальное со смещением, RFC 3339 Z, Unix-эпоха внутри
`heartbeatSeries`;
- `sleep_analysis` разводится на два имени — поэпизодное и суточную сводку.
Шаги:
- миграция `bucket` (`метрика + слой + час`, payload gzip-BLOB, `sealed`);
- разбор метрик, вывод слоя, канонизация с округлением до ~12 значащих цифр;
- слияние точек в объект read-modify-write, хеш объекта как детектор изменений;
- `docs/database.md` — ER-схема (её требует шаг гейта `er-schema`).
**Границы после ревью дизайна.** Поэпизодный `sleep_analysis` в этой задаче не
сохраняется — модель идентичности вынесена блокером
[identichnost-epizodnyh-metrik](identichnost-epizodnyh-metrik.md). Остальное
делается целиком.
Готово, когда по существующим 89 доставкам собирается хранилище (кроме
эпизодов сна), а суммы по часовому слою сходятся с проверкой из
`tmp/research/`.
Связано: `docs/architecture.md` → «Хранилище», план шаг 3.