- Зачем: - перед активными визитами нужно отделить генеративную модель от Kafka, состояния и сервисного цикла. - Что: - перенесены модули генератора в пакет `src/clickstream_generator`. - `generator.py` оставлен фасадом и точкой входа с совместимыми импортами. - обновлены Dockerfile, тесты, README, спека и issue 02.5. - Проверка: - `docker build -t generator:test generator`. - `docker run --rm -v /home/dmitry/sources/clickstream-ch-kafka-superset-demo:/workspace -w /workspace/generator generator:test pytest tests/ -q`. - `python -m py_compile generator.py src/clickstream_generator/*.py` в Docker.
57 lines
3.3 KiB
Markdown
57 lines
3.3 KiB
Markdown
Status: ready-for-human
|
||
|
||
# Уборка сервиса генератора перед активными визитами
|
||
|
||
## What to build
|
||
|
||
Разнести текущий `generator/generator.py` на понятные модули, не меняя внешнее
|
||
поведение генератора. Цель — подготовить код к задаче 03, где появятся активные
|
||
визиты между тиками.
|
||
|
||
Источник решений: `docs/specs/2026-06-11-generator-service-cleanup.md`,
|
||
`docs/specs/2026-06-10-generator-math-model.md`, задачи 01-03 в этом каталоге.
|
||
|
||
## Acceptance criteria
|
||
|
||
- [x] Генеративная модель визита отделена от Kafka, состояния, метрик и
|
||
сервисного цикла.
|
||
- [x] Код загрузки и индексации JSONL-сида вынесен из сервисного слоя.
|
||
- [x] Расчёт интенсивности отделён от генерации одного визита.
|
||
- [x] Kafka publisher, Kafka-state и создание служебных топиков не смешаны с
|
||
генеративной моделью.
|
||
- [x] `generator/generator.py` остаётся тонкой точкой входа или совместимым
|
||
фасадом, чтобы не ломать запуск и тесты без причины.
|
||
- [x] `generate_tick_batch()` не остаётся в чистой генеративной модели визита:
|
||
он вынесен в переходный тиковый слой и подготовлен к замене активными визитами
|
||
в задаче 03.
|
||
- [x] Dockerfile и запуск контейнера обновлены под новую структуру файлов.
|
||
- [x] Все существующие тесты генератора проходят.
|
||
- [x] README генератора кратко отражает новую структуру файлов.
|
||
|
||
## Non-goals
|
||
|
||
- Не реализовывать активные визиты между тиками.
|
||
- Не добавлять популяцию пользователей и возвраты.
|
||
- Не вводить состояние версии 2.
|
||
- Не менять Kafka-топики и формат событий.
|
||
- Не удалять `generator_batch_history`, если отдельно не доказано, что он больше
|
||
не нужен.
|
||
|
||
## Blocked by
|
||
|
||
- `.scratch/feature-data-generator/issues/02-visit-page-path-and-monotonic-time.md`
|
||
|
||
## Blocks
|
||
|
||
- `.scratch/feature-data-generator/issues/03-tick-stream-with-active-visits.md`
|
||
|
||
## Comments
|
||
|
||
Задача появилась после разбора распухания сервиса: первые два среза уже внесли
|
||
новую модель визита, а третий срез добавит состояние активных визитов. Перед ним
|
||
нужно отделить модель, тиковый слой и Kafka-интеграцию.
|
||
|
||
2026-06-11: исходники перенесены не россыпью в `generator/`, а в пакет
|
||
`generator/src/clickstream_generator/`. `generator/generator.py` оставлен тонким
|
||
фасадом и точкой входа для совместимости.
|