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:
@@ -0,0 +1,22 @@
|
||||
[project]
|
||||
name = "clickstream-generator"
|
||||
version = "0.1.0"
|
||||
description = "Генератор кликстрима учебного стенда: контракт схемы события и модельный мир"
|
||||
readme = "README.md"
|
||||
# Верхняя граница — не педантизм: обещание побайтовой воспроизводимости
|
||||
# держится на зафиксированных версиях (спека генератора, раздел 2).
|
||||
requires-python = ">=3.14,<3.15"
|
||||
dependencies = ["numpy>=2"]
|
||||
|
||||
[dependency-groups]
|
||||
dev = ["pytest>=8", "ruff>=0.15"]
|
||||
|
||||
[build-system]
|
||||
requires = ["uv_build>=0.11.21,<0.12.0"]
|
||||
build-backend = "uv_build"
|
||||
|
||||
[tool.pytest.ini_options]
|
||||
testpaths = ["tests"]
|
||||
|
||||
[tool.ruff.lint]
|
||||
select = ["E", "F", "I", "UP", "B"]
|
||||
Reference in New Issue
Block a user