- Зачем:
- этап 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>
29 lines
1.7 KiB
Markdown
29 lines
1.7 KiB
Markdown
# Генератор кликстрима
|
|
|
|
Клиентская сторона стенда: отсюда берётся поток событий — широкое событие по
|
|
образцу облачной выгрузки Яндекс Метрики. Устройство и принятые решения —
|
|
спека [«Генератор (этап 2)»](../docs/specs/2026-08-01-generator.md).
|
|
|
|
Пока здесь каркас проекта и его сердце — контракт схемы события.
|
|
|
|
## Что где лежит
|
|
|
|
- `src/clickstream_generator/schema.py` — контракт схемы: чистые данные о
|
|
колонках выгрузки. Собственность генератора; из него выводятся сам
|
|
генератор, его валидация и описание выгрузки в доках.
|
|
- `src/clickstream_generator/schema_doc.py` — сборка «описания выгрузки»
|
|
([`docs/formats/clickstream-event.md`](../docs/formats/clickstream-event.md))
|
|
из контракта. Документ руками не правят — пересобирают.
|
|
- `tests/` — инварианты контракта и свежесть описания.
|
|
|
|
## Команды
|
|
|
|
Из корня репозитория:
|
|
|
|
- `make test` — тесты генератора;
|
|
- `make lint` — ruff: проверка и формат;
|
|
- `make docs` — пересобрать описание выгрузки.
|
|
|
|
Python и зависимости — через `uv`, версии закреплены в `uv.lock`: на этом
|
|
держится обещание побайтовой воспроизводимости (спека, раздел 2).
|