- Зачем: - генератор должен писать события от модельной точки T0 и проверяться повторяемо в ClickHouse. - Что: - добавлены настройки модельного времени и передача модельной точки в live-тик. - дневной коэффициент считается по модельному времени и часовому поясу. - обновлены проверки, compose, документация и статус issue 02. - Проверка: - make generator-test. - два чистых ClickHouse-прогона с GEN_STATE_RESET=true дали одинаковые контрольные числа.
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