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:
@@ -9,7 +9,9 @@
|
||||
[«Боевой реализм стенда (v2)»](docs/specs/2026-07-30-stand-v2-realism.md).
|
||||
Сейчас работают кластер ClickHouse из двух шардов, отдельный
|
||||
clickhouse-keeper, односерверная Kafka в режиме KRaft, Airflow 3.3, Superset,
|
||||
Prometheus, Grafana и общая база Postgres для метаданных.
|
||||
Prometheus, Grafana и общая база Postgres для метаданных. Начат генератор
|
||||
кликстрима: в [`generator/`](generator/) заведён контракт схемы события, из
|
||||
которого собрано [описание выгрузки](docs/formats/clickstream-event.md).
|
||||
|
||||
## Быстрый старт
|
||||
|
||||
@@ -24,7 +26,8 @@ Prometheus, Grafana и общая база Postgres для метаданных.
|
||||
Полная проверка также использует `curl`, `jq`, `awk`,
|
||||
`grep`, `sed`, `tail`, `sleep` и `timeout`. По умолчанию должны быть свободны
|
||||
порты `23000`, `28080`, `28088`, `28123`, `28124`, `29000`, `29001`, `29090`
|
||||
и `29092`. Для статической проверки `make config-test` нужен `uv`.
|
||||
и `29092`. Проверкам без стенда — `make config-test`, `make lint`,
|
||||
`make test` — и сборке документации `make docs` нужен `uv`.
|
||||
|
||||
Стенд запускается без `.env`:
|
||||
|
||||
@@ -84,6 +87,9 @@ Superset, создаёт администратора и импортирует
|
||||
- `make config-test` — секунды, стенд поднимать не нужно. Видит только то, что
|
||||
есть в файлах, и о работоспособности не говорит ничего. Дёшево настолько, что
|
||||
можно гонять перед каждым коммитом.
|
||||
- `make lint` и `make test` — тоже секунды и тоже без стенда, но про другой
|
||||
код: ruff и тесты генератора в `generator/`. Тесты сторожат контракт схемы
|
||||
события и свежесть собранного из него описания выгрузки.
|
||||
- `make smoke` — минута-две на поднятом стенде. Дороже, но проверяет связи
|
||||
между службами, а не отдельные файлы: это интеграционная проверка.
|
||||
- `make smoke-cluster` — около минуты. Одна связь, зато до дна: межнодовое
|
||||
@@ -200,4 +206,7 @@ Superset закреплён на 6.1.0; драйвер `clickhouse-connect`, ф
|
||||
- [docs/specs/](docs/specs/) — спеки: источник истины о задуманном.
|
||||
- [docs/research/](docs/research/) — исследования; сейчас это формат
|
||||
кликстрима Яндекса, по которому строится модель события.
|
||||
- [docs/formats/](docs/formats/) — описания форматов источников: по ним
|
||||
пишется сторона хранилища. Собираются из кода командой `make docs`, руками
|
||||
не правятся.
|
||||
- [AGENTS.md](AGENTS.md) — контракт работы в репозитории.
|
||||
|
||||
Reference in New Issue
Block a user