docs(solution): маркетинг-баннер, шаг 7, навигатор по реализации

- Зачем:
  - на solution не было явного «что дальше» после шага 6 и навигации по паттернам.
- Что:
  - README: маркетинг-баннер + шаг 7 «Изучите готовую реализацию».
  - docs/assignment/README: навигатор по всем паттернам (ODS → DDS → DM) с файлами.
  - архивирован план онбординга в docs/archive/.
- Проверка:
  - make test (4 passed), make lint (clean).
  - grep «заглушки/SELECT 1» в README и docs/assignment/README — не найдено.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-13 11:07:52 +03:00
co-authored by Claude Opus 4.6
parent a8148c8afa
commit d3f2f42e38
3 changed files with 83 additions and 6 deletions
@@ -0,0 +1,34 @@
# План: Онбординг студента + маркетинг (v4)
> Статус: выполнен (2026-03-13)
## Контекст
Ментор опционален. Студент, клонировав main, проходит «Быстрый старт» — и застревает:
нет явного «что дальше», ссылка на задания спрятана, validate DAG не объяснён, нет маркетинга.
На main есть противоречия: docs и DAG-docstrings говорят «все реализовано»,
фактически стоят заглушки `SELECT 1;`.
## Что было сделано
### На main (10 файлов)
1. **README.md** — маркетинг-баннер, шаг 6 (только эталонные таблицы), шаг 7 → задания.
2. **docs/assignment/README.md** — полный гид студента (эталон → ТЗ → заглушки → validate).
3. **docs/assignment/analyst_spec.md** — DAG-интеграция: «таски уже подключены, DAG менять не нужно».
4. **docs/bookings_to_gp_dm.md** — пометки заглушек, адаптация секций проверки.
5. **docs/bookings_to_gp_ods.md** — пометки заглушек airplanes/seats.
6. **docs/bookings_to_gp_dds.md** — пометки заглушек dim_routes/dim_passengers/dim_airplanes.
7-10. **4 DAG docstrings** — эталон vs задания (заглушки).
### На solution (follow-up)
- README.md — маркетинг-баннер + шаг 7 (solution-specific: «Изучите готовую реализацию»).
- docs/assignment/README.md — навигационный гид по всем паттернам (ODS → DDS → DM).
- Этот план архивирован в docs/archive/.
## Верификация
- `make test` — passed на обеих ветках.
- `make lint` — clean на обеих ветках.
- Grep «заглушки/SELECT 1» в README.md и docs/assignment/README.md на solution — не найдено.
+39 -6
View File
@@ -1,17 +1,50 @@
# Учебные задания
> Это ветка `solution` — здесь всё уже реализовано.
> Используйте её как справочник, а задания выполняйте на ветке `main`.
## Навигатор по реализации
На этой ветке полностью работает пайплайн `STG → ODS → DDS → DM`.
Ниже — рекомендуемый порядок изучения: от простых паттернов к сложным.
### ODS: загрузка из STG
| Паттерн | Файл | Что посмотреть |
|---------|------|----------------|
| TRUNCATE + INSERT (snapshot-справочник) | `sql/ods/airports_load.sql` | Фильтрация по `stg_batch_id`, дедупликация через `ROW_NUMBER()` |
| SCD1 UPSERT (транзакционные данные) | `sql/ods/bookings_load.sql` | TEMP TABLE → UPDATE (`IS DISTINCT FROM`) → INSERT, HWM |
### DDS: измерения и факт
| Паттерн | Файл | Что посмотреть |
|---------|------|----------------|
| SCD1 (простое измерение) | `sql/dds/dim_airports_load.sql` | UPSERT с суррогатным ключом |
| SCD1 с обогащением | `sql/dds/dim_airplanes_load.sql` | JOIN с `ods.seats` для `total_seats` |
| SCD2 (версионирование) | `sql/dds/dim_routes_load.sql` | `hashdiff`, `valid_from`/`valid_to`, денормализация |
| Факт с point-in-time JOIN | `sql/dds/fact_flight_sales_load.sql` | SCD2 lookup, защитные LEFT JOIN |
### DM: витрины
| Паттерн | Файл | Что посмотреть |
|---------|------|----------------|
| UPSERT с HWM по датам | `sql/dm/sales_report_load.sql` | Инкрементальная агрегация фактов |
| Full Rebuild (AO Column) | `sql/dm/route_performance_load.sql` | TRUNCATE + INSERT, агрегация по SCD2 `route_bk` |
| UNION ALL (dual-role dimension) | `sql/dm/airport_traffic_load.sql` | Разворот факта: departure + arrival |
| Двухуровневая агрегация | `sql/dm/monthly_overview_load.sql` | Честный `avg_load_factor` через 2 уровня |
| Метод затронутых ключей | `sql/dm/passenger_loyalty_load.sql` | HWM по пассажирам, пересчёт полной истории |
## Техническое задание
Основной документ: **[analyst_spec.md](analyst_spec.md)** — ТЗ от аналитика
с описанием всех таблиц, маппингами, бизнес-правилами и подсказками.
## Эталон для изучения
## Описания DAG-ов
Перед началом работы изучите эталонный срез (витрина `dm.sales_report`
и вся её цепочка STG → ODS → DDS → DM):
- SQL-скрипты: `sql/stg/`, `sql/ods/`, `sql/dds/`, `sql/dm/`
- DAG-файлы: `airflow/dags/`
- [STG](../bookings_to_gp_stage.md) ·
[ODS](../bookings_to_gp_ods.md) ·
[DDS](../bookings_to_gp_dds.md) ·
[DM](../bookings_to_gp_dm.md)
- [Порядок запуска DAG-ов](../reference/dag_execution_order.md)
## Для менторов