Files
clickstream-ch-kafka-supers…/.scratch/feature-data-generator/issues/02-5-generator-service-cleanup.md
T
Dmitry Dementiev 642789d484 refactor(generator): разнесён сервис генератора по src-пакету
- Зачем:
  - перед активными визитами нужно отделить генеративную модель от 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.
2026-06-11 15:00:50 +03:00

57 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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` оставлен тонким
фасадом и точкой входа для совместимости.