Files
clickstream-data-platform/Makefile
T
ddadminandClaude Opus 5 6a708cd5aa refactor(make): корень — про стенд, генератор — за своей дверью
- Зачем:
  - корневые цели смешивали два уровня: пять из шестнадцати начинались с cd generator.
  - цель, названная общерепозиторной, охватывала 31 файл Python из 34: даги и Superset не видел ни линт, ни типы.
- Что:
  - lint, typecheck, test, docs и inventory переехали в новый generator/Makefile.
  - корневой lint заведён по коду стенда — dags и infra/superset — с явными путями и закреплённой версией ruff.
  - заведён корневой ruff.toml: тот же список правил, target-version по младшему Python в образах стенда.
  - цели корня сгруппированы по использованию, осталось двенадцать.
  - два файла дагов переформатированы под новую проверку.
  - карта проверок, оба README, спека генератора и AGENTS.md приведены к двум дверям.
- Проверка:
  - make lint; make config-test — зелёные.
  - make -C generator lint; typecheck; test — зелёные, 407 тестов.
  - ruff check --show-files: из корня ровно три файла стенда, из generator/ — только его.
  - цена корневого lint замерена (0,4 с) и вписана в карту проверок.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-09 21:31:07 +03:00

65 lines
2.4 KiB
Makefile

COMPOSE ?= docker compose
GENERATOR_DAY ?= 0
GENERATOR_LIMIT ?=
GENERATOR_SPEED ?=
# Цели корня — про стенд. Проверки генератора живут за своей дверью, в
# `generator/Makefile`: генератор — отдельная и заменяемая сущность со своим
# `pyproject.toml`, локом и образом, и цели у него свои.
.PHONY: up down clean ps logs smoke check-clickhouse check-services config-test lint generate-batch generate-live
# --- Жизнь стенда ---
# Второй шаг: `--wait` дожидается служб, а приём событий асинхронный — довод
# целиком в шапке скрипта.
up:
$(COMPOSE) up --detach --build --wait --wait-timeout 600
COMPOSE_BIN="$(COMPOSE)" ./scripts/wait-for-world.sh
down:
$(COMPOSE) down --remove-orphans
clean:
$(COMPOSE) down --volumes --remove-orphans
ps:
$(COMPOSE) ps
logs:
$(COMPOSE) logs --follow
# --- Проверки, которым нужен поднятый стенд ---
smoke:
COMPOSE_BIN="$(COMPOSE)" ./scripts/stand-smoke.sh
check-clickhouse:
./scripts/check-clickhouse.sh
check-services:
COMPOSE_BIN="$(COMPOSE)" ./scripts/stand-services.sh
# --- Проверки, которым стенд не нужен ---
config-test:
COMPOSE_BIN="$(COMPOSE)" ./scripts/config-test.sh
# Пути названы вслух: без них ruff из корня прошёлся бы и по генератору, а у
# того своя дверь и свой конфиг. Версия закреплена, потому что лока в корне
# нет, а форматтер между версиями меняет вывод — иначе проверка однажды
# покраснела бы сама, без единой правки в репозитории. Держать её равной той,
# что в `generator/uv.lock`, приходится руками: сверять их некому.
lint:
uvx ruff@0.16.1 check dags infra/superset
uvx ruff@0.16.1 format --check dags infra/superset
# --- Наполнение миром ---
generate-batch:
$(COMPOSE) --profile generator run --rm generator batch --day "$(GENERATOR_DAY)" \
$(if $(GENERATOR_LIMIT),--limit "$(GENERATOR_LIMIT)")
generate-live:
$(COMPOSE) --profile generator run --rm generator live --day "$(GENERATOR_DAY)" \
$(if $(GENERATOR_SPEED),--speed "$(GENERATOR_SPEED)")