- Зачем:
- follow-up задачи после ревью 2026-06-14 лежали без триажа; решения по
артефакту, громкому отказу и интерфейсу приняты 2026-07-04 и должны
попасть в задачи до передачи исполнителю.
- Что:
- задачи 07 (миграция курса) и 08 (артефакт) поменяны местами — номера
отражают порядок; ссылки обновлены.
- 07 (артефакт + runbook) дооформлен: импорт строго через Kafka (напрямую
в ClickHouse не пишет), громкий отказ при несовместимом state с правкой
спеки, граница runbook «использование, не устройство»; ready-for-agent.
- 08 дооформлен: устройство генератора вне пути менти, реальный объём
(make data во всех уроках 00-05), демо вне скоупа; ready-for-agent.
- новые задачи: 11 глаголы/длительность/профили (после 07, до 12),
12 Airflow-DAG как пульт (приоритет поднят), 13 доливка (после 09).
- задачи 01-06 переведены в done (стояли ошибочные ready-for-human);
PRD фичи дополнен списком задач 7-13 с порядком и зависимостями.
- Проверка:
- head -1 .scratch/generator-model-time-startup-history/issues/*.md;
grep по старым именам файлов ничего не находит вне handoff.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
9.7 KiB
Status: done
Стартовая история как источник аналитики
Parent
.scratch/generator-model-time-startup-history/PRD.md
What to build
Перевести штатный путь стенда на стартовую историю как источник аналитики. Чистый стенд должен получать данные из генерации: стартовая история загружается, STG→ODS→DDS→DM строится на ней, а Superset работает с этими витринами. Архивный статический сид остаётся только временной кладовкой фактуры для генератора, а не источником аналитического контура.
Срез не требует финальной ручной оценки красоты дашбордов, но должен дать техническое доказательство: витрины и датасеты не пустые, контрольные числа берутся из генерации.
Границы среза: штатный путь стенда и документы запуска. Переписывание уроков, новые панели и улучшение формы дашбордов остаются follow-up, если по ходу не окажутся маленькой обязательной правкой для запуска.
Acceptance criteria
- Штатная команда запуска чистого стенда создаёт или загружает стартовую историю и прогоняет её до DM-витрин.
kafka_load_dagили заменяющий его путь больше не использует архивныйdata/*.jsonlкак источник аналитики.- ClickHouse-проверки из задачи 5 доступны как повторяемая команда для координатора или CI.
- Основные DM-витрины, на которых стоят дашборды, непустые и показывают данные генерации.
- Superset-датасеты и дашборды технически открываются на данных генерации; ручная оценка формы графиков остаётся финальной HITL-приёмкой.
README.md,docs/OPERATIONS.mdиgenerator/README.mdбольше не описывают архивный сид как основной источник аналитики.- Если уроки или дашборды требуют нетривиальной переделки, создан follow-up issue вместо расширения этой задачи.
- Если учебные материалы ещё описывают архивный сид как основной источник, создан отдельный follow-up на миграцию уроков по ADR-0006.
- Описан повторный чистый прогон: какие данные очищаются и какие команды выполняются, чтобы координатор мог надёжно перепроверить результат.
Blocked by
.scratch/generator-model-time-startup-history/issues/05-startup-history-backfill-to-clickhouse.md- Review gate из
PRD.md: распределения и два пути генерации после задачи 5
Фактический прогон worker-а
Дата проверки: 2026-06-14.
Штатная команда:
make generated-history-analytics
Команда выполняет чистый прогон: docker compose down -v --remove-orphans,
запуск ClickHouse и Kafka, DDL, GEN_RUN_MODE=backfill, batch
STG -> ODS -> DDS -> DM, инициализацию Superset и итоговую проверку
make generated-history-check.
Быстрая команда issue 06 проверяет путь backfill -> DM -> Superset. Стык
backfill/live, отсутствие дублей на границе и однородность визитов через
T_end проверены в issue 05 и не входят в быстрый штатный check issue 06.
Быстрый проверочный профиль по умолчанию:
GEN_SEED=4242GEN_MODEL_T0=2026-01-01T00:00:00+00:00GEN_MODEL_T_END=2026-01-01T06:00:00+00:00GEN_MODEL_TIMEZONE=UTCGEN_MODEL_TIME_SPEED=1GEN_TICK_SECONDS=60GEN_LAMBDA_BASE_PER_MIN=60GEN_JITTER_PCT=0GEN_MIN_EVENTS_PER_TICK=1GEN_MAX_EVENTS_PER_TICK=1000
Суточный профиль остаётся доступен явно:
GEN_MODEL_T_END=2026-01-02T00:00:00+00:00 make generated-history-analytics
Backfill завершился:
events=16054visits=1516users=445
Batch STG -> ODS -> DDS -> DM:
- STG, суммарно по 4 потокам:
64216 ods.browser_event=16054ods.location_event=16054ods.device_by_click=1516ods.geo_by_click=1516dds.event=16054dds.click=1516dds.event_without_click=0dm.v_events_enrichedвdm.dq_summary:16054
Повторная команда проверки:
make generated-history-check
Результат ClickHouse:
events=16054visits=1516users=445min_event_ts=2026-01-01 00:00:00.000000max_event_ts=2026-01-01 05:59:59.353407digest=B7E183DD1835E6593CC4B33C7F5B2817
Возвраты:
users=445returning_users=351returning_share=0.7887640449438202max_visits_per_user=8
Форма длины визита:
visits=1516short_visit_share=0.17678100263852242median_events_per_visit=8avg_events_per_visit=10.589709762532982capped_visit_share=0.06398416886543536median_duration_sec=204p95_duration_sec=835max_events_per_visit=30
Ordered funnel:
home=1387products=849cart=511payment=332confirmation=182monotonic_ok=1confirmation_share=0.13121845710165825
Contains funnel:
home=1387products=1254cart=880payment=568confirmation=324monotonic_ok=1confirmation_share=0.2335976928622927
Основные DM-витрины:
dm.v_events_enriched=16054dm.v_daily_traffic=797dm.v_top_pages_daily=6dm.v_utm_effectiveness=33dm.v_session_overview=1516dm.dq_summary=20
Superset technical check:
superset_datasets=6superset_dashboards=1superset_dashboard_charts=10dashboard_url=http://localhost:8088/superset/dashboard/ecommerce-analytics/login_api_status=200dashboard_api_status=200dashboard_title=🛒 E-commerce Analytics Dashboard- зарегистрированная Superset database
clickhouse_dwhчитаетdm.v_events_enrichedчерез SQLAlchemy engine:superset_clickhouse_events=16054.
Проверки:
bash -n scripts/run_generated_history_analytics.sh— ok.bash -n scripts/check_generated_analytics.sh— ok.make generated-history-analytics— ok.make generated-history-check— ok.make generator-test— 134 passed.
Документы запуска обновлены:
README.mddocs/OPERATIONS.mdgenerator/README.mddocs/REPO_MAP.mddocs/SUPERSET_DASHBOARD.md
Follow-up:
.scratch/generator-model-time-startup-history/issues/08-migrate-course-from-archive-seed.md— миграция учебных материалов с архивного сида на генерацию.
Риски и что не проверено
- Ручная оценка формы dashboard глазами не выполнялась: это финальная HITL-приёмка.
- Суточный backfill не прогонялся до конца в этом срезе: он доступен через env, но для координатора выбран быстрый 6-часовой профиль.
kafka_load_dag.pyфизически оставлен как архивный ручной путь; штатные документы больше не ведут через него как основной источник аналитики.scripts/check_generated_analytics.shрассчитан на штатный UTC-профиль (GEN_MODEL_T0/T_ENDс+00:00). Для произвольного timezone offset в этих переменных нужна отдельная нормализация границ.- Проверка
no_2022_rowsдоказывает отсутствие архивного сида внутри быстрого чистого модельного диапазона. Она не доказывает отсутствие старых строк на грязном стенде вне этого диапазона; штатная команда закрывает это черезdocker compose down -v.
Review gate
- Саморевью worker-а нашло слабые доказательства по проверкам issue 05 и Superset: добавлены возвраты, форма длины визита, ordered/contains funnel, Superset login API, dashboard API и чтение ClickHouse через Superset database.
- Независимый reviewer gate:
gate pass, блокирующих находок нет. - Minor-находка reviewer-а по старой подсказке
make dataвscripts/run_batch.shисправлена до коммита. - Проверки после исправлений:
make generated-history-check— ok,bash -n scripts/*.sh— ok.