Каркас генератора и контракт схемы события #36

Closed
opened 2026-08-01 21:19:36 +03:00 by ddmitry · 0 comments
Owner

Part of #4.

Цель

Заложить python-проект генератора и его сердце — контракт схемы события:
импортируемый модуль с чистыми данными о 47 колонках и рендеренное
«описание выгрузки» в доках. Это первый код этапа 2: DDL хранилища пишется
по рендеренной документации, генерация событий — по модулю. Имена пакета и
модулей — вкусовое решение этого тикета: форма задаёт границы для всех
следующих.

Критерии приёмки

  • Python-проект генератора заведён через uv (pyproject.toml и uv.lock
    в git), uv run pytest проходит.
  • Модуль контракта — чистые данные без логики: для каждой из 47 колонок
    имя Метрики, тип ClickHouse, тип numpy, snake_case-имя для DDS,
    группа полей и порядок; состав и порядок — раздел 1.2 мастер-спеки.
  • Скрипт рендера собирает из контракта «описание выгрузки» — таблицу
    колонок в docs/ (аналог документации Метрики); документ добавлен
    тем же PR.
  • Тест актуальности рендера: перегенерация документа не даёт git diff —
    сторожит расхождение модуля и доки.
  • Тест инвариантов контракта: колонок ровно 47, имена уникальны,
    атрибуты заполнены.
  • Make-цель make test гоняет тесты генератора (uv run pytest из
    каталога проекта): последующие тикеты этапа ссылаются на неё, а не
    на голый uv run pytest из неизвестного каталога.

Границы

  • Генерация событий, мир, сериализация — следующие тикеты; здесь только
    каркас проекта и контракт.
  • DDL не трогать: он пишется отдельным тикетом по рендеренной документации.
  • Состав, имена и типы колонок не переоткрывать — они решены мастер-спекой
    (1.1–1.2); расхождение с ней — вопрос владельцу, не правка молча.

Сначала прочитать

  • docs/specs/2026-08-01-generator.md — раздел 3 «Контракт схемы».
  • docs/specs/2026-07-30-stand-v2-realism.md — разделы 1.1, 1.2, 1.4.
  • AGENTS.md — язык, uv, правила коммитов.

Проверка

  • make test
  • запуск скрипта рендера, затем git diff --exit-code docs/
Part of #4. ## Цель Заложить python-проект генератора и его сердце — контракт схемы события: импортируемый модуль с чистыми данными о 47 колонках и рендеренное «описание выгрузки» в доках. Это первый код этапа 2: DDL хранилища пишется по рендеренной документации, генерация событий — по модулю. Имена пакета и модулей — вкусовое решение этого тикета: форма задаёт границы для всех следующих. ## Критерии приёмки - [ ] Python-проект генератора заведён через `uv` (pyproject.toml и uv.lock в git), `uv run pytest` проходит. - [ ] Модуль контракта — чистые данные без логики: для каждой из 47 колонок имя Метрики, тип ClickHouse, тип numpy, snake_case-имя для DDS, группа полей и порядок; состав и порядок — раздел 1.2 мастер-спеки. - [ ] Скрипт рендера собирает из контракта «описание выгрузки» — таблицу колонок в docs/ (аналог документации Метрики); документ добавлен тем же PR. - [ ] Тест актуальности рендера: перегенерация документа не даёт git diff — сторожит расхождение модуля и доки. - [ ] Тест инвариантов контракта: колонок ровно 47, имена уникальны, атрибуты заполнены. - [ ] Make-цель `make test` гоняет тесты генератора (`uv run pytest` из каталога проекта): последующие тикеты этапа ссылаются на неё, а не на голый `uv run pytest` из неизвестного каталога. ## Границы - Генерация событий, мир, сериализация — следующие тикеты; здесь только каркас проекта и контракт. - DDL не трогать: он пишется отдельным тикетом по рендеренной документации. - Состав, имена и типы колонок не переоткрывать — они решены мастер-спекой (1.1–1.2); расхождение с ней — вопрос владельцу, не правка молча. ## Сначала прочитать - docs/specs/2026-08-01-generator.md — раздел 3 «Контракт схемы». - docs/specs/2026-07-30-stand-v2-realism.md — разделы 1.1, 1.2, 1.4. - AGENTS.md — язык, uv, правила коммитов. ## Проверка - `make test` - запуск скрипта рендера, затем `git diff --exit-code docs/`
ddmitry added the ready-for-agent label 2026-08-01 21:19:57 +03:00
Sign in to join this conversation.