feat(generator): каркас проекта и контракт схемы события

- Зачем:
  - этап 2 начинается с формы: контракт схемы — источник истины и для
    генерации событий, и для DDL хранилища, а имена пакета и модулей
    задают границы всем следующим тикетам этапа.
- Что:
  - заведён uv-проект generator/ (pyproject.toml и uv.lock в git; numpy,
    pytest и ruff), пакет clickstream_generator.
  - schema.py — контракт: чистые данные о 47 колонках выгрузки (имя
    Метрики, тип ClickHouse, тип numpy, имя для DDS, группа); порядок
    несёт сам кортеж COLUMNS, отдельного поля с номером нет намеренно.
  - schema_doc.py собирает из контракта описание выгрузки
    docs/formats/clickstream-event.md — по нему пишется сторона
    хранилища; документ руками не правится.
  - тесты: инварианты контракта (состав, уникальность, заполненность,
    согласие типов и порядок групп) и свежесть описания выгрузки.
  - цели make lint, make test и make docs; README, AGENTS.md и
    CONTEXT.md дополнены генератором, форматами и словарной статьёй.
- Проверка:
  - make test (248 тестов), make lint, make config-test;
  - make docs, затем git diff --exit-code docs/ — пусто.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-01 22:22:14 +03:00
co-authored by Claude Opus 5
parent 9e04eae72a
commit 2890c7f9fb
13 changed files with 1001 additions and 4 deletions
+11 -1
View File
@@ -1,6 +1,6 @@
COMPOSE ?= docker compose
.PHONY: up down clean ps logs config-test smoke smoke-cluster smoke-guards
.PHONY: up down clean ps logs config-test lint test docs smoke smoke-cluster smoke-guards
up:
$(COMPOSE) up --detach --build --wait --wait-timeout 600
@@ -21,6 +21,16 @@ config-test:
COMPOSE_BIN="$(COMPOSE)" ./scripts/config-test.sh
./tests/stand-smoke-static.sh
lint:
cd generator && uv run ruff check && uv run ruff format --check
test:
cd generator && uv run pytest
docs:
cd generator && uv run python -m clickstream_generator.schema_doc \
../docs/formats/clickstream-event.md
smoke:
COMPOSE_BIN="$(COMPOSE)" ./scripts/stand-smoke.sh