хранилище описано как свёртка по журналу событий
- экспорт Apple это снапшот всей истории, доставки после его даты — события поверх; состояние пересобирается как import(экспорт) + replay(доставки) - отсюда ретеншен архива меняется с произвольных 14 дней на «до следующего проверенного экспорта» (~2 ГБ за квартал, измерено), а свёртка обязана быть детерминированной — воспроизведение строго по received_at - названы границы модели: stateOfMind в экспорт не попадает вовсе, а верхние слои за периоды с удалёнными доставками не воскресают и досчитываться не должны — каталог обязан говорить это честно
This commit is contained in:
@@ -34,22 +34,22 @@ healthlog делает это один раз. Телефон шлёт данн
|
||||
## Как устроено
|
||||
|
||||
```
|
||||
iPhone ──HTTPS POST──► healthlog ──► сырой архив (.json.gz, 14 дней)
|
||||
экспорт Apple ────────┐ снапшот всей истории, раз в 2–3 месяца
|
||||
▼
|
||||
iPhone ──HTTPS POST──► healthlog ──► журнал доставок (.json.gz)
|
||||
│ │
|
||||
│ └── страховка разбора, не склад
|
||||
│ └── события поверх снапшота
|
||||
▼
|
||||
SQLite ──┬──► HTTP read API ──► мои приложения
|
||||
(точки по │
|
||||
слоям) └──► MCP ───────────► агенты
|
||||
▲
|
||||
экспорт Apple ──────────────┘ нижний слой, раз в 2–3 месяца
|
||||
(свёртка по │
|
||||
журналу) └──► MCP ───────────► агенты
|
||||
```
|
||||
|
||||
Приём сначала кладёт тело запроса на диск как есть и только потом разбирает.
|
||||
Значит, ошибка в нашем разборе не может привести к потере данных: хранилище
|
||||
пересобирается из архива командой `healthlog reindex`. Архив при этом
|
||||
недолговечен — дальше истина в самих точках, и потому точки хранятся
|
||||
дословно.
|
||||
Значит, ошибка в разборе не теряет данные: состояние всегда пересобирается
|
||||
свёрткой `import(экспорт) + replay(доставки)`. Отсюда и главный инвариант —
|
||||
точки хранятся дословно: журнал, из которого что-то выброшено, перестаёт быть
|
||||
журналом.
|
||||
|
||||
Подробности — [docs/architecture.md](docs/architecture.md).
|
||||
|
||||
@@ -59,7 +59,7 @@ iPhone ──HTTPS POST──► healthlog ──► сырой архив (.jso
|
||||
сырой архив. Разбора, хранилища и read API ещё нет — план в
|
||||
[docs/plan.md](docs/plan.md).
|
||||
|
||||
Разведка формата закончена: 41 находка на живом потоке, половина расходится с
|
||||
Разведка формата закончена: 46 находок на живом потоке, половина расходится с
|
||||
документацией Health Auto Export — [docs/local-research.md](docs/local-research.md).
|
||||
|
||||
## Команды
|
||||
|
||||
Reference in New Issue
Block a user