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.
This commit is contained in:
Dmitry Dementiev
2026-06-11 15:00:50 +03:00
parent 48e3bf2900
commit 642789d484
19 changed files with 1297 additions and 1189 deletions
@@ -1,4 +1,4 @@
Status: ready-for-agent
Status: ready-for-human
# Уборка сервиса генератора перед активными визитами
@@ -13,20 +13,20 @@ Status: ready-for-agent
## Acceptance criteria
- [ ] Генеративная модель визита отделена от Kafka, состояния, метрик и
- [x] Генеративная модель визита отделена от Kafka, состояния, метрик и
сервисного цикла.
- [ ] Код загрузки и индексации JSONL-сида вынесен из сервисного слоя.
- [ ] Расчёт интенсивности отделён от генерации одного визита.
- [ ] Kafka publisher, Kafka-state и создание служебных топиков не смешаны с
- [x] Код загрузки и индексации JSONL-сида вынесен из сервисного слоя.
- [x] Расчёт интенсивности отделён от генерации одного визита.
- [x] Kafka publisher, Kafka-state и создание служебных топиков не смешаны с
генеративной моделью.
- [ ] `generator/generator.py` остаётся тонкой точкой входа или совместимым
- [x] `generator/generator.py` остаётся тонкой точкой входа или совместимым
фасадом, чтобы не ломать запуск и тесты без причины.
- [ ] `generate_tick_batch()` не остаётся в чистой генеративной модели визита:
- [x] `generate_tick_batch()` не остаётся в чистой генеративной модели визита:
он вынесен в переходный тиковый слой и подготовлен к замене активными визитами
в задаче 03.
- [ ] Dockerfile и запуск контейнера обновлены под новую структуру файлов.
- [ ] Все существующие тесты генератора проходят.
- [ ] README генератора кратко отражает новую структуру файлов.
- [x] Dockerfile и запуск контейнера обновлены под новую структуру файлов.
- [x] Все существующие тесты генератора проходят.
- [x] README генератора кратко отражает новую структуру файлов.
## Non-goals
@@ -50,3 +50,7 @@ Status: ready-for-agent
Задача появилась после разбора распухания сервиса: первые два среза уже внесли
новую модель визита, а третий срез добавит состояние активных визитов. Перед ним
нужно отделить модель, тиковый слой и Kafka-интеграцию.
2026-06-11: исходники перенесены не россыпью в `generator/`, а в пакет
`generator/src/clickstream_generator/`. `generator/generator.py` оставлен тонким
фасадом и точкой входа для совместимости.