docs(course): каркас курса и переобвязка уроков 0–6 на путь import (#21)
Зачем: после редизайна пути менти курс ссылался на старый путь generated-history-analytics/backfill и не проходился по новому стенду. Что: в README курса — единый блок подготовки и канонического сброса (make clean -> make up + ddl_init/world_init -> make superset-init), таблица уроков дополнена лабами 07–08 («в работе»); LESSON_STANDARD и уроки 0–6 ссылаются на канонический блок; урок 1 переведён на дозаливку через world_next_day (кнопкой-анонсом, цена в минутах названа); урок 4 — лесенка DAG-ов; урок 5 — словарь «база import / живой поток»; урок 6 обязателен; цифры старого мира помечены маркером «сверить-на-стенде». Проверка: grep по generated-history-analytics/backfill в docs/course/ пуст; правки только в docs/course/; git diff --check чистый. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -2,6 +2,8 @@
|
||||
|
||||
> Дата: 2026-06-03 (аудит путей выполнен; середина расщеплена —
|
||||
> один паттерн на урок, всего 7 уроков, см. §1–2).
|
||||
> Поправка 2026-07-23: урок 6 стал обязательным; после него добавлены обязательные
|
||||
> лабы 07–08 про следующий день и живое продолжение.
|
||||
> Назначение: высокоуровневый маршрут менти по курсу — карта уроков, порядок,
|
||||
> результаты аудита эталонных путей. Рамка курса (зачем/что/скоуп) — в `PRD.md`;
|
||||
> как устроен отдельный урок — в `LESSON_STANDARD.md`.
|
||||
@@ -14,8 +16,9 @@
|
||||
## 1. Маршрут
|
||||
|
||||
Порядок линейный — уроки 1→4 повторяют сам пайплайн (STG → ODS → DDS → оркестрация),
|
||||
а урок 0 — разминка перед ним. Мониторинг (5) и Superset (6) более самостоятельны и
|
||||
работают как надстройки поверх готовых данных.
|
||||
а урок 0 — разминка перед ним. Мониторинг (5) и Superset (6) работают как надстройки
|
||||
поверх готовых данных. Лабы 07–08 затем растят импортированный мир: сначала
|
||||
детерминированным следующим днём, потом живым продолжением.
|
||||
|
||||
Принцип нарезки — **один прод-паттерн на урок** (`LESSON_STANDARD` §2). Поэтому
|
||||
середина пайплайна разнесена: типизация+DQ (ODS) и сборка сущностей (DDS) — разные
|
||||
@@ -36,7 +39,9 @@ Kafka из роадмапа — оно даёт словарь терминов.
|
||||
| 3 | ODS → DDS: сборка сущностей | `sql/dds/30_ods_to_dds.sql` + DDL `sql/ddl/dds/30_dds.sql` (argMax, UNION, сироты) | обязательный | руки |
|
||||
| 4 | Оркестрация в Airflow | `airflow/dags/etl_pipeline_dag.py` (зависимости, гейты, остановка при нарушениях) | обязательный | руки |
|
||||
| 5 | Мониторинг | Prometheus + Grafana + экспортёры | обязательный | наблюдение |
|
||||
| 6 | BI-витрина | Superset поверх ClickHouse | опциональный | руки |
|
||||
| 6 | BI-витрина | Superset поверх ClickHouse | обязательный | руки |
|
||||
| 7 | Лаба: следующий день | `airflow/dags/world_next_day_dag.py` | в работе, обязательный | руки |
|
||||
| 8 | Лаба: живое продолжение | `make generator-continue` и `etl_pipeline` | в работе, обязательный | руки |
|
||||
|
||||
Урок 0 — обязательная разминка (без правок кода, только наблюдение); уроки 1–4 —
|
||||
с управляемыми правками; урок 5 ближе к наблюдению (глубину уточняем, см.
|
||||
@@ -64,6 +69,7 @@ Kafka из роадмапа — оно даёт словарь терминов.
|
||||
| 3 | ODS→DDS (+ демоут DM) | `sql/dds/30_ods_to_dds.sql` + DDL `sql/ddl/dds/30_dds.sql`; DM `sql/dm/40_dds_to_dm.sql` + `sql/ddl/dm/40_dm.sql` | **точечно править** |
|
||||
| 4 | Airflow DAG | `airflow/dags/etl_pipeline_dag.py` | **точечно править** |
|
||||
| 5 | Мониторинг | `configs/*`, экспортёры | **годно как есть** (для режима наблюдения) |
|
||||
| 7 | Следующий день | `airflow/dags/world_next_day_dag.py` | **точечно править** |
|
||||
|
||||
> Карты путей раздела 2 включают и DDL целевых таблиц (`sql/ddl/{ods,dds}/*`), а не
|
||||
> только батч-трансформации: без формы целевых таблиц слой читается неполно.
|
||||
|
||||
Reference in New Issue
Block a user