feat(etl): добавлен дневной конвейер трансформаций

Зачем:
- Один запуск должен одинаково работать из жизненного цикла, вручную после разгона и повторно после отказа.

Что:
- Добавлена последовательная сцепка DDS и DM с ожиданием каждого слоя.
- DDS дожидается смещений Kafka и очереди доставки ClickHouse за общий срок.
- ETL встроен в создание мира и живой день; документация приведена к новому графу.

Проверка:
- make config-test; make lint.
- make smoke: 21/21; make check-clickhouse: 10/10; make check-services: 7/7.
- make rebuild-storage, живой и пакетный дни, искусственный отказ и ручное восстановление ETL.
This commit is contained in:
ddadmin committed 2026-08-27 02:43:29 +03:00
1 parent fb00bbe4c3
commit 12a5c109b2
10 files changed
+359 -43

No files matched your search

+11 -4
View File
@@ -1,9 +1,10 @@
"""Создание и пересоздание прикладного мира.
Compose поднимает службы, а этот граф создаёт всё прикладное поверх них:
топики, схему ClickHouse, данные стартовых дней и позицию модельного времени.
`world_initialize` безопасен для обычного `make up`; `world_recreate` — явная
операция обслуживания, которая сначала объявляет прежний мир недействительным.
топики, схему ClickHouse, данные стартовых дней, позицию модельного времени и
готовые слои. `world_initialize` безопасен для обычного `make up`;
`world_recreate` — явная операция обслуживания, которая сначала объявляет
прежний мир недействительным.
Контракт состояний и доводы — ADR 0013 и спека жизненного цикла мира.
"""
@@ -262,9 +263,15 @@ def world_initialize():
poke_interval=10,
)
position = remember_starting_position()
etl = TriggerDagRunOperator(
task_id="trigger_etl_pipeline",
trigger_dag_id="etl_pipeline",
wait_for_completion=True,
poke_interval=10,
)
route >> [ready, topics]
chain(topics, *ddl_tasks, image, events, arrived, snapshots, orders, position)
chain(topics, *ddl_tasks, image, events, arrived, snapshots, orders, position, etl)
@dag(