feat(generator): добавлена стартовая история через backfill
- Зачем: - стенду нужна повторяемая история с живым продолжением от модельной границы без дублей и разрыва визитов. - Что: - добавлен backfill-режим с `GEN_MODEL_T_END`, manifest и state на `T_end`. - live-запуск восстанавливается из manifest без настенной дельты и проверяет совместимость state. - добавлены SQL-проверки формы данных, повторяемости и стыка backfill с live. - Проверка: - make generator-test. - два чистых ClickHouse-прогона backfill дали одинаковые manifest checksums и digest. - reviewer gate issue 05 пройден после исправлений state/manifest.
This commit is contained in:
@@ -165,22 +165,29 @@ resume_model_at =
|
||||
#### Манифест стартовой истории
|
||||
|
||||
Стартовая история состоит из трёх частей: события, слепок состояния и манифест.
|
||||
Манифест хранится как JSON и минимум содержит:
|
||||
Манифест хранится как JSON в Kafka compact-topic
|
||||
`generator_startup_history_manifest`, ключ `default`. Слепок состояния хранится
|
||||
в `generator_state`, ключ `default`. Манифест минимум содержит:
|
||||
|
||||
- `manifest_version`;
|
||||
- `generated_at` — настенная UTC-метка создания артефакта;
|
||||
- `gen_seed`;
|
||||
- `model_t0`, `model_t_end`, `model_timezone`;
|
||||
- `run_mode = "backfill"`;
|
||||
- настройки генерации, влияющие на поток;
|
||||
- `state_version` и ссылку на файл или запись слепка состояния;
|
||||
- настройки генерации, влияющие на поток, в `generation_settings`;
|
||||
- `state_version` и ссылку на запись слепка состояния;
|
||||
- контрольные числа по каждому топику: количество строк, минимум и максимум
|
||||
`event_timestamp`, контрольная сумма;
|
||||
- итоговые контрольные числа для проверки в ClickHouse: события, визиты,
|
||||
пользователи и диапазон модельного времени.
|
||||
|
||||
Нельзя смешивать события, state и манифест от разных `GEN_SEED`, `T0`, `T_end`
|
||||
или настроек генерации. Такое смешивание считается ошибкой запуска.
|
||||
или настроек генерации. Live-запуск использует manifest как стартовую историю
|
||||
только если `state.last_batch_id`, `state.model_timestamp`, `GEN_SEED`,
|
||||
`GEN_MODEL_T0`, `GEN_MODEL_T_END`, `GEN_MODEL_TIMEZONE`, `GEN_MODEL_TIME_SPEED`
|
||||
и `generation_settings` совпадают. Startup-history state без подходящего
|
||||
manifest считается несовместимым и ведёт к чистому старту, а не к восстановлению
|
||||
по правилу live-сбоя.
|
||||
|
||||
#### Повторяемая проверка в ClickHouse
|
||||
|
||||
|
||||
Reference in New Issue
Block a user