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. Повторный прогон на первом слепке сохранил отпечаток делового содержимого.
Ветка перенесена поверх 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` дважды завершился успешно.
- Зачем:
- ярлык 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>
- Зачем:
- описание вело нового читателя через историю исправления вместо действующего
контракта слоёв.
- Что:
- прямо описаны версия заказа, границы пакетного приёма и расчёт окна DDS.
- ответственность ODS, DDS и конвейера разделена без ссылок на прежние
ошибки как на основной довод.
- исторический вывод исследования помечен до устаревшего абзаца, а ссылки
ведут к отдельным решениям и контрактам.
- Проверка:
- make lint.
- make config-test.
ddmitry
merged commit cdd44c469f into main2026-08-26 18:50:39 +03:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Closes #165
Что
ods.order_repпереведена наReplacingMergeTree(snapshot_date): выживает строка позднейшего слепка, и ярлык даты стал правдивым.order_scope.sqlчитает окно из строк последнего слепка;ORDER_WINDOW_DAYS, параметрwindow_daysи копия K в Compose удалены.Приёмка после переноса на 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как колонку версии.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дважды завершился успешно.- Зачем: - ярлык 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>- Зачем: - описание вело нового читателя через историю исправления вместо действующего контракта слоёв. - Что: - прямо описаны версия заказа, границы пакетного приёма и расчёт окна DDS. - ответственность ODS, DDS и конвейера разделена без ссылок на прежние ошибки как на основной довод. - исторический вывод исследования помечен до устаревшего абзаца, а ссылки ведут к отдельным решениям и контрактам. - Проверка: - make lint. - make config-test.