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>
This commit is contained in:
@@ -26,10 +26,12 @@ JSON-поле `ecommerce`. Отдельной сущности «визит» в
|
||||
собирают на стороне хранилища, а `VisitID` дан как эталон для самопроверки.
|
||||
|
||||
Имена и типы колонок — стороны источника. Хранилище принимает их как есть и
|
||||
нормализует у себя: своё snake_case-имя каждой колонки ждёт в столбце «Имя в
|
||||
DDS». Столбец «Тип numpy» показывает, чем колонка представлена внутри
|
||||
генератора; у массивов это тип элемента. Номер — место колонки в выгрузке:
|
||||
порядок задан контрактом.
|
||||
нормализует у себя: то же имя в нашем стиле ждёт в столбце «Нормализованное
|
||||
имя». Это имя источника, приведённое к snake_case, а не имя атрибута в
|
||||
модели данных: слой DDS складывает свою модель и называет атрибуты по ней.
|
||||
Столбец «Тип numpy» показывает, чем колонка представлена внутри генератора;
|
||||
у массивов это тип элемента. Номер — место колонки в выгрузке: порядок задан
|
||||
контрактом.
|
||||
|
||||
Колонки группы «Ecommerce» заполнены только у торговых событий:
|
||||
`add_to_cart` несёт один товар, `purchase` — состав заказа и блок
|
||||
@@ -38,7 +40,7 @@ DDS». Столбец «Тип numpy» показывает, чем колонк
|
||||
Всего колонок: {count}."""
|
||||
|
||||
TABLE_HEADER = (
|
||||
"| № | Колонка | Тип ClickHouse | Тип numpy | Имя в DDS | Комментарий |",
|
||||
"| № | Колонка | Тип ClickHouse | Тип numpy | Нормализованное имя | Комментарий |",
|
||||
"|---|---|---|---|---|---|",
|
||||
)
|
||||
|
||||
@@ -60,7 +62,7 @@ def table_row(number: int, column: Column) -> str:
|
||||
f"`{column.name}`",
|
||||
f"`{column.clickhouse_type}`",
|
||||
f"`{column.numpy_dtype}`",
|
||||
f"`{column.dds_name}`",
|
||||
f"`{column.normalized_name}`",
|
||||
column.comment,
|
||||
)
|
||||
return "| " + " | ".join(cells) + " |"
|
||||
|
||||
Reference in New Issue
Block a user