feat(generator): добавлен поток активных визитов по тикам

- Зачем:
  - генератор должен выпускать события визита по запланированным тикам, не приклеивая весь визит к одному запуску.
- Что:
  - добавлен тиковый слой `TickStreamGenerator` с активными визитами и выпуском созревших событий.
  - добавлена валидация потолка активных визитов относительно потолка популяции.
  - сохранён событийный смысл `event_budget` и добавлен регрессионный тест против разгона интенсивности.
- Проверка:
  - `uv run --with-requirements generator/requirements.txt pytest generator/tests -q` — 81 passed.
This commit is contained in:
Dmitry Dementiev
2026-06-11 15:32:53 +03:00
parent 642789d484
commit d8da27187e
9 changed files with 316 additions and 48 deletions
@@ -1,4 +1,4 @@
Status: ready-for-agent
Status: ready-for-human
# Поток по тикам с активными визитами
@@ -17,15 +17,15 @@ Status: ready-for-agent
## Acceptance criteria
- [ ] Тест через публичный интерфейс генератора показывает, что один `click_id`
- [x] Тест через публичный интерфейс генератора показывает, что один `click_id`
может появляться в выходе нескольких последовательных тиков.
- [ ] На каждом тике выпускаются только созревшие события активных визитов.
- [ ] `event_timestamp` отражает запланированное время события, а не время
- [x] На каждом тике выпускаются только созревшие события активных визитов.
- [x] `event_timestamp` отражает запланированное время события, а не время
фактической отправки тика.
- [ ] Завершённые визиты больше не выпускают события в следующих тиках.
- [ ] При достижении потолка активных визитов новые рождения в этот тик
- [x] Завершённые визиты больше не выпускают события в следующих тиках.
- [x] При достижении потолка активных визитов новые рождения в этот тик
пропускаются, а бюджет не копится бесконечно.
- [ ] Конфигурация запрещает состояние, где потолок активных визитов не меньше
- [x] Конфигурация запрещает состояние, где потолок активных визитов не меньше
потолка популяции пользователей.
## Blocked by
@@ -34,3 +34,8 @@ Status: ready-for-agent
- `.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` снова трактуется
как бюджет событий, а не как число рождений визитов.