docs(handoff): добавлен handoff цепочки генератора
- Зачем: - нужен обязательный handoff перед выходом из coordinator-loop. - Что: - зафиксированы коммиты, происхождение ревью и отклонения процесса. - перечислены открытые риски, ручная приёмка и следующий шаг по issue 13. - Проверка: - git diff --cached --check.
This commit is contained in:
@@ -0,0 +1,125 @@
|
||||
# Handoff: цепочка генератора 12 -> 14 -> 09 -> 10 -> 08
|
||||
|
||||
Дата: 2026-07-04.
|
||||
Жанр: одноразовый handoff по ADR-0003.
|
||||
Источник: `.scratch/generator-model-time-startup-history/coordinator-journal.md`.
|
||||
|
||||
## Статус
|
||||
|
||||
Цепочка `12 -> 14 -> 09 -> 10 -> 08` завершена через `coordinator-loop`.
|
||||
Финальный chain review закрыт `APPROVED`; правки финального review
|
||||
закоммичены в `f8b419d`.
|
||||
|
||||
Все issue текущей очереди имеют `Status: done`; в PRD фичи осталась только
|
||||
дальнейшая задача 13 (`needs-triage`).
|
||||
|
||||
## Коммиты
|
||||
|
||||
- `dd4af82` — `feat(airflow): добавлен пульт управления генератором`.
|
||||
- `200bb82` — `docs(issues): закрыта задача 12 по пульту генератора`.
|
||||
- `9d1bcc4` — `feat(generator): ускорен учебный профиль daily-wave`.
|
||||
- `0cbfe9b` — `docs(issues): закрыта задача 14 по быстрому профилю`.
|
||||
- `e2d0684` — `fix(generator): сохранена фактура визита при восстановлении`.
|
||||
- `0f435d7` — `docs(issues): закрыта задача 09 по фактуре визита`.
|
||||
- `0c80e24` — `fix(superset): заменена нечитаемая гео-карта`.
|
||||
- `de938ed` — `docs(issues): закрыта задача 10 по гео-графику`.
|
||||
- `d76c036` — `docs(course): переведены уроки на стартовую историю`.
|
||||
- `3d4e13c` — `docs(issues): закрыта задача 08 по миграции курса`.
|
||||
- `f8b419d` — `docs(generator): закрыты находки финального ревью цепочки`.
|
||||
|
||||
## Что построено
|
||||
|
||||
- `airflow/dags/generator_control_dag.py` — ручной Airflow-пульт
|
||||
`backfill/import/check`, без Docker socket, с ожиданием `etl_pipeline`.
|
||||
- `generator/src/clickstream_generator/airflow_control.py` — общая логика
|
||||
env, предпроверок чистого стенда и сверки manifest для DAG-пульта.
|
||||
- `docker-compose.yml` / `Makefile` — `make up` не автостартует live-генератор;
|
||||
live запускается явно через `make generator-continue`.
|
||||
- `generator/src/clickstream_generator/launch.py` — `daily-wave` переведён на
|
||||
`speed=60`, `tick=1`; `ci` сохранён.
|
||||
- `generator/src/clickstream_generator/runtime.py` и `state.py` — state v3
|
||||
хранит `base_click_id`, восстановление визита берёт ту же per-event фактуру.
|
||||
- `scripts/check_generated_analytics.sh` — стыковочная проверка browser/source и ODS
|
||||
device/os/geo включается в режиме `auto` после live-строк.
|
||||
- `superset/create_dashboard.py` — гео-блок заменён на `Top Countries by Events`
|
||||
(`echarts_timeseries_bar`) с tooltip, легендой и единицами.
|
||||
- `docs/course/` и `docs/TEST_PLAN.md` — учебный путь переведён с архивного
|
||||
сида на `startup-history/backfill -> Kafka -> STG -> ODS -> DDS -> DM -> Superset`.
|
||||
|
||||
## Ревью по issue
|
||||
|
||||
- Issue 12: обычный режим. Worker `medium` был запущен до уточнения уровней,
|
||||
проверка кода сначала `medium`, повторный прогон `high`. Первая проверка нашла
|
||||
отсутствие подсказки `make clean` на грязных Kafka-топиках; повторный прогон
|
||||
`APPROVED`.
|
||||
- Issue 14: обычный режим. Worker `medium`, проверка кода `high`; `APPROVED`.
|
||||
- Issue 09: гейт. Worker `high`; проверка задачи `high` и проверка кода `high`.
|
||||
Первый круг нашёл ODS-проверку device/os/geo, потерю 1 мкс в timestamp offset
|
||||
и ложнозелёный `generated-history-check`; второй круг `APPROVED`.
|
||||
- Issue 10: обычный режим. Worker `medium`, проверка кода `high`.
|
||||
Проверка нашла рассинхрон Superset export/layout, ложнозелёный тест и риск дубля
|
||||
при rename; узкие повторные прогоны закрыты, итог `APPROVED`.
|
||||
- Issue 08: обычный режим. Worker `medium`, проверка кода `high`.
|
||||
Проверка нашла старый путь отката в стандарте уроков и несогласованность урока 06
|
||||
вокруг `superset-dashboard`; повторный прогон `APPROVED`.
|
||||
|
||||
## Финальное ревью
|
||||
|
||||
Финальное ревью цепочки шло на усиленном уровне `xhigh`.
|
||||
|
||||
До обновления скилла повторные прогоны запускались свежими сессиями ревьюеров:
|
||||
`Bernoulli`, `Noether`, `Banach`, `Curie`, `Sartre`, `Bacon`.
|
||||
Это отклонение от обновлённого процесса зафиксировано как дорогой вариант.
|
||||
После обновления скилла проектные doc-находки чинил отдельный worker для правок
|
||||
`Raman` (`medium`), а повторный прогон выполнял тот же ревьюер `James` через
|
||||
`send_input`.
|
||||
|
||||
Закрытые классы находок:
|
||||
|
||||
- PRD фичи больше не `Draft` и не держит закрытые 12/09/10/14/08 в остатке.
|
||||
- Все `Status: done` issue фичи без пустых `[ ]`.
|
||||
- Superset docs/course/artifacts/code не содержат старые `World Map/world_map`
|
||||
маркеры рядом с новым `Top Countries`.
|
||||
- `docs/OPERATIONS.md`, `docs/course/PRD.md`, `docs/ARCHITECTURE.md`,
|
||||
`docs/REPO_MAP.md` и `CONTEXT.md` согласованы со startup-history-путём и
|
||||
`generator_control`.
|
||||
|
||||
## Отклонения процесса
|
||||
|
||||
- Ранние повторные прогоны ревью запускались свежими субагентами, а не продолжением
|
||||
того же ревьюера. После обновления `coordinator-loop` точечные повторные прогоны
|
||||
нужно делать через `send_input` тому же ревьюеру.
|
||||
- До обновления скилла координатор сам правил часть project docs по финальному
|
||||
ревью. После обновления project docs правил worker для правок; процессные файлы
|
||||
`.scratch/...` остались зоной координатора.
|
||||
- Визуальная приёмка Superset и живой проход Airflow UI не выполнялись в этой
|
||||
цепочке. Это не скрыто: все такие пункты вынесены в HITL/риски.
|
||||
|
||||
## Открытые риски
|
||||
|
||||
- Нужен кросс-линейный ревью-проход другой родословной по фактическим изменениям
|
||||
`c672ed0..HEAD`. Особый фокус: issue 12 Airflow-пульт, issue 09 state v3 и
|
||||
стыковочная проверка, issue 10 Superset export/layout, issue 08 учебный путь.
|
||||
- Нужна ручная HITL-приёмка:
|
||||
- Airflow UI: `generator_control` backfill/import/check на чистом стенде.
|
||||
- Superset: кадр `Top Countries by Events` целиком и кадр с tooltip.
|
||||
- Курс 00-06: проход через новый startup-history-путь.
|
||||
- Задача 13 (`backfill-top-up-from-snapshot`) остаётся `needs-triage`; после
|
||||
фикса issue 09 её можно дооформлять отдельно.
|
||||
|
||||
## Быстрые проверки, которые уже проходили
|
||||
|
||||
- `uv run --with-requirements generator/requirements.txt pytest generator/tests -q`
|
||||
— PASS на issue 12 и 09.
|
||||
- `make generator-test` — PASS на issue 14.
|
||||
- `uv run --with pytest pytest tests/test_superset_dashboard_config.py` — PASS
|
||||
на issue 10.
|
||||
- Поисковые проверки курса на старые `make data`/`kafka_load`/фиксированные
|
||||
сид-ожидания — PASS на issue 08.
|
||||
- Финальные `rg`-проверки по PRD, чекбоксам, Superset-маркерам и
|
||||
startup-history-дрифту — PASS перед `f8b419d`.
|
||||
|
||||
## Следующий шаг
|
||||
|
||||
Запустить независимый кросс-линейный ревью-проход по диапазону `c672ed0..HEAD` и
|
||||
handoff-коммиту, затем отдельно решить, дооформлять ли issue 13.
|
||||
Reference in New Issue
Block a user