docs(todo): исправлен порядок этапов подготовки курсовой

- Зачем:
  - Этап «подготовка main» не должен идти раньше ТЗ и валидационного DAG —
    нельзя удалять рабочий пайплайн до того, как всё создано и протестировано.
- Что:
  - Этапы 2-5 переупорядочены: сначала ТЗ от аналитика, затем валидационный DAG,
    в конце — подготовка main и создание ветки solution.
  - Этапы 2 и 5 (подготовка main + solution) объединены в один финальный этап.
  - Добавлены пояснения «Делаем пока полный пайплайн работает» к каждому этапу.
- Проверка:
  - Читаемость TODO.md.
This commit is contained in:
2026-03-10 23:13:48 +03:00
parent 6655326caa
commit 21f62be01a
+19 -18
View File
@@ -37,46 +37,47 @@
(проверено 2026-03-09: `cp .env.example .env``make up``make bookings-init` (проверено 2026-03-09: `cp .env.example .env``make up``make bookings-init`
`make ddl-gp` → STG → ODS → DDS → DM — всё success) `make ddl-gp` → STG → ODS → DDS → DM — всё success)
### Этап 2. Подготовка main ### Этап 2. ТЗ от аналитика
**Инструмент:** Sonnet — удаление файлов и добавление заглушек
по списку из [assignment_design.md](docs/design/assignment_design.md).
- [ ] Оставить только эталонный срез (sales_report + цепочка)
- [ ] Убрать реализации таблиц-заданий (airplanes, seats, routes в STG/ODS;
dim_airplanes, dim_passengers, dim_routes в DDS; 4 витрины DM)
- [ ] Добавить TODO-маркеры / заглушки в DAG'ах для студенческих тасков
- [ ] Обновить `ddl_gp.sql` (убрать `\i` для таблиц-заданий)
### Этап 3. ТЗ от аналитика
**Инструмент:** Opus — нужно глубокое понимание предметной области, маппингов **Инструмент:** Opus — нужно глубокое понимание предметной области, маппингов
между слоями, SCD-паттернов и педагогического контекста. между слоями, SCD-паттернов и педагогического контекста.
> Делаем пока полный пайплайн работает — можно сверяться с реальными данными.
- [ ] Создать `docs/assignment/analyst_spec.md` - [ ] Создать `docs/assignment/analyst_spec.md`
- [ ] Для каждой таблицы-задания: имя, описание, поля, маппинг, - [ ] Для каждой таблицы-задания: имя, описание, поля, маппинг,
бизнес-правила, тип SCD, гранулярность, distribution key бизнес-правила, тип SCD, гранулярность, distribution key
- [ ] Для dim_routes (SCD2): пошаговый алгоритм текстом, формула hashdiff - [ ] Для dim_routes (SCD2): пошаговый алгоритм текстом, формула hashdiff
- [ ] Рекомендуемый порядок выполнения - [ ] Рекомендуемый порядок выполнения
### Этап 4. Валидационный DAG ### Этап 3. Валидационный DAG
**Инструмент:** Sonnet (шаблонная работа, структура в assignment_design.md) **Инструмент:** Sonnet (шаблонная работа, структура в assignment_design.md)
+ Opus для финальной вычитки. + Opus для финальной вычитки.
> Делаем и тестируем на полных данных, пока ничего не удалено.
- [ ] Создать `airflow/dags/bookings_validate.py` - [ ] Создать `airflow/dags/bookings_validate.py`
- [ ] Создать SQL-скрипты в `sql/validate/` - [ ] Создать SQL-скрипты в `sql/validate/`
- [ ] Таски по слоям: STG, ODS, DDS, DM - [ ] Таски по слоям: STG, ODS, DDS, DM
- [ ] Дружелюбные сообщения об ошибках с подсказками - [ ] Дружелюбные сообщения об ошибках с подсказками
- [ ] Протестировать на работающем стенде
### Этап 5. Ветка solution ### Этап 4. Подготовка main и ветка solution
**Инструмент:** Вручную / Sonnet — реализация уже есть в ветке **Инструмент:** Sonnet — удаление файлов и добавление заглушек
`chore/bookings-etl`, нужно собрать в ветку `solution`. по списку из [assignment_design.md](docs/design/assignment_design.md).
- [ ] Создать ветку `solution` от main (после подготовки) > Финальный этап: всё готово и протестировано, теперь раскладываем по веткам.
- [ ] Оставить только эталонный срез (sales_report + цепочка)
- [ ] Убрать реализации таблиц-заданий (airplanes, seats, routes в STG/ODS;
dim_airplanes, dim_passengers, dim_routes в DDS; 4 витрины DM)
- [ ] Добавить TODO-маркеры / заглушки в DAG'ах для студенческих тасков
- [ ] Обновить `ddl_gp.sql` (убрать `\i` для таблиц-заданий)
- [ ] Создать ветку `solution` от main
- [ ] Добавить полные реализации всех таблиц-заданий - [ ] Добавить полные реализации всех таблиц-заданий
- [ ] Проверить, что всё работает end-to-end - [ ] Проверить, что всё работает end-to-end на обеих ветках
--- ---