Files
clickstream-ch-kafka-supers…/.scratch/generator-model-time-startup-history/issues/02-model-time-to-clickhouse.md
T
ddadmin efb07b0283 feat(generator): добавлено модельное время live-потока
- Зачем:
  - генератор должен писать события от модельной точки T0 и проверяться повторяемо в ClickHouse.
- Что:
  - добавлены настройки модельного времени и передача модельной точки в live-тик.
  - дневной коэффициент считается по модельному времени и часовому поясу.
  - обновлены проверки, compose, документация и статус issue 02.
- Проверка:
  - make generator-test.
  - два чистых ClickHouse-прогона с GEN_STATE_RESET=true дали одинаковые контрольные числа.
2026-06-14 17:23:12 +03:00

3.3 KiB

Status: ready-for-human

Модельное время до ClickHouse

Parent

.scratch/generator-model-time-startup-history/PRD.md

What to build

Сделать минимальный живой поток, где генератор стартует от T0, пишет event_timestamp по модельному времени и доводит события до ClickHouse обычным путём стенда. Срез должен доказать не внутренний класс часов, а наблюдаемое поведение: данные в ClickHouse начинаются от модельной точки и повторяются при тех же настройках.

Acceptance criteria

  • При фиксированных GEN_SEED и T0 первый короткий прогон пишет события с модельными event_timestamp, начинающимися около T0.
  • Повторный чистый прогон с теми же настройками даёт те же контрольные числа в ClickHouse по правилу повторяемости из контракта задачи 1.
  • Повторный чистый прогон явно сбрасывает или обходит старое состояние генератора, чтобы сервис не продолжил прошлый запуск из generator_state.
  • Расчёт дневного коэффициента в этом срезе больше не зависит от реального часа запуска процесса.
  • Локальные тесты проверяют поведение через публичный интерфейс генератора или сервиса, без привязки к внутреннему устройству часов.
  • Есть команда или короткая инструкция для координатора: поднять стенд, прогнать поток, выполнить SQL-проверку в ClickHouse.
  • Документация запуска не утверждает, что event_timestamp равен настенному времени.

Решение

Живой сервис получает модельную точку из GEN_MODEL_T0, считает дневной коэффициент по модельному времени и передаёт эту же точку в тиковый поток. После успешного тика модельная точка сдвигается на GEN_TICK_SECONDS * GEN_MODEL_TIME_SPEED.

Проверка ClickHouse выполнена двумя чистыми прогонами с GEN_STATE_RESET=true. Оба раза получены одинаковые контрольные числа: 5 событий, диапазон event_ts = 2026-01-01 10:00:00.000000, 5 уникальных event_id и 5 уникальных click_id.

Риски по восстановлению state v2 оставлены для задачи 04: текущий срез доказывает чистый live-старт, а не возобновление после сбоя.

Blocked by

  • .scratch/generator-model-time-startup-history/issues/01-time-and-startup-history-contract.md