docs(handbook): добавлено описание соединений на карте

- Зачем:
  - читатель карты видит ключи переноса данных, не переходя к карточкам узлов.
- Что:
  - для 17 стрелок добавлено поле «Как соединяет», сверенное с SQL.
  - раздел выведен в карточке стрелки и пересобрана карта.
- Проверка:
  - uv run docs/handbook/architecture-map/render.py --check.
  - make lint.
  - make typecheck && make test в generator/.
This commit is contained in:
ddadmin committed 2026-09-03 04:34:25 -04:00
1 parent fddb35c8c4
commit 3fa669a920
3 files changed
+36

No files matched your search

+17
View File
@@ -453,6 +453,7 @@ edges:
streams: [events]
rhythm: непрерывно, по мере прихода сообщений
actor: Чтец `stg.hits_raw_kafka` и матвью `stg.hits_raw_mv`.
join: 'Соединения нет: сообщение кладется строкой целиком.'
links:
- label: SQL
url: https://git.dementev.space/ddmitry/clickstream-data-platform/src/branch/main/sql/ddl/40-stg-views.sql
@@ -466,6 +467,7 @@ edges:
streams: [events]
rhythm: непрерывно, по мере прихода сообщений
actor: Матвью `ods.event_mv` разбирает годные строки.
join: 'Соединения нет: матвью разбирает строку в колонки.'
links:
- label: SQL
url: https://git.dementev.space/ddmitry/clickstream-data-platform/src/branch/main/sql/ddl/30-ods-views.sql
@@ -479,6 +481,7 @@ edges:
streams: [events]
rhythm: непрерывно, по мере прихода сообщений
actor: Матвью `ods.event_errors_mv` отбирает строки, которые не прошли строгий прием.
join: 'Соединения нет: негодная строка уходит целиком вместе с классом ошибки.'
links:
- label: SQL
url: https://git.dementev.space/ddmitry/clickstream-data-platform/src/branch/main/sql/ddl/30-ods-views.sql
@@ -492,6 +495,7 @@ edges:
streams: [orders]
rhythm: пачкой, раз в модельные сутки
actor: Задача `pull_batch` дага `orders_ingest` читает `stg.orders_raw_kafka`.
join: 'Соединения нет: сообщение слепка кладется целиком, пачка помечена `_load_id`.'
links:
- label: SQL
url: https://git.dementev.space/ddmitry/clickstream-data-platform/src/branch/main/sql/stg/orders_raw_load.sql
@@ -505,6 +509,7 @@ edges:
streams: [orders]
rhythm: пачкой, раз в модельные сутки
actor: Задача `parse_batch` дага `orders_ingest` пишет годные версии заказа.
join: 'Соединения нет: строка разбирается в колонки, версия задается `snapshot_date`.'
links:
- label: SQL
url: https://git.dementev.space/ddmitry/clickstream-data-platform/src/branch/main/sql/ods/order_parse.sql
@@ -518,6 +523,7 @@ edges:
streams: [orders]
rhythm: пачкой, раз в модельные сутки
actor: Задача `parse_batch` дага `orders_ingest` пишет негодные строки той же пачки.
join: 'Соединения нет: негодная строка пачки уходит целиком.'
links:
- label: SQL
url: https://git.dementev.space/ddmitry/clickstream-data-platform/src/branch/main/sql/ods/order_parse.sql
@@ -531,6 +537,7 @@ edges:
streams: [events]
rhythm: без копии, данные читаются на месте
actor: Запрос `dds.event_v` читает данные из `ods.event_v` и переименовывает поля на языке бизнеса.
join: 'Соединения нет: представление переименовывает колонки той же строки.'
links:
- label: SQL
url: https://git.dementev.space/ddmitry/clickstream-data-platform/src/branch/main/sql/ddl/50-dds-views.sql
@@ -544,6 +551,7 @@ edges:
streams: [events]
rhythm: пачкой, при каждом прогоне `dds_transform`
actor: Задачи `session.rebuild` и `session.replace` дага `dds_transform`.
join: 'События одной `client_id` за `event_date` режутся по паузам; `session_id` - `cityHash64(client_id, min(event_time))`.'
links:
- label: SQL сборки
url: https://git.dementev.space/ddmitry/clickstream-data-platform/src/branch/main/sql/dds/session_rebuild.sql
@@ -559,6 +567,7 @@ edges:
streams: [orders]
rhythm: пачкой, при каждом прогоне `dds_transform`
actor: Задачи `order.rebuild` и `order.replace` дага `dds_transform`.
join: 'Соединения нет: из заказа берутся поля и позиции, `order_date` выводится из `created_at`.'
links:
- label: SQL сборки
url: https://git.dementev.space/ddmitry/clickstream-data-platform/src/branch/main/sql/dds/order_rebuild.sql
@@ -574,6 +583,7 @@ edges:
streams: [events]
rhythm: пачкой, при каждом прогоне `dds_transform`
actor: Задача `identity_map` дага `dds_transform` соединяет покупки с заказами.
join: 'Строки покупки и заказа соединяются по `purchase_id[1] = order_id`.'
links:
- label: SQL
url: https://git.dementev.space/ddmitry/clickstream-data-platform/src/branch/main/sql/dds/identity_map_rebuild.sql
@@ -587,6 +597,7 @@ edges:
streams: [orders]
rhythm: пачкой, при каждом прогоне `dds_transform`
actor: Задача `identity_map` дага `dds_transform` соединяет заказы с покупками.
join: 'Строки заказа и покупки соединяются по `order_id = purchase_id[1]`; берется `user_id`.'
links:
- label: SQL
url: https://git.dementev.space/ddmitry/clickstream-data-platform/src/branch/main/sql/dds/identity_map_rebuild.sql
@@ -600,6 +611,7 @@ edges:
streams: [events]
rhythm: пачкой, при каждом прогоне `dm_transform`
actor: Задача `daily_traffic` дага `dm_transform` считает посетителей по сессиям.
join: 'Соединения нет: сессии группируются по `session_date`, который становится `report_date`.'
links:
- label: SQL
url: https://git.dementev.space/ddmitry/clickstream-data-platform/src/branch/main/sql/dm/daily_traffic_rebuild.sql
@@ -613,6 +625,7 @@ edges:
streams: [events]
rhythm: пачкой, при каждом прогоне `dm_transform`
actor: Задача `daily_traffic` дага `dm_transform` считает известных пользователей по `client_id`.
join: 'GLOBAL LEFT JOIN по `client_id`; сессии без пары остаются в витрине.'
links:
- label: SQL
url: https://git.dementev.space/ddmitry/clickstream-data-platform/src/branch/main/sql/dm/daily_traffic_rebuild.sql
@@ -626,6 +639,7 @@ edges:
streams: [orders]
rhythm: пачкой, при каждом прогоне `dm_transform`
actor: Задачи `revenue_daily.rebuild` и `revenue_daily.replace` дага `dm_transform`.
join: 'Соединения таблиц нет: ARRAY JOIN раскрывает `item_sku`, `item_quantity`, `item_price`; `order_date` становится `report_date`.'
links:
- label: SQL сборки
url: https://git.dementev.space/ddmitry/clickstream-data-platform/src/branch/main/sql/dm/revenue_daily_rebuild.sql
@@ -641,6 +655,7 @@ edges:
streams: [orders]
rhythm: пачкой, при каждом прогоне `dm_transform`
actor: Даг `dm_transform` получает категорию через `dictGet` по `item_sku`; ключ словаря — `sku`.
join: 'Категория читается через `dictGet` по `item_sku`; ключ справочника - `sku`.'
links:
- label: SQL
url: https://git.dementev.space/ddmitry/clickstream-data-platform/src/branch/main/sql/dm/revenue_daily_rebuild.sql
@@ -654,6 +669,7 @@ edges:
streams: [events]
rhythm: пачкой, при каждом прогоне `dm_transform`
actor: Задачи `purchase_vs_orders.rebuild` и `purchase_vs_orders.replace` дага `dm_transform` читают покупки.
join: 'Покупки группируются по `purchase_id[1]` как `purchase_order_id`; `event_date` становится `purchase_day`, затем GLOBAL FULL OUTER JOIN `purchase_order_id = backend_order_id`.'
links:
- label: SQL сборки
url: https://git.dementev.space/ddmitry/clickstream-data-platform/src/branch/main/sql/dm/purchase_vs_orders_rebuild.sql
@@ -669,6 +685,7 @@ edges:
streams: [orders]
rhythm: пачкой, при каждом прогоне `dm_transform`
actor: Задачи `purchase_vs_orders.rebuild` и `purchase_vs_orders.replace` дага `dm_transform` читают заказы.
join: 'GLOBAL FULL OUTER JOIN: `purchase_order_id = backend_order_id` (`purchase_id[1]` и `order_id`); отсутствующая сторона получает NULL.'
links:
- label: SQL сборки
url: https://git.dementev.space/ddmitry/clickstream-data-platform/src/branch/main/sql/dm/purchase_vs_orders_rebuild.sql