Files
clickstream-data-platform/generator
ddadminandClaude Opus 5 24c8dd9b98 refactor(generator): нормализованное имя вместо имени в DDS, тесты на имена сняты
- Зачем:
  - контракт вёл себя как хозяин чужого слоя: поле называлось dds_name, в
    описании стоял столбец «Имя в DDS», а два теста прибивали имена
    гвоздями. Спека же задала вид имени (snake_case), а не список: имена
    атрибутов складывает модель данных DDS, и решать это не трекеру.
- Что:
  - поле контракта и столбец описания стали нормализованным именем: имя
    источника в нашем стиле. В описании и в докстринге сказано прямо, что
    слой DDS называет атрибуты по своей модели.
  - сняты оба теста на имена — копия имён DDS и конспект состава по
    мастер-спеке. Они не проверяли верность имени, только неизменность, а
    неизменность и так сторожит пересборка описания: молчаливой правки
    контракта не бывает, она всплывает диффом документа.
  - остались проверки формы: 47 колонок, уникальность, стили имён,
    заполненность, согласие типов numpy и ClickHouse, порядок групп.
  - спека генератора (раздел 3) и 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>
2026-08-01 23:01:04 +03:00
..

Генератор кликстрима

Клиентская сторона стенда: отсюда берётся поток событий — широкое событие по образцу облачной выгрузки Яндекс Метрики. Устройство и принятые решения — спека «Генератор (этап 2)».

Пока здесь каркас проекта и его сердце — контракт схемы события.

Что где лежит

  • src/clickstream_generator/schema.py — контракт схемы: чистые данные о колонках выгрузки. Собственность генератора; из него выводятся сам генератор, его валидация и описание выгрузки в доках.
  • src/clickstream_generator/schema_doc.py — сборка «описания выгрузки» (docs/formats/clickstream-event.md) из контракта. Документ руками не правят — пересобирают.
  • tests/ — инварианты контракта и свежесть описания.

Команды

Из корня репозитория:

  • make test — тесты генератора;
  • make lint — ruff: проверка и формат;
  • make docs — пересобрать описание выгрузки.

Python и зависимости — через uv, версии закреплены в uv.lock: на этом держится обещание побайтовой воспроизводимости (спека, раздел 2).