Status: ready-for-human # Интенсивность и калибровка потока ## What to build Связать иерархическую модель с целевой интенсивностью потока. Старая идея Пуассона, часового коэффициента и jitter должна задавать бюджет активности, из которого рождаются визиты; фактические события выходят по запланированным паузам активных визитов. На этом шаге также нужно проверить, что параметры модели дают поток, сопоставимый с профилем сида: длина визита около 10 событий в среднем и по медиане, доля дошедших до `/confirmation` около 25%, межсессионные паузы согласованы с формулой из спеки. Источник решений: `docs/specs/2026-06-10-generator-math-model.md`, разделы «Связка с моделью интенсивности», «Параметры» и «Критерии приёмки». ## Acceptance criteria - [x] Средняя интенсивность событий за длинное окно соответствует `GEN_LAMBDA_BASE_PER_MIN * часовой коэффициент` с разумным отклонением. - [x] Рождения визитов рассчитываются из бюджета событий и средней длины визита, а не из старых границ `GEN_MIN/MAX_EVENTS_PER_TICK` в прежнем смысле. - [x] Доля новых пользователей за длинное окно близка к `GEN_P_NEW_USER`. - [x] Межсессионные паузы одного пользователя не меньше кулдауна, а среднее на дефолтах находится в районе расчёта из спеки. - [x] Распределение длины визита на симуляции сопоставимо с сидом: медиана около 10, среднее около 10, максимум не выше потолка. - [x] Воронка по шагам `/home -> товары -> /cart -> /payment -> /confirmation` монотонно затухает на длинной симуляции. ## Blocked by - `.scratch/feature-data-generator/issues/04-user-population-and-returns.md` ## Comments 2026-06-11: реализована калибровка потока через `TickStreamGenerator`: событийный бюджет тика копится как бюджет рождений визитов через ожидаемую среднюю длину визита (~10 событий), а фактические события выходят по запланированным паузам активных визитов. Дефолт `GEN_LAMBDA_BASE_PER_MIN` в коде снижен до 30 событий/мин и синхронизирован с обычным запуском через `docker-compose.yml`; `GEN_MIN/MAX_EVENTS_PER_TICK` теперь ограничивают событийный бюджет тика до пересчёта в рождения визитов. Калибровка таблицы переходов и пауз проверена тестами: средняя интенсивность длинного окна близка к целевому бюджету, доля новых пользователей близка к `GEN_P_NEW_USER`, межсессионные паузы не меньше кулдауна и имеют часовой масштаб около формульного ориентира из спеки, длина визита сопоставима с сидом, доля `/confirmation` остаётся около 25%, воронка монотонно затухает. Проверка: `uv run --with-requirements generator/requirements.txt pytest generator/tests -q` — 96 passed.