Files
healthlog/docs/tasks/SPRINT.md
T
av bd832337df tasks: задачи спринта раздроблены до восьми гранулярных
- конверт и точки разложены на форму провода, точки за период и условный
  запрос; свёртка — на сетку, порог неполного ведра и предел размера ответа;
  тренировки и записи разъехались на два независимых маршрута
- openapi-swagger разложена на спеку, гейт против расхождения и Swagger UI —
  все три вне набора, вместе с mcp-server
- набор спринта 2026-08-04 — весь HTTP-слой чтения, восемь задач
2026-08-04 14:21:57 +03:00

2.4 KiB

Спринт

Урожай спринта поднимается tasks.py list --tag sprint:2026-08-04 — это первая порция переоценки на сессии.

Набор

  • Форма провода маршрутов чтения — Переименование поля в internal/catalog меняет публичный контракт без касания httpapi, и держит это один байтовый тест
  • Точки за период — Точки лежат в витрине и наружу не отдаются: «вес за год» достаётся только sqlite3 на хосте
  • Условный запрос по точкам — Агент опрашивает по расписанию, а каждый повтор стоит полного чтения: на каталоге это 693 мс и +153 МиБ
  • Свёртка по сетке — «Шаги за неделю по дням» — базовый запрос трекера и игры, и сегодня его нечем задать
  • Порог неполного ведра — Текущий час неполон всегда, и без порога свёртка отдаёт его наравне с полными — клиент видит провал вместо неизвестности
  • Предел размера ответа — У маршрутов чтения нет ни одного потолка: множители «метрики × окно × точки × одновременные запросы» ничем не ограничены
  • Тренировки наружу — Тренировки с маршрутами разобраны и лежат в витрине, а эндпоинтов нет — сценарий трекера не закрыт
  • Записи наружу — stateOfMind разобран и хранится, но наружу не отдаётся — а восстановить его нечем: в экспорте Apple его нет