- Зачем:
- подготовить цепочку 12 -> 14 -> 09 -> 10 -> 08 к передаче в coordinator-loop:
задаче 12 не хватало решений после 07 и 11, задача 14 родилась из обсуждения
учебного UX (суточная волна вживую).
- Что:
- issue 12 (DAG-пульт): решения 2026-07-04 — без Docker-доступа из Airflow,
операции как Python-код генератора в тасках, генератор без автостарта,
границы пульта, предпроверки чистоты (топики + STG), ожидание ETL перед
check; учтены находки адверсарного ревью и ревью Codex.
- issue 14 (новая): профиль daily-wave переводится на speed=60 при тике 1 с —
модельный час за настенную минуту без изменения фактуры мира.
- issue 08: мягкие зависимости от 14 и 09 (артефакт курса рождается после
них), режим ревью; PRD: задача 14 в списке и графе, 12 помечена дооформленной.
- Проверка:
- вычитка: статусы задач ready-for-agent, порядок в PRD и Blocked by
согласованы; mermaid-граф рендерится.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
91 lines
6.5 KiB
Markdown
91 lines
6.5 KiB
Markdown
Status: ready-for-agent
|
||
|
||
# Миграция учебных материалов с архивного сида на генерацию
|
||
|
||
## Parent
|
||
|
||
`.scratch/generator-model-time-startup-history/PRD.md`
|
||
|
||
## Why
|
||
|
||
После перевода штатного аналитического контура на стартовую историю генератора
|
||
часть учебных материалов всё ещё описывает `data/*.jsonl` как основной источник
|
||
данных стенда. Это нельзя править внутри issue 06: потребуется пройти уроки и
|
||
сохранить понятный учебный путь.
|
||
|
||
Развилка «отдельный урок про генератор vs скрытая инфраструктура» закрыта
|
||
(2026-07-04, `docs/course/PRD.md` §7): **отдельного урока не будет, генератор —
|
||
скрытая инфраструктура**. Устройство генератора — это разработка бэкенда и
|
||
математика, не инженерия данных; в цели курса не попадает. Уроки адаптируем,
|
||
не вводя марковские цепи и сложный Python в путь менти.
|
||
|
||
## What to build
|
||
|
||
Обновить курс и связанные материалы (тест-план) так, чтобы основной путь был:
|
||
|
||
```text
|
||
startup-history/backfill -> Kafka -> STG -> ODS -> DDS -> DM -> Superset
|
||
```
|
||
|
||
Архивный `data/*.jsonl` оставить только как временную фактуру генератора.
|
||
Генератор в уроках подаётся как готовый источник данных стенда («откуда берутся
|
||
данные»), без погружения в его устройство.
|
||
|
||
## Acceptance criteria
|
||
|
||
- [ ] `docs/course/` больше не ведёт ученика через `make data` или `kafka_load`
|
||
как основной путь получения аналитических данных.
|
||
- [ ] Уроки явно объясняют, что `data/*.jsonl` пока остаётся кладовкой значений
|
||
для генератора, а не источником аналитического контура.
|
||
- [ ] Уроки не вводят устройство генератора (марковская модель, внутренний
|
||
Python) в путь менти: генератор упоминается только как готовый источник данных.
|
||
- [ ] Тест-план согласован с новым штатным путём запуска.
|
||
- [ ] Если для уроков нужны новые скриншоты или ручная оценка dashboard, это
|
||
вынесено в HITL-приёмку.
|
||
|
||
## Notes
|
||
|
||
Реальный объём больше, чем кажется: `make data` вплетён во **все** уроки 00–05,
|
||
а не только в урок 06 (проверка 2026-07-04, `grep -rn "make data" docs/course/`):
|
||
|
||
- `docs/course/README.md` — быстрый старт через `LIMIT=50 make data`;
|
||
- `lessons/00_kafka_intro.md` — `make data` играет роль трекера, на нём построен
|
||
весь разбор партиций и offset'ов;
|
||
- `lessons/01–05` — `LIMIT=50 make data` в запуске, «полном сбросе» и таблицах
|
||
проверок;
|
||
- `docs/TEST_PLAN.md` — сценарии на старом пути.
|
||
|
||
Тонкое место — урок 00: там ручная заливка используется как учебный приём
|
||
(наглядно видно сообщения в топике). Решить при миграции, чем её заменить, не
|
||
потеряв наглядность; критерий приёмки запрещает `make data` как **основной путь
|
||
аналитики**, а не как локальный демонстрационный приём внутри урока.
|
||
|
||
Схема потока в `docs/course/PRD.md` §1 уже обновлена (поправка 2026-07-04) — PRD
|
||
дополнительно править не нужно.
|
||
|
||
Демо-материалов в скоупе нет: демо-употребление стенда устарело (демо выросло в
|
||
отдельный проект), шпаргалки удалены из репозитория 2026-07-04 (см. поправку в
|
||
шапке `docs/course/PRD.md`).
|
||
|
||
Рекомендуемый режим ревью по coordinator-loop: обычный (документы и уроки, кода
|
||
генератора и state задача не трогает); человеческая приёмка — проход по урокам
|
||
через пульт (HITL).
|
||
|
||
## Blocked by
|
||
|
||
- Жёстких блокеров нет: штатный путь (`make generated-history-analytics`) уже
|
||
существует, уроки можно вести через него.
|
||
- Мягкая зависимость от
|
||
`07-startup-history-portable-artifact-and-usage-docs.md`: runbook из issue 07
|
||
изменит команды запуска и восстановления стенда, а уроки будут на него
|
||
ссылаться. Делать эту задачу после него, иначе уроки придётся править дважды.
|
||
- Мягкая зависимость от `12-generator-control-dag.md` (решение 2026-07-04):
|
||
человеческая приёмка миграции — это проход по урокам 00–05, и вести её удобнее
|
||
через DAG-пульт, а не через консоль. Поэтому эта задача идёт последней в
|
||
очереди — после 12. Порядок всей очереди — в PRD, раздел «Задачи».
|
||
- Мягкая зависимость от `14-fast-teaching-profile.md` и
|
||
`09-seam-browser-fixture-not-preserved.md` (дополнено 2026-07-04): обе меняют
|
||
мир — 14 переводит профиль `daily-wave` на быстрый темп, 09 меняет схему
|
||
state. Артефакт стартовой истории для уроков должен родиться **после** них,
|
||
иначе он протухнет по антисмешиванию и проход по урокам придётся повторять.
|