docs(dds): убраны повторы объяснений в комментариях заказа

Зачем:
- Полный разбор урока про идемпотентность стоял дважды, предупреждение про
  окно K — трижды; внимание менти конечно, и каждый пересказ списывается
  с этого счёта.

Что:
- Докстринг dds_transform сокращён до одной фразы с указателями: полный разбор
  остался в шапке DDL, механика подмены — в order_replace.sql.
- Комментарий про ORDER_WINDOW_DAYS в даге сведён к указателю на compose,
  где число объявлено и где записан риск расхождения.
- Прорежен повтор одного риторического приёма «это не X» — оставлен там,
  где различие и есть суть.

Проверка:
- make lint, make config-test
- Прогон dds_transform зелёный, слой сходится с ods.order_v: 1917 заказов,
  8 дней.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
ddadminandClaude Opus 5 committed 2026-08-26 05:32:03 -04:00
1 parent 1e8b83ffbb
commit 535b03783a
5 files changed
+15 -24

No files matched your search

+7 -16
View File
@@ -8,17 +8,10 @@
дневного конвейера, с кнопки менти и после падения
(docs/architecture/etl.md, «Объём прогона»).
Идемпотентность здесь устроена не так, как в приёме заказов, и в этом весь
урок сущности. Приём гасит повтор колонкой версии: ReplacingMergeTree
оставляет позднюю строку. Трансформация версий не знает — она собирает день
заново в таблицу-двойник и атомарно подменяет им партицию цели. Поэтому
повтор прогона не меняет делового содержимого слоя, а строки пересобранных
дней получают новый _load_id: видно, каким запуском собран каждый день.
Замена партиции идёт по локальным таблицам с ON CLUSTER: по Distributed
операции с партициями отвечают кодом 48 (docs/architecture/storage.md, «Что
проверено»). Форма двойника и цена ошибки в ключе шардирования разобраны в
sql/ddl/45-dds-tables.sql.
Повтор прогона гасит не колонка версии, а замена партиции целиком: день
собирается в таблицу-двойник и подменяет собой партицию цели. Почему слой
устроен так — sql/ddl/45-dds-tables.sql; механика самой подмены —
sql/dds/order_replace.sql.
"""
from __future__ import annotations
@@ -38,11 +31,9 @@ START_DATE = datetime.datetime(2026, 1, 1, tzinfo=datetime.UTC)
SQL_ROOT = Path("/opt/airflow/sql")
CLICKHOUSE_CONNECTION = "clickhouse_default"
# Окно изменяемости заказа, модельные дни. Число мира, а не настройка стенда:
# владелец — generator/world.py (ORDER_WINDOW_DAYS), который этим окном
# собирает слепок. Здесь оно читается, чтобы хранилище знало, какие дни ещё
# могут измениться. Разойдутся два объявления — пересборка промахнётся по краю
# окна, поэтому оба названы в compose.yaml рядом и с этой оговоркой.
# Окно изменяемости заказа, модельные дни: по нему трансформация решает, какие
# дни ещё могут измениться. Число принадлежит миру, владелец — генератор;
# почему у стенда лежит копия и чем она рискует — compose.yaml.
ORDER_WINDOW_DAYS = int(os.environ["ORDER_WINDOW_DAYS"])