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:
@@ -43,6 +43,12 @@ Python-модуль с описателями колонок события —
|
||||
Из него выводятся генератор, валидация и документация формата; хранилище
|
||||
строится по документации, не по модулю.
|
||||
|
||||
**Описание выгрузки**:
|
||||
Публичная документация формата события: таблица колонок, собранная из
|
||||
контракта схемы. По ней пишется сторона хранилища — как в бою по документации
|
||||
источника. Правится только контракт, документ пересобирается.
|
||||
_Избегать_: описание схемы, документация контракта
|
||||
|
||||
**Канонический сериализатор**:
|
||||
Единственное место, где событие превращается в байты. Фиксированный порядок
|
||||
ключей и строк — основа побайтовой воспроизводимости.
|
||||
|
||||
Reference in New Issue
Block a user