- роадмап отвечает «что умеет и чего не умеет»: PLAN.md → ROADMAP.md, четыре канонические секции, достигнутые звенья строками в «Готово», цели переформулированы возможностями приложения - задачи: род работы и «Затрагивает» набору спринта, 34 заголовка в форму действия, «Завершение» целей перечнями со ссылкой из каждой задачи - вычитка проходами task-form и doc-wording, починены протухшие факты в README, паспорте и review.md
52 lines
5.9 KiB
Markdown
52 lines
5.9 KiB
Markdown
# Роадмап
|
|
|
|
Что приложение уже умеет и чего ещё не умеет. Цель — возможность приложения,
|
|
файл `[goal]` в `items/`; её задачи здесь **не перечисляются** — перечень даёт
|
|
`tasks.py list --goal <слаг>`. Очередь значима только в «Запланировано» и
|
|
обосновывается прозой рядом.
|
|
|
|
## Готово
|
|
|
|
- 2026-08-01 `ingest` — Сервис принимает доставки HAE и кладёт тела в архив.
|
|
Приём отвечает `200` до разбора, свёртку ведёт фоновый воркер: код ответа
|
|
отражает доставку, а не её понимание.
|
|
- 2026-08-02 `reindex` — `healthlog reindex` проигрывает журнал в свежую витрину
|
|
и печатает оба отпечатка. Повторный прогон ничего не меняет.
|
|
- 2026-08-02 `catalog` — Клиент видит перечень разрезов с измеренным родом
|
|
агрегации. Сверка минутного слоя с часовым разложила метрики живого корпуса на
|
|
накопительные и мгновенные, не сойдясь ни на одной.
|
|
- 2026-08-04 `parsing-and-storage` — Метрики, тренировки и записи со своими `id`
|
|
разобраны и лежат в часовых объектах. Ни одна секция живого потока не числится
|
|
неразобранной, категориальные значения несут стабильный код рядом с
|
|
переведённой строкой, первая встреча незнакомой секции наблюдаема.
|
|
|
|
Разведка формата закончена там же и записана в
|
|
[research/apple-health.md](../research/apple-health.md): правило вывода слоя,
|
|
модель идентичности и формы точки проверены на живом потоке. Возможностью
|
|
приложения она не была, поэтому строки среди достигнутых целей не занимает.
|
|
|
|
## Запланировано
|
|
|
|
Очередь держится на двух зависимостях. **`healthlog import` идёт перед чисткой
|
|
нижнего слоя:** пока импорт экспорта не написан, помечать что-либо устаревшим не
|
|
на основании чего. **MCP входит в чтение, а не идёт отдельной целью:** адаптер
|
|
собственной логики не несёт, он переводит вызовы в те же обработчики, и очередь
|
|
осталась порядком задач внутри цели.
|
|
|
|
- [[goal] Клиенты читают данные через HTTP и MCP](items/read-api.md) — Данные видны только через sqlite на хосте — ни один из трёх потребителей, включая агента-медика, ничего прочитать не может
|
|
- [[goal] Клиент узнаёт форму данных из ответа](items/self-description.md) — Метрик больше сотни и формы точек разные — клиент вынужден угадывать структуру по выборке
|
|
- [[goal] История из родного экспорта Apple лежит в хранилище](items/native-export-import.md) — Слой sample пуст: полная история и точные сэмплы лежат в zip-архиве и никуда не едут
|
|
- [[goal] Нижний слой чистится после проверенного экспорта](items/lower-layer-cleanup.md) — Нижний слой растёт на ~100 тысяч координат в сутки, а после экспорта Apple он избыточен
|
|
- [[goal] Приложение сообщает о своём состоянии](items/observability.md) — Тихо сломавшаяся автоматизация — главный эксплуатационный риск, а сейчас факт виден только в логах
|
|
|
|
## Направления
|
|
|
|
- [[goal] Исход слияния не зависит от порядка элементов на проводе](items/merge-robustness.md) — Правила слияния держатся на замерах, и каждый новый замер находит зависимость от порядка на проводе
|
|
- [[goal] Расхождение витрины с журналом не молчит](items/journal-and-rebuild.md) — Расхождение витрины с журналом сейчас молчит: reindex печатает оба отпечатка, а сравнивать их некому
|
|
- [[goal] У каждого входа есть названный предел](items/limits-and-load.md) — Предела на одну сущность нет вовсе: 63 МиБ держат блокировку 5.019 с, соседние доставки уходят в failed
|
|
- [[goal] Новая форма от источника не теряется молча](items/parsing-completeness.md) — Пять секций HAE поток ещё не приносил, а ручные секции заводятся задним числом — разбор полон ровно до следующей новой формы
|
|
|
|
## Разработка
|
|
|
|
- [[goal] Сервис доступен телефону из любой сети](items/deploy.md) — Сервис живёт на рабочей машине — телефон достаёт до него только дома, и оба контура открыты
|