feat(generator): добавлена популяция пользователей
- Зачем: - steady-stream генератору нужны устойчивые пользователи и возвраты между визитами, чтобы поток был похож на живую модель поведения. - Что: - добавлена ограниченная популяция с кулдауном возврата, ротацией новых пользователей и защитой от второго активного визита. - UUID переведены на единый ГПСЧ генератора, а завершение визита считается по запланированному последнему событию. - добавлены регрессионные тесты и обновлена документация генератора. - Проверка: - uv run --with-requirements generator/requirements.txt pytest generator/tests -q
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
Status: ready-for-agent
|
||||
Status: ready-for-human
|
||||
|
||||
# Популяция пользователей и возвраты
|
||||
|
||||
@@ -17,14 +17,14 @@ Status: ready-for-agent
|
||||
|
||||
## Acceptance criteria
|
||||
|
||||
- [ ] На длинной симуляции получается здоровая пирамида
|
||||
- [x] На длинной симуляции получается здоровая пирамида
|
||||
`users < sessions < events`.
|
||||
- [ ] Один пользователь может иметь несколько `click_id` во времени.
|
||||
- [ ] Один `click_id` принадлежит ровно одному `user_domain_id`.
|
||||
- [ ] Пользователь не получает новый визит раньше минимального кулдауна возврата.
|
||||
- [ ] Если доступных возвращающихся пользователей нет, новый визит достаётся
|
||||
- [x] Один пользователь может иметь несколько `click_id` во времени.
|
||||
- [x] Один `click_id` принадлежит ровно одному `user_domain_id`.
|
||||
- [x] Пользователь не получает новый визит раньше минимального кулдауна возврата.
|
||||
- [x] Если доступных возвращающихся пользователей нет, новый визит достаётся
|
||||
новому пользователю.
|
||||
- [ ] Размер активной популяции не растёт выше заданного потолка; при
|
||||
- [x] Размер активной популяции не растёт выше заданного потолка; при
|
||||
переполнении вытесняется давно неактивный пользователь без активного визита.
|
||||
|
||||
## Blocked by
|
||||
@@ -33,3 +33,17 @@ Status: ready-for-agent
|
||||
|
||||
## Comments
|
||||
|
||||
2026-06-11: реализовано через ограниченную популяцию в `TickStreamGenerator`.
|
||||
Профиль пользователя переиспользуется между визитами, активный пользователь не
|
||||
получает второй визит, после завершения действует `GEN_MIN_RETURN_MINUTES`.
|
||||
Если доступных возвратов нет или срабатывает `GEN_P_NEW_USER`, создаётся новый
|
||||
пользователь с вытеснением давно неактивного профиля без роста выше
|
||||
`GEN_POPULATION_MAX`.
|
||||
|
||||
Проверка: `uv run --with-requirements generator/requirements.txt pytest
|
||||
generator/tests -q` — 88 passed. В песочнице `/snap/bin/uv` падает на
|
||||
`snap-confine`, поэтому полный pytest запускался вне песочницы.
|
||||
|
||||
После свежего ревью исправлены две детали: UUID теперь создаются через единый
|
||||
ГПСЧ генератора, а кулдаун пользователя начинается от запланированного времени
|
||||
последнего события визита, а не от времени позднего тика.
|
||||
|
||||
Reference in New Issue
Block a user