- конверт и точки разложены на форму провода, точки за период и условный запрос; свёртка — на сетку, порог неполного ведра и предел размера ответа; тренировки и записи разъехались на два независимых маршрута - openapi-swagger разложена на спеку, гейт против расхождения и Swagger UI — все три вне набора, вместе с mcp-server - набор спринта 2026-08-04 — весь HTTP-слой чтения, восемь задач
2.4 KiB
Свёртка по сетке
- Секция: ядро
- Зачем: «Шаги за неделю по дням» — базовый запрос трекера и игры, и сегодня его нечем задать
- Теги: goal:read-api, sprint:2026-08-04
«Шаги за неделю по дням» отвечаются одним запросом ?from&to&bucket, и род
свёртки берётся измеренным, а не угаданным.
Род агрегации измерен каталогом (change 2026-08-02-katalog-i-rod-agregacii):
сверка минутного слоя с часовым разложила метрики живого корпуса на
накопительные и мгновенные, не сойдясь ни на одной. Свёртка в ответе опирается
на это измерение и только на него: род неизвестен — свёртки нет.
Инвариант, который здесь легче всего нарушить: нижний слой HAE не суммируется ни при какой сетке. Это интерполяция, а не сэмплы, и суммирование завышает втрое.
Порог неполного ведра и предел размера ответа — соседние задачи; здесь они берутся в том виде, в каком есть на момент мерджа, и не проектируются.
Критерии приёмки
- «шаги за неделю по дням» отвечаются одним запросом, и в ответе названы
фактические
bucketиaggregation— оракул: запрос к поднятому сервису на живом архиве - нижний слой HAE не суммируется ни при какой сетке — оракул: тест на накопительной метрике, у которой есть и нижний, и часовой слой
- метрика с неизвестным родом не сворачивается вовсе и отвечает отказом с названной причиной, а не значением — оракул: тест
Рамки
Схема не трогается, данные только читаются. Берётся после точек за период.