# Точки за период - **Секция:** ядро - **Зачем:** Точки лежат в витрине и наружу не отдаются: «вес за год» достаётся только sqlite3 на хосте - **Теги:** goal:read-api, sprint:2026-08-04 Потребитель получает значения метрики за период одним запросом `?from&to`, и из конверта видно, что именно ему отдали: слой, род свёртки и границу окна, в котором род измерен. Форм запроса ровно две, и это один маршрут с необязательным параметром: здесь только первая — все значения за период (вес, лекарства, симптомы). Разбивка — соседняя задача. **Клиент обязан видеть границы окна измерения.** Род метрики измерен по 48 самым свежим **общим** часам, а не по последним 48 часам календаря: выключенная минутная автоматизация HAE останавливает пополнение множества общих часов, и окно замирает, продолжая объявлять род. Единственный след — `last_hour`; конверт обязан его нести. Форма конверта наследует решение задачи [о форме провода](read-api-wire-format.md), а не принимает его заново. ## Критерии приёмки - «вес за год» отвечается одним запросом без доступа к файлу базы — оракул: запрос к поднятому сервису на живом архиве - в ответе всегда видны `layer`, `aggregation` и `last_hour` — оракул: тест на форме ответа - метрика, у которой род не измерен, отдаётся без свёртки и говорит об этом, а не молчит и не досчитывает — оракул: тест на метрике с неизвестным родом ## Рамки Схема не трогается, данные только читаются, сервис перезапускается. Берётся после формы провода. Против `./data` — только `task up` / `task run`.