feat(dm): учебные задания витрин DM и даг самопроверки #174

Merged
ddmitry merged 1 commits from 159-dm-labs into main 2026-08-28 09:53:47 +03:00
Owner

Закрывает #159.

Зачем

Домашки слоя DM: менти строит витрину сам — от DDL по правилу зерна до задачи в конвейере — и получает обратную связь по каждой витрине. Резолюция #135 забрала ТЗ и даг самопроверки в этап 4.

Что

  • docs/labs/ — README и пять ТЗ в учебном порядке: разминка events_enriched_v (представление, зерно события), затем top_pages_daily, session_overview, dq_errors_daily, последней — utm_effectiveness (урок declared_*). Каждое ТЗ называет урок одной фразой, проектирует состав колонок, оставляет ключ шардирования решением менти и заканчивается постановкой витрины в dm_transform (кроме разминки — ей нечего пересобирать).
  • dags/homework_check.py — ручной даг без расписания, задача на витрину: красная, пока витрины нет или счёт не сходится; сообщение называет витрину и её ТЗ. Проверки — шесть файлов sql/dq/ с инвариантами против DDS/ODS, окно dq_errors_daily ограничено контрактным TTL источника с обеих сторон; золотых констант нет, в dq_summary даг не пишет.
  • Доки тем же PR: dm.md называет homework_check, секция «Остается нарезке» снята как выполненная; §7 и §10 мастер-спеки согласованы с лабами (зерно session_overview, источники dq_errors_daily, исключение этапа 4); dds/session.md указывает на ТЗ; в AGENTS.md — правило имён docs/labs/.

Проверка

  • make lint; make smoke 21/21, make check-clickhouse 10/10, make check-services 7/7
  • homework_check на свежем стенде: все пять задач красные, каждое сообщение называет отсутствующую витрину и её ТЗ
  • каждое ТЗ проверено черновой сборкой строго по тексту: задача зелёная, после сноса черновика — снова красная; брака ТЗ не найдено
  • в dq_summary строк от самопроверки нет (проверено по 12 run id прогонов)

Как делалось

Конвейер: Opus — ТЗ и доки, Codex — даг и приёмочный прогон; два слепых ревью (21 находка, все закрыты: 17 починено, 2 отклонено с доводами и подтверждением ревьюера, 2 закрыто решением владельца конвейера), узкие перепроверки авторами находок, финальная вычитка ai-text-lint + литературный русский.

🤖 Generated with Claude Code

Закрывает #159. ## Зачем Домашки слоя DM: менти строит витрину сам — от DDL по правилу зерна до задачи в конвейере — и получает обратную связь по каждой витрине. Резолюция #135 забрала ТЗ и даг самопроверки в этап 4. ## Что - `docs/labs/` — README и пять ТЗ в учебном порядке: разминка `events_enriched_v` (представление, зерно события), затем `top_pages_daily`, `session_overview`, `dq_errors_daily`, последней — `utm_effectiveness` (урок `declared_*`). Каждое ТЗ называет урок одной фразой, проектирует состав колонок, оставляет ключ шардирования решением менти и заканчивается постановкой витрины в `dm_transform` (кроме разминки — ей нечего пересобирать). - `dags/homework_check.py` — ручной даг без расписания, задача на витрину: красная, пока витрины нет или счёт не сходится; сообщение называет витрину и её ТЗ. Проверки — шесть файлов `sql/dq/` с инвариантами против DDS/ODS, окно `dq_errors_daily` ограничено контрактным TTL источника с обеих сторон; золотых констант нет, в `dq_summary` даг не пишет. - Доки тем же PR: `dm.md` называет `homework_check`, секция «Остается нарезке» снята как выполненная; §7 и §10 мастер-спеки согласованы с лабами (зерно `session_overview`, источники `dq_errors_daily`, исключение этапа 4); `dds/session.md` указывает на ТЗ; в AGENTS.md — правило имён `docs/labs/`. ## Проверка - [x] `make lint`; `make smoke` 21/21, `make check-clickhouse` 10/10, `make check-services` 7/7 - [x] `homework_check` на свежем стенде: все пять задач красные, каждое сообщение называет отсутствующую витрину и её ТЗ - [x] каждое ТЗ проверено черновой сборкой строго по тексту: задача зелёная, после сноса черновика — снова красная; брака ТЗ не найдено - [x] в `dq_summary` строк от самопроверки нет (проверено по 12 run id прогонов) ## Как делалось Конвейер: Opus — ТЗ и доки, Codex — даг и приёмочный прогон; два слепых ревью (21 находка, все закрыты: 17 починено, 2 отклонено с доводами и подтверждением ревьюера, 2 закрыто решением владельца конвейера), узкие перепроверки авторами находок, финальная вычитка ai-text-lint + литературный русский. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
ddmitry added 1 commit 2026-08-28 00:44:48 +03:00
- Зачем:
  - менти строит витрины DM сам, от DDL по правилу зерна до задачи в
    конвейере; стенду нужны ТЗ с образцом и обратная связь по каждой
    витрине (#159, резолюция #135).
- Что:
  - docs/labs/: README и пять ТЗ — events_enriched_v, top_pages_daily,
    session_overview, dq_errors_daily, utm_effectiveness; каждое ТЗ
    называет урок, состав колонок, форму по зерну и самопроверку.
  - dags/homework_check.py: ручной даг, задача на витрину, красная без
    витрины или при расхождении; проверки — шесть файлов sql/dq/ с
    инвариантами против DDS и ODS, без золотых констант; в dq_summary
    не пишет.
  - docs: dm.md называет homework_check и снимает «Остается нарезке»,
    §7 и §10 мастер-спеки согласованы с лабами, dds/session.md указывает
    на ТЗ, AGENTS.md пополнен правилом имен docs/labs/.
- Проверка:
  - make lint; make smoke 21/21, make check-clickhouse 10/10,
    make check-services 7/7.
  - на свежем стенде все пять задач homework_check красные и называют
    ТЗ; черновик каждой витрины по тексту ТЗ зеленит свою задачу,
    после сноса — снова красная; строк от самопроверки в dq_summary нет.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ddmitry merged commit 33aef73d0e into main 2026-08-28 09:53:47 +03:00
ddmitry deleted branch 159-dm-labs 2026-08-28 09:53:47 +03:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ddmitry/clickstream-data-platform#174