tasks: разобраны вопросы и набран спринт 2026-08-03
- открытых вопросов не осталось: три решения владельца доведены до берущегося вида, по entity-without-parsed-label принято хранить с NULL-меткой после Read API - unseen-sections-check сжата до остатка — активная проверка появления секции; разбор невиденных секций из неё вынут, вслепую он не пишется - спринт под целью parsing-and-storage: categorical-value-dictionary и unseen-sections-check, обеим написаны критерии приёмки с оракулами
This commit is contained in:
@@ -35,7 +35,33 @@ HAE отдаёт перечислимые значения строками ло
|
||||
расколется вторично — уже на «стабильной» стороне. Простейшее решение: хранить код как есть, а
|
||||
эквивалентность старых и новых имён держать отдельной таблицей синонимов.
|
||||
|
||||
Готово, когда фазы сна из потока и из экспорта Apple сравниваются напрямую, а
|
||||
`/stats` показывает строки, для которых кода ещё нет.
|
||||
|
||||
`stateOfMind` в словаре не нуждается — он и так шлёт коды HealthKit.
|
||||
|
||||
## Критерии приёмки
|
||||
|
||||
- фаза сна из потока («БДГ») и из экспорта Apple
|
||||
(`HKCategoryValueSleepAnalysisAsleepREM`) за один период сопоставляются
|
||||
напрямую — оракул: запрос на живой базе за период с известным перекрытием,
|
||||
ноль несопоставимых строк
|
||||
- строка сохранена **дословно**, код лежит рядом отдельным полем — оракул: тест
|
||||
разбора на реальном пакете HAE из `internal/hae/testdata`
|
||||
- незнакомая строка даёт пустой код, разбор не падает, а событие попадает в
|
||||
счётчик — оракул: тест на выдуманной фазе сна плюс проверка счётчика
|
||||
- переименование кода самой Apple (`…Asleep` → `…AsleepUnspecified`, находка 43)
|
||||
не раскалывает историю — оракул: тест на паре синонимов, обе формы сходятся
|
||||
в один код
|
||||
- повторный прогон живого архива даёт то же состояние — оракул:
|
||||
`task verify:archive`
|
||||
|
||||
Критерий «`/stats` показывает строки без кода» снят при переоценке 2026-08-03:
|
||||
`/stats` ещё нет ([stats-endpoint](stats-endpoint.md)), и вешать приёмку на
|
||||
несуществующий оракул значит либо блокировать задачу, либо принять её
|
||||
непроверенной. Наблюдаемость закрывается счётчиком; показ в `/stats` — строка
|
||||
задачи наблюдаемости, а не этой.
|
||||
|
||||
## Рамки
|
||||
|
||||
Схема трогается: у категориального значения появляется поле кода, плюс таблица
|
||||
синонимов. Дословную строку не заменяем и не нормализуем — инвариант «точки
|
||||
хранятся дословно». Пересборка обязана оставаться детерминированной, оракул
|
||||
тот же `task verify:archive`.
|
||||
|
||||
Reference in New Issue
Block a user