fix(generator): сохранена фактура визита при восстановлении

- Зачем:
  - визит после восстановления не должен менять браузер и источники перехода внутри одного click_id.
- Что:
  - добавлен base_click_id в state v3 для восстановления донора фактуры.
  - исправлено восстановление timestamp offset без потери микросекунд.
  - расширены тесты и стыковая проверка browser/source и device/os/geo.
- Проверка:
  - uv run --with-requirements generator/requirements.txt pytest generator/tests -q.
  - bash -n scripts/check_generated_analytics.sh.
  - git diff --cached --check.
This commit is contained in:
2026-07-04 21:46:23 +03:00
parent 0cbfe9b32e
commit e2d06841de
13 changed files with 464 additions and 77 deletions
+2 -2
View File
@@ -3,7 +3,7 @@
> **Статус (2026-06-11):** исторический дефект старой плоской генерации закрыт
> для режима `steady-stream`. Генератор строит визиты с общим `click_id`,
> монотонным временем событий, путём по страницам воронки, популяцией
> возвращающихся пользователей и состоянием v2 для активных визитов.
> возвращающихся пользователей и состоянием для активных визитов.
>
> Эта заметка больше не является предупреждением «генератор концептуально
> сломан». Она оставлена как учебный разбор старого дефекта и как место для
@@ -122,7 +122,7 @@ device_event = {**base_device, "click_id": new_click_id} # user_domain_i
времени.
3. **Время событий** внутри визита строго растёт и не прилипает к одному
`now()` для всего батча.
4. **Состояние v2** сохраняет популяцию, активные визиты, накопленный бюджет
4. **Состояние** сохраняет популяцию, активные визиты, накопленный бюджет
рождения визитов, номер тика и состояние ГПСЧ.
После этой переделки поток на длинном окне и при штатных параметрах даёт