Добавить каноническое чтение актуальных событий через ods.event_v #86

Closed
opened 2026-08-16 20:18:33 +03:00 by ddmitry · 1 comment
Owner

Part of #5.

Цель

Добавить ods.event_v как каноническую точку точного чтения актуальных событий. Представление сохраняет зерно события, имена и типы source-aligned полей ODS, но скрывает от потребителя FINAL или эквивалентное схлопывание версий.

Учебный результат: менти видит границу между физическими версиями ReplacingMergeTree и стабильным чтением текущего состояния.

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

  • ods.event_v создано как обычное представление (_v) и возвращает те же source-aligned поля на том же зерне события, что ods.event_rep / ods.event_dist.
  • Через ods.event_v видна ровно актуальная версия каждого события независимо от фоновых слияний; потребителю не нужно писать FINAL.
  • Проверка стартового мира, которой нужен актуальный счёт, читает ods.event_v; ожидание доставки и другие проверки физических строк остаются на ods.event_dist.
  • docs/architecture/storage.md и мастер-спека различают ods.event_v (актуальное состояние ODS) и будущий dds.event_v (бизнес-представление).

Границы

  • Не менять ods.event_rep и ods.event_dist, их движки, ключи, поля и зерно.
  • Не переименовывать поля в snake_case, не расшифровывать коды и не добавлять бизнес-модель; dds.event_v вне задачи.
  • Не переводить на представление проверки доставки, которым нужны физически поступившие строки.
  • Не заводить общий слой представлений или отдельный постоянный контур проверок ради одного объекта.

Кому что

Целиком Кодекс: постановка самодостаточна, критерии перечислены. Линию уместности на ревью держит Opus. Бриф Кодексу обязан требовать: проверять свойство, а не текст вывода грепом; только POSIX-инструменты (ripgrep на машине стенда нет); вердикт «недостижимо» перепроверять на достижимость, а не на факт.

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

  • docs/adr/0005-event-ingestion.md;
  • docs/adr/0006-object-naming.md;
  • docs/architecture/storage.md, разделы «Имена объектов» и «Приём событий»;
  • резолюцию #80;
  • docs/architecture/testing.md, раздел об интеграционной проверке.

Проверка

  • make config-test
  • make check-clickhouse на чисто поднятом стенде

Отдельную постоянную цель не добавлять: существующая сверка стартового мира должна доказать точный актуальный счёт через новое представление.

Part of #5. ## Цель Добавить `ods.event_v` как каноническую точку точного чтения актуальных событий. Представление сохраняет зерно события, имена и типы source-aligned полей ODS, но скрывает от потребителя `FINAL` или эквивалентное схлопывание версий. Учебный результат: менти видит границу между физическими версиями `ReplacingMergeTree` и стабильным чтением текущего состояния. ## Критерии приёмки - [x] `ods.event_v` создано как обычное представление (`_v`) и возвращает те же source-aligned поля на том же зерне события, что `ods.event_rep` / `ods.event_dist`. - [x] Через `ods.event_v` видна ровно актуальная версия каждого события независимо от фоновых слияний; потребителю не нужно писать `FINAL`. - [x] Проверка стартового мира, которой нужен актуальный счёт, читает `ods.event_v`; ожидание доставки и другие проверки физических строк остаются на `ods.event_dist`. - [x] `docs/architecture/storage.md` и мастер-спека различают `ods.event_v` (актуальное состояние ODS) и будущий `dds.event_v` (бизнес-представление). ## Границы - Не менять `ods.event_rep` и `ods.event_dist`, их движки, ключи, поля и зерно. - Не переименовывать поля в snake_case, не расшифровывать коды и не добавлять бизнес-модель; `dds.event_v` вне задачи. - Не переводить на представление проверки доставки, которым нужны физически поступившие строки. - Не заводить общий слой представлений или отдельный постоянный контур проверок ради одного объекта. ## Кому что Целиком Кодекс: постановка самодостаточна, критерии перечислены. Линию уместности на ревью держит Opus. Бриф Кодексу обязан требовать: проверять свойство, а не текст вывода грепом; только POSIX-инструменты (ripgrep на машине стенда нет); вердикт «недостижимо» перепроверять на достижимость, а не на факт. ## Сначала прочитать - `docs/adr/0005-event-ingestion.md`; - `docs/adr/0006-object-naming.md`; - `docs/architecture/storage.md`, разделы «Имена объектов» и «Приём событий»; - резолюцию #80; - `docs/architecture/testing.md`, раздел об интеграционной проверке. ## Проверка - `make config-test` - `make check-clickhouse` на чисто поднятом стенде Отдельную постоянную цель не добавлять: существующая сверка стартового мира должна доказать точный актуальный счёт через новое представление.
ddmitry added the ready-for-agent label 2026-08-16 20:18:34 +03:00
Author
Owner

Перевешен из детей карты #69 в чек-лист этапа #5 при нарезке (#89): чистое исполнение без открытых решений, событийный близнец #94 (ods.order_v). Порядок с #94 свободный.

Перевешен из детей карты #69 в чек-лист этапа #5 при нарезке (#89): чистое исполнение без открытых решений, событийный близнец #94 (`ods.order_v`). Порядок с #94 свободный.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ddmitry/clickstream-data-platform#86