7.0 KiB
7.0 KiB
AGENTS.md
Инструкции для работы с репозиторием мини‑демо хранилища кликстрима.
Цель репозитория
Решение тестового задания DE — развернуть в docker compose минимальный аналитический стек для обработки кликстрима e-commerce:
Задача: Подготовить данные для первичного анализа и собрать дашборд, на котором бизнес может сделать выводы.
Итоговый стек:
- Kafka (источник событий, 1 JSON message = 1 event)
- ClickHouse (STG → ODS → DDS → DM)
- Airflow (оркестрация ETL-пайплайна)
- Superset (BI поверх витрин)
- Prometheus + Grafana (мониторинг)
- простой инструмент/скрипт, который читает
.jsonlи пишет события в Kafka
Ключевые артефакты
Исполняемые файлы (текущая структура)
dags/— Airflow DAGs для оркестрации ETLsql/— SQL по слоям:sql/ddl/00_databases.sql— создание БД stg/ods/dds/dmsql/ddl/stg/10_stg.sql— STG слой (Kafka Engine + MV)sql/ddl/ods/20_ods.sql— ODS слой (типизация + MV для ошибок)sql/ddl/dds/30_dds.sql— DDS слой (таблицы для batch-загрузки)sql/ddl/dm/40_dm.sql— DM слой (витрины VIEW)sql/dds/30_ods_to_dds.sql— ODS → DDS (argMax + JOIN)sql/dm/40_dds_to_dm.sql— обновление DQ_summary
scripts/— скрипты автоматизации:apply_clickhouse_ddl.sh— применение DDLload_kafka_data.sh— загрузка в Kafkarun_batch.sh— запуск batch-процесса
airflow/— конфигурация Airflow:requirements.txt— зависимости Airflow/ClickHouse plugin
Планы и документация (legacy)
plans/clickhouse_ddl.md— исходный план (inline DDL, legacy)plans/runbook.md— runbookplans/kafka_ingest_plan.md— план загрузки в Kafkadocs/ARCHITECTURE.md— подробное описание архитектурыdata/DE-task.md— текст задания.data/*.jsonl— исходные данные (могут быть грязными).configs/— конфиги ClickHouse/Prometheus/Grafana.
Правила по данным (важно)
- Не загружать исходные
*.jsonlцеликом: используйтеhead -n 20..50. - Для тестов/демо предпочтительнее “малый срез”, чем “идеальная полнота”.
- Данные могут быть с ошибками — пайплайн должен быть устойчивым (в ODS фиксировать ошибки парсинга, а не падать).
Как запускать (локально)
Базовые команды:
make up(илиdocker compose up -d)make ddl(применяет SQL изsql/ddl/00_databases.sqlиsql/ddl/*/*.sqlв ClickHouse)make data(пересоздаёт топики и заливает небольшой срез данных в Kafka; полный режим —FULL=1 make data)make transform(запускает batch-процесс ODS → DDS → DM)docker compose up -ddocker compose psdocker compose logs -f --tail=200 <service>docker compose down(сохраняет named volumes, включаяclickhouse-data)docker compose down -v(удалит volumes; используйте осознанно)
Порты (см. docker-compose.yml):
- ClickHouse native:
localhost:8002 - ClickHouse HTTP:
localhost:9123 - Kafka:
localhost:9092 - Kafka UI:
http://localhost:8082 - Airflow:
http://localhost:8080(admin/admin) - Prometheus:
http://localhost:9090 - Grafana:
http://localhost:3000
ClickHouse: применение DDL и загрузка сэмпла
- DDL/пайплайн описаны в
plans/clickhouse_ddl.md. - Для быстрой загрузки “первых N строк” используйте команды из раздела “Практические заметки для демо”.
Конвенции по изменениям
- Держать изменения минимальными и по теме задания (инфра, схема, ingest, витрины).
- Не коммитить секреты. Если требуется пароль/ключи — использовать
.envи примеры.env.example. - README/планы обновлять вместе с изменениями инфраструктуры/DDL.
- Для спорных или меняющихся API (особенно Airflow/operators/providers) проверять актуальную документацию через
context7и фиксировать решение в коде/документации. - Комментарии в коде — на русском языке:
- SQL: заголовочный блок с описанием файла, комментарии к каждому логическому блоку
- Bash: шапка с назначением/запуском/требованиями, секции разделены
# ----- - См. существующие файлы как пример (
sql/ddl/ods/20_ods.sql,sql/dds/30_ods_to_dds.sql,scripts/run_batch.sh)
Быстрые проверки
- Kafka ingest: наличие данных в
stg.*и типизированных строк вods.*. - Мониторинг: доступность
/metricsу ClickHouse и скрейп в Prometheus. - Airflow:
http://localhost:8080должен показывать UI и DAGddl_initиetl_pipeline. - BI: витрина
dm.v_events_enrichedдолжна отвечать за разумное время при фильтре по дате.
Связанная документация
- README.md — пользовательская документация (быстрый старт, архитектура)
- docs/ARCHITECTURE.md — подробное описание слоёв и технических решений
- data/DE-task.md — исходное задание
Примечания по текущему состоянию (если что-то “не встаёт”)
Репозиторий развивается итеративно; если docker compose не стартует из‑за отсутствующих путей/сетей/сервисов, правьте аккуратно и фиксируйте это в docker-compose.yml и/или configs/.