feat(ods): версией заказа стала дата слепка, окно DDS — из данных #167

Merged
ddmitry merged 2 commits from 165-ods-order-version-snapshot-date into main 2026-08-26 18:50:39 +03:00
Owner

Closes #165

Что

  • ods.order_rep переведена на ReplacingMergeTree(snapshot_date): выживает строка позднейшего слепка, и ярлык даты стал правдивым.
  • order_scope.sql читает окно из строк последнего слепка; ORDER_WINDOW_DAYS, параметр window_days и копия K в Compose удалены.
  • Документация описывает действующий контракт от лица нового читателя: отдельно названы границы приёма, роль ODS и расчёт окна DDS. История выбора оставлена в ADR, устаревший вывод исследования помечен заранее.

Приёмка после переноса на main

  • make lint, make config-test — зелёные.
  • make rebuild-storage, затем make smoke (21/21), make check-clickhouse (10/10), make check-services (7/7) — зелёные.
  • На обеих нодах ods.order_rep использует snapshot_date как колонку версии.
  • После второго слепка: 3356 физических версий, 1917 актуальных заказов; расхождений snapshot_date с последним слепком заказа — 0.
  • ods.order_v построчно совпало с эталоном argMax(updated_at) из сырья по всем деловым полям: расхождений 0.
  • После второго слепка объём dds_transform — 2026-06-02…2026-06-08. Повторный прогон на первом слепке сохранил отпечаток делового содержимого.

Слияние с #152

Ветка перенесена поверх main после PR #166. В трёх конфликтах сохранены обе стороны: расчёт сессий через позицию мира из #152 и окно заказов из данных по #165. Итоговый объединённый dds_transform дважды завершился успешно.

Closes #165 ## Что - `ods.order_rep` переведена на `ReplacingMergeTree(snapshot_date)`: выживает строка позднейшего слепка, и ярлык даты стал правдивым. - `order_scope.sql` читает окно из строк последнего слепка; `ORDER_WINDOW_DAYS`, параметр `window_days` и копия K в Compose удалены. - Документация описывает действующий контракт от лица нового читателя: отдельно названы границы приёма, роль ODS и расчёт окна DDS. История выбора оставлена в ADR, устаревший вывод исследования помечен заранее. ## Приёмка после переноса на main - `make lint`, `make config-test` — зелёные. - `make rebuild-storage`, затем `make smoke` (21/21), `make check-clickhouse` (10/10), `make check-services` (7/7) — зелёные. - На обеих нодах `ods.order_rep` использует `snapshot_date` как колонку версии. - После второго слепка: 3356 физических версий, 1917 актуальных заказов; расхождений `snapshot_date` с последним слепком заказа — 0. - `ods.order_v` построчно совпало с эталоном `argMax(updated_at)` из сырья по всем деловым полям: расхождений 0. - После второго слепка объём `dds_transform` — `2026-06-02…2026-06-08`. Повторный прогон на первом слепке сохранил отпечаток делового содержимого. ## Слияние с #152 Ветка перенесена поверх `main` после PR #166. В трёх конфликтах сохранены обе стороны: расчёт сессий через позицию мира из #152 и окно заказов из данных по #165. Итоговый объединённый `dds_transform` дважды завершился успешно.
ddmitry added 1 commit 2026-08-26 17:45:50 +03:00
- Зачем:
  - ярлык snapshot_date выжившей строки доставался жребием, а объём
    пересборки DDS держался на константе окна с двумя несверяемыми копиями
    (ADR 0014, развилка #163).
- Что:
  - ods.order_rep переведена на ReplacingMergeTree(snapshot_date): выживает
    строка позднейшего слепка, ярлык стал правдивым.
  - order_scope.sql выводит окно из дней последнего слепка; ORDER_WINDOW_DAYS
    и параметр window_days сняты со стенда, мёртвая защита краем источника
    убрана.
  - документы и комментарии SQL приведены к ADR 0014: роль ODS, условие
    «одна дата — один слепок», объём прогона и слепые пятна конвейера.
- Проверка:
  - make lint; make rebuild-storage, затем make smoke, make check-clickhouse,
    make check-services — зелёные.
  - после двух слепков snapshot_date всех 1917 строк ods.order_v равен
    последнему слепку заказа, расхождений ноль; деловые поля построчно
    совпали с эталоном argMax по updated_at из сырья.
  - dds_transform без K: первый прогон 06-01…06-07, после нового дня мира
    06-02…06-08, повтор прогона содержимого не изменил.

Closes #165

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
ddmitry added 1 commit 2026-08-26 18:47:50 +03:00
- Зачем:
  - описание вело нового читателя через историю исправления вместо действующего
    контракта слоёв.
- Что:
  - прямо описаны версия заказа, границы пакетного приёма и расчёт окна DDS.
  - ответственность ODS, DDS и конвейера разделена без ссылок на прежние
    ошибки как на основной довод.
  - исторический вывод исследования помечен до устаревшего абзаца, а ссылки
    ведут к отдельным решениям и контрактам.
- Проверка:
  - make lint.
  - make config-test.
ddmitry merged commit cdd44c469f into main 2026-08-26 18:50:39 +03:00
ddmitry deleted branch 165-ods-order-version-snapshot-date 2026-08-26 18:50:40 +03:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ddmitry/clickstream-data-platform#167