diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index 63a4c91..eb079c9 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -71,7 +71,7 @@ flowchart LR В учебном стенде предусмотрены два пути загрузки: -- `startup-history`: DAG `generator_control` создаёт или импортирует историю, запускает ETL и проверяет витрины; +- `startup-history`: DAG `generator_control` создаёт или импортирует историю, добавляет следующий модельный день, запускает ETL и проверяет витрины; - `live`: генератор запускается явно через `make generator-continue`, когда нужна непрерывная подача новых событий. ### Слои и их назначение @@ -637,7 +637,7 @@ INSERT INTO dm.daily_traffic SELECT * FROM dm.v_daily_traffic; ```python # airflow/dags/ddl_init_dag.py — создание баз/таблиц -# airflow/dags/generator_control_dag.py — backfill/import/check стартовой истории +# airflow/dags/generator_control_dag.py — backfill/import/next-day/check стартовой истории # airflow/dags/etl_pipeline_dag.py — основной ETL (STG→ODS→DDS→DM) # airflow/dags/kafka_load_dag.py — архивный ручной путь из JSONL, не основной контур @@ -657,6 +657,7 @@ INSERT INTO dm.daily_traffic SELECT * FROM dm.v_daily_traffic; **DAG `generator_control`**: - `backfill`: создаёт стартовую историю через генератор - `import`: импортирует портативный артефакт стартовой истории +- `next-day`: пакетно добавляет следующий модельный день от текущего слепка мира - `check`: сверяет ClickHouse с manifest стартовой истории - После `backfill` и `import` запускает `etl_pipeline` с `full_refresh` diff --git a/docs/REPO_MAP.md b/docs/REPO_MAP.md index b5d1c43..faa0254 100644 --- a/docs/REPO_MAP.md +++ b/docs/REPO_MAP.md @@ -7,7 +7,7 @@ ### Airflow (ручной и учебный путь запуска) - `airflow/dags/ddl_init_dag.py` — инициализация схемы ClickHouse -- `airflow/dags/generator_control_dag.py` — Airflow-пульт стартовой истории: backfill/import/check +- `airflow/dags/generator_control_dag.py` — Airflow-пульт стартовой истории: backfill/import/next-day/check - `airflow/dags/kafka_load_dag.py` — архивная загрузка в Kafka из JSONL; не основной источник аналитики - `airflow/dags/etl_pipeline_dag.py` — ETL процесс STG -> ODS -> DDS -> DM - `airflow/dags/utils/kafka_helpers.py` — helper-функции для Kafka @@ -15,6 +15,12 @@ - `airflow/dags/utils/airflow_params.py` — разбор и валидация параметров DAG - `airflow/requirements.txt` — зависимости Airflow/ClickHouse plugin +### Generator + +- `generator/src/clickstream_generator/` — исходники генератора кликстрима (модельное время, состояние мира, запись в Kafka) +- `generator/tests/` — тесты генератора +- `generator/Dockerfile` — образ generator-service + ### SQL DDL (форма таблиц): @@ -46,6 +52,13 @@ Shell-скрипты `scripts/*` и Makefile-обёртки дают повто - `scripts/run_batch.sh` — batch-процесс - `scripts/run_generated_history_analytics.sh` — чистый прогон стартовой истории до DM и Superset - `scripts/check_generated_analytics.sh` — проверка DM-витрин и Superset metadata на данных генерации +- `scripts/run_generator.sh` — запуск генератора через понятные глаголы (backfill/continue/reset) поверх старых env-переменных +- `scripts/assert_stand_clean.sh` — проверка, что новый мир генератора не смешается со старым +- `scripts/export_startup_history_artifact.sh` — экспорт стартовой истории в портативный JSON-артефакт +- `scripts/import_startup_history_artifact.sh` — импорт портативного артефакта стартовой истории в Kafka +- `scripts/check_startup_history_manifest.sh` — сверка DM-витрины ClickHouse с manifest портативной стартовой истории +- `scripts/check_generated_history_chain.sh` — проверка завершённых стыков между порциями модельной истории +- `scripts/run_generated_history_runtime_check.sh` — runtime-проверка, что daily-wave доходит до manifest/check, а live-продолжение пишет стык backfill/live ## Данные и конфиги