- Зачем: - генератор должен выпускать события визита по запланированным тикам, не приклеивая весь визит к одному запуску. - Что: - добавлен тиковый слой `TickStreamGenerator` с активными визитами и выпуском созревших событий. - добавлена валидация потолка активных визитов относительно потолка популяции. - сохранён событийный смысл `event_budget` и добавлен регрессионный тест против разгона интенсивности. - Проверка: - `uv run --with-requirements generator/requirements.txt pytest generator/tests -q` — 81 passed.
2.5 KiB
2.5 KiB
Status: ready-for-human
Поток по тикам с активными визитами
What to build
Разложить визиты по тикам генератора. Визит может жить дольше одного тика: генератор хранит активные визиты между вызовами, выпускает только те события, чьё запланированное время наступило, и не приклеивает все события к текущему тику.
Задача проверяет основную потоковую механику без Kafka и без восстановления после рестарта.
Источник решений: docs/specs/2026-06-10-generator-math-model.md, раздел
«Раскладка по тикам».
Acceptance criteria
- Тест через публичный интерфейс генератора показывает, что один
click_idможет появляться в выходе нескольких последовательных тиков. - На каждом тике выпускаются только созревшие события активных визитов.
event_timestampотражает запланированное время события, а не время фактической отправки тика.- Завершённые визиты больше не выпускают события в следующих тиках.
- При достижении потолка активных визитов новые рождения в этот тик пропускаются, а бюджет не копится бесконечно.
- Конфигурация запрещает состояние, где потолок активных визитов не меньше потолка популяции пользователей.
Blocked by
.scratch/feature-data-generator/issues/02-visit-page-path-and-monotonic-time.md.scratch/feature-data-generator/issues/02-5-generator-service-cleanup.md
Comments
2026-06-11: реализовано через TickStreamGenerator в тиковом слое. Проверка:
uv run --with-requirements generator/requirements.txt pytest generator/tests -q
— 81 passed. После ревью исправлено: входной event_budget снова трактуется
как бюджет событий, а не как число рождений визитов.