tasks: решено, чем помечать покрытие экспортом
- пометка — одна строка на диапазон (метрика + слой + период), а не провенанс на точку: вопрос диапазонный, а поле у точки стоит того объёма, который устаревание нижнего слоя и приходит экономить - провенанс на точку отвергнут по цене, а не по ненадобности — различие записано, чтобы решение пересмотрели при появлении потребителя - пометку выставляет импорт экспорта, по проверенному прогону; stateOfMind не получает её никогда — его в экспорте Apple нет
This commit is contained in:
@@ -37,9 +37,34 @@
|
|||||||
должен ничего менять;
|
должен ничего менять;
|
||||||
- `export_cda.xml` игнорируем — это клинический формат тех же данных.
|
- `export_cda.xml` игнорируем — это клинический формат тех же данных.
|
||||||
|
|
||||||
|
## Импорт выставляет пометку покрытия
|
||||||
|
|
||||||
|
Импорт — единственный, кто знает, какой период каким слоем обеспечен, поэтому
|
||||||
|
пометку ставит он, а не отдельный проход задним числом.
|
||||||
|
|
||||||
|
Форма пометки решена в [lower-layer-expiry](lower-layer-expiry.md): **одна
|
||||||
|
строка на диапазон** — `метрика + слой + период + «покрыто проверенным
|
||||||
|
экспортом»`. Провенанс на каждую точку не заводим: вопрос диапазонный, а поле у
|
||||||
|
точки стоило бы того же объёма, который устаревание нижнего слоя и приходит
|
||||||
|
экономить.
|
||||||
|
|
||||||
|
Два условия, оба из ограничителей той задачи:
|
||||||
|
|
||||||
|
- пометка ставится **по проверенному** импорту, а не по факту запуска команды.
|
||||||
|
Проверка та же, что уже названа в приёмке: непрерывность по дням и сходимость
|
||||||
|
сумм с часовым слоем HAE на пересечении периодов. Не сошлось — пометки нет,
|
||||||
|
и это не отказ импорта, а честный отказ от обещания;
|
||||||
|
- пометка **ничего не удаляет**. Она только даёт устареванию нижнего слоя
|
||||||
|
основание; само удаление включается отдельно и позже.
|
||||||
|
|
||||||
|
**`stateOfMind` пометку не получает никогда** — его в экспорте Apple нет ни
|
||||||
|
одним типом (находка 42), источник у него единственный, и устаревание к нему
|
||||||
|
неприменимо. Это надо записать явно, а не оставить следовать из отсутствия
|
||||||
|
данных.
|
||||||
|
|
||||||
Готово, когда история за несколько лет лежит в слое `sample`, повторный импорт
|
Готово, когда история за несколько лет лежит в слое `sample`, повторный импорт
|
||||||
не меняет ничего, а суммы по слою сходятся с часовым слоем HAE на пересечении
|
не меняет ничего, суммы по слою сходятся с часовым слоем HAE на пересечении
|
||||||
периодов.
|
периодов, а покрытые периоды помечены и видны без пересборки.
|
||||||
|
|
||||||
Архивы: `/home/av/MediaEverything/HealthData/apple_health/` — девять штук,
|
Архивы: `/home/av/MediaEverything/HealthData/apple_health/` — девять штук,
|
||||||
2021-12 … 2026-08. Старые версии формата годятся как регрессионный набор.
|
2021-12 … 2026-08. Старые версии формата годятся как регрессионный набор.
|
||||||
|
|||||||
@@ -17,7 +17,40 @@
|
|||||||
- пометка ≠ удаление. Удаление включается только после того, как восстановление
|
- пометка ≠ удаление. Удаление включается только после того, как восстановление
|
||||||
из экспорта отработает на живых данных хотя бы раз.
|
из экспорта отработает на живых данных хотя бы раз.
|
||||||
|
|
||||||
|
## Чем помечать: разряд на диапазон, а не провенанс на точку
|
||||||
|
|
||||||
|
Решено при постановке 2026-08-04. Пометка — **одна строка на диапазон**:
|
||||||
|
`метрика + слой + период + «покрыто проверенным экспортом»`. Не поле у точки.
|
||||||
|
|
||||||
|
Основание — соотношение цены и потребности:
|
||||||
|
|
||||||
|
- **вопрос, на который надо ответить, диапазонный**: «за этот период нижний
|
||||||
|
слой обеспечен настоящими сэмплами Apple, посекундную развёртку HAE можно
|
||||||
|
выбросить». Он не требует знать, из какой доставки приехало конкретное число;
|
||||||
|
- **цена совпадает с самой проблемой**: нижний слой растёт на ~100 тысяч
|
||||||
|
координат в сутки, и поле у точки платит тем же объёмом, который задача и
|
||||||
|
пришла экономить. Пометка на диапазон — десятки строк.
|
||||||
|
|
||||||
|
**Провенанс на точку рассмотрен и отвергнут по цене, а не по ненадобности.**
|
||||||
|
Различать эти два основания важно: отказ по ненадобности закрывает вопрос
|
||||||
|
навсегда, отказ по цене — только до появления потребителя. Появится тот, кому
|
||||||
|
нужно «покажи, из какой конкретно доставки это число», — решение
|
||||||
|
пересматривается. Сегодня такого потребителя нет: ни агент-медик, ни трекер, ни
|
||||||
|
игра его не просят ([passport.md](../../passport.md)).
|
||||||
|
|
||||||
|
Отдельно стоит помнить, что **отделить старое от нового можно и без пометок**:
|
||||||
|
состояние по определению есть `import(экспорт) + replay(доставок по
|
||||||
|
received_at)`, порядок известен, происхождение значения выводится пересборкой.
|
||||||
|
Пометка нужна ровно затем, чтобы отвечать на этот вопрос **при чтении**, не
|
||||||
|
пересчитывая.
|
||||||
|
|
||||||
|
Смежное: у сущностей (`workouts`, `stateOfMind`) провенанс уже есть — колонки
|
||||||
|
`delivery_id` и `delivery_received_at` (миграция `00007`). У часового объекта
|
||||||
|
метрики есть `first_delivery_id` (миграция `00003`), но это **первая** доставка,
|
||||||
|
а не источник каждой точки, и для этой задачи он не годится.
|
||||||
|
|
||||||
Приоритет низкий: пока история измеряется днями, экономить нечего. Задача
|
Приоритет низкий: пока история измеряется днями, экономить нечего. Задача
|
||||||
станет актуальной, когда нижний слой перевалит за несколько гигабайт.
|
станет актуальной, когда нижний слой перевалит за несколько гигабайт.
|
||||||
|
|
||||||
Зависит от импорта экспорта Apple — до него помечать нечем.
|
Зависит от импорта экспорта Apple — до него помечать нечем; выставляет пометку
|
||||||
|
[apple-export-import](apple-export-import.md).
|
||||||
|
|||||||
Reference in New Issue
Block a user