change razbor-metrik-v-obekty заархивирован
Дельты влиты в openspec/specs (parsing, storage), задача убрана из беклога, план отражает сделанную часть шага 3. Не закрыт один пункт: живая доставка с телефона не разобрана — поток молчит с 17:13, пауза началась до перезапуска сервиса.
This commit is contained in:
@@ -18,7 +18,6 @@
|
||||
- [Судьба доставки, у которой разобрана не вся секция data](nerazobrannye-sekcii-dostavki.md) — тело с одним stateOfMind помечается parsed, а ретеншен снесёт его как разобранное
|
||||
|
||||
## высокий
|
||||
- [Разбор метрик в часовые объекты](razbor-metrik-v-obekty.md) — Доставки копятся непрозрачными телами — точек в хранилище нет вовсе, всё остальное упирается в это
|
||||
- [Тренировки и секции с собственными id](trenirovki-i-zapisi.md) — Тренировки с геотреком и состояние разума приходят, но не разбираются — без них не закрыть ни трекер, ни агента-медика
|
||||
- [Пересборка хранилища из сырого архива](reindex-iz-arhiva.md) — Ошибка разбора без пересборки становится потерей данных — исправленный код не применится к уже разобранному
|
||||
- [Измеренный род агрегации и каталог разрезов](rod-agregacii-i-katalog.md) — Без рода метрики свёртка в ответе неотличима от угадывания — а суммировать нижний слой значит завысить втрое
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
# Разбор метрик в часовые объекты
|
||||
|
||||
**Приоритет:** высокий
|
||||
|
||||
Приём работает, но дальше архива данные не идут: 89 доставок лежат телами
|
||||
`.json.gz`, а в SQLite только строки `delivery`. Всё остальное — каталог,
|
||||
Read API, MCP — стоит на этой задаче.
|
||||
|
||||
Правила выведены на живом потоке и проверены, изобретать заново не нужно
|
||||
(`docs/local-research.md`, находки 33, 35, 36, 38, 39, 41):
|
||||
|
||||
- ключ точки — координаты `метрика + слой + метка`, у эпизода — `метрика + слой
|
||||
+ начало + конец` (находка 47); `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`).
|
||||
|
||||
Готово, когда по существующим доставкам собирается хранилище, суммы по часовому
|
||||
слою сходятся с проверкой из `tmp/research/`, а эпизодов сна выходит 174, а не
|
||||
170 (находка 47).
|
||||
|
||||
Связано: `docs/architecture.md` → «Хранилище», план шаг 3.
|
||||
|
||||
+9
-5
@@ -8,13 +8,14 @@
|
||||
|
||||
## Ближайшая цель
|
||||
|
||||
Приём работает, поток настоящих пакетов копится в сыром архиве. Дальше —
|
||||
разбор и хранилище (шаг 3): всё, что нужно, чтобы данные перестали быть
|
||||
недифференцированной кучей тел запросов.
|
||||
Метрики разбираются и ложатся в часовые объекты: тела перестали быть
|
||||
недифференцированной кучей. Дальше — доразобрать остаток шага 3
|
||||
(тренировки и записи со своими `id`, `reindex`, словарь категориальных
|
||||
значений) и разобрать блокеры, накопившиеся из ревью.
|
||||
|
||||
Разведка закончена: правило вывода слоя, модель идентичности и формы точки
|
||||
проверены на живом потоке, выводы — в
|
||||
[local-research.md](local-research.md), 46 находок.
|
||||
[local-research.md](local-research.md), 47 находок.
|
||||
|
||||
## Шаги
|
||||
|
||||
@@ -23,7 +24,10 @@
|
||||
- [x] **2. Приём без разбора.** `POST /api/v1/ingest`: лимит тела, gzip,
|
||||
запись тела в архив, строка в `delivery`. Разбора ещё нет.
|
||||
← **подключаем телефон по локальной сети**
|
||||
- [ ] **3. Разбор и хранилище.** Миграции, часовые объекты метрик
|
||||
- [~] **3. Разбор и хранилище.** Метрики — сделано (`bucket`, `internal/hae`,
|
||||
`internal/canon`, `internal/fold`); остались тренировки и записи со
|
||||
своими `id`, `reindex` и словарь категориальных значений. Миграции,
|
||||
часовые объекты метрик
|
||||
(`bucket`, ключ `метрика + слой + час`) + `workout`/`record` по своим
|
||||
`id`. Вывод слоя из выравнивания меток; развод `sleep_analysis` на два
|
||||
имени (находка 38). Канонизация с округлением чисел и хеш содержимого
|
||||
|
||||
Reference in New Issue
Block a user