feat(generator): добавлена модель связанного визита
- Зачем: - генератор должен создавать учебно полезный визит с общим click_id, правдоподобным путём и честным тиковым бюджетом событий. - Что: - добавлена марковская цепочка страниц, запланированные метки времени и потолок GEN_MAX_SESSION_EVENTS. - добавлен набор тикового батча из нескольких визитов до рассчитанного бюджета событий. - обновлены тесты, README, KNOWN_ISSUES и статусы задач 01/02. - Проверка: - uv run --with pytest --with-requirements generator/requirements.txt pytest generator/tests -q
This commit is contained in:
+12
-6
@@ -1,9 +1,10 @@
|
||||
# Генератор событий (MVP rev5)
|
||||
|
||||
> ⚠️ **Перед использованием как источник витрин — прочитать
|
||||
> [KNOWN_ISSUES.md](./KNOWN_ISSUES.md).** Генеративная модель сущностей неверна
|
||||
> (свежий `click_id` на каждое событие ломает семантику визита/сессии); ветка
|
||||
> не влита в `main` именно поэтому. Математику интенсивности это не затрагивает.
|
||||
> Перед использованием как источник витрин прочитать
|
||||
> [KNOWN_ISSUES.md](./KNOWN_ISSUES.md): часть старого дефекта уже исправлена
|
||||
> (один `click_id` на визит, путь по страницам, монотонное время), но популяция
|
||||
> возвращающихся пользователей и полноценное состояние активных визитов ещё
|
||||
> остаются следующими шагами.
|
||||
|
||||
Автономный генератор событий для Kafka с режимом `steady-stream`.
|
||||
|
||||
@@ -19,13 +20,17 @@ generator-service -> Kafka topics -> (потребители отдельно)
|
||||
|
||||
- Публикуем постепенно, **короткими тиками** (по умолчанию каждые 5 секунд)
|
||||
- На каждом тике отправляем небольшую порцию сообщений
|
||||
- Держим целевую интенсивность `events/min` без крупных минутных batch
|
||||
- Держим целевую интенсивность `events/min` без крупных минутных batch: тик
|
||||
набирается из одного или нескольких визитов до рассчитанного бюджета событий
|
||||
- Распределяем события по 4 топикам:
|
||||
- `browser_events`
|
||||
- `location_events`
|
||||
- `device_events`
|
||||
- `geo_events`
|
||||
- Сохраняем связи `event_id <-> location`, `click_id <-> device/geo`
|
||||
- Публичный вызов генеративного ядра строит один визит: общий `click_id`,
|
||||
разные `event_id`, общий device/geo-контекст, путь по страницам воронки и
|
||||
строго растущие запланированные `event_timestamp`.
|
||||
- Сохраняем связи `event_id <-> location`, `click_id <-> device/geo`.
|
||||
|
||||
## Конфигурация (env)
|
||||
|
||||
@@ -37,6 +42,7 @@ generator-service -> Kafka topics -> (потребители отдельно)
|
||||
| `GEN_JITTER_PCT` | Процент вариативности | `20` |
|
||||
| `GEN_MIN_EVENTS_PER_TICK` | Минимум событий за тик | `5` |
|
||||
| `GEN_MAX_EVENTS_PER_TICK` | Максимум событий за тик | `50` |
|
||||
| `GEN_MAX_SESSION_EVENTS` | Потолок длины одного визита, защита от петель | `30` |
|
||||
| `GEN_DATA_DIR` | Путь к JSONL файлам | `/data` |
|
||||
| `GEN_SEED` | Сид для воспроизводимости | — |
|
||||
| `GEN_ENABLED` | Включить генерацию | `true` |
|
||||
|
||||
Reference in New Issue
Block a user