- Зачем: - поток генератора должен соответствовать модели интенсивности и профилю сида перед реализацией состояния версии 2. - Что: - событийный бюджет тика переведён в рождения визитов через ожидаемую среднюю длину визита. - дефолты интенсивности и обычный docker-compose запуск синхронизированы с целевыми 30 событиями в минуту. - добавлены статистические проверки длины визита, воронки, новых пользователей, межсессионных пауз и долгого окна потока. - обновлены README, OPERATIONS и карточка задачи 05. - Проверка: - uv run --with-requirements generator/requirements.txt pytest generator/tests -q. - git diff --check.
77 lines
2.1 KiB
Python
77 lines
2.1 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Совместимый фасад и точка входа генератора.
|
|
|
|
Основной код разнесён по модулям рядом с этим файлом. Старые импорты вида
|
|
`from generator import Config` сохраняются для тестов и внешних запусков.
|
|
"""
|
|
|
|
import logging
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
|
|
SRC_DIR = Path(__file__).resolve().parent / "src"
|
|
if str(SRC_DIR) not in sys.path:
|
|
sys.path.insert(0, str(SRC_DIR))
|
|
|
|
from clickstream_generator.config import Config
|
|
from clickstream_generator.dictionary import EventDictionary
|
|
from clickstream_generator.generation import EXPECTED_VISIT_EVENTS, EventGenerator
|
|
from clickstream_generator.intensity import calculate_events_count, hour_factor
|
|
from clickstream_generator.kafka_io import (
|
|
BatchRecord,
|
|
KafkaBatchHistory,
|
|
KafkaPublisher,
|
|
KafkaStateManager,
|
|
_import_kafka,
|
|
_with_retry,
|
|
ensure_topics,
|
|
)
|
|
from clickstream_generator.metrics import (
|
|
METRICS_ERRORS_TOTAL,
|
|
METRICS_EVENTS_TOTAL,
|
|
METRICS_LAST_SUCCESS,
|
|
METRICS_TICK_DURATION,
|
|
)
|
|
from clickstream_generator.runtime import TickStreamGenerator, generate_tick_batch
|
|
from clickstream_generator.service import GeneratorService, main
|
|
from clickstream_generator.state import GeneratorState, _nested_list_to_tuple
|
|
|
|
|
|
logging.basicConfig(
|
|
level=logging.INFO,
|
|
format="%(asctime)s - %(levelname)s - %(message)s",
|
|
datefmt="%Y-%m-%d %H:%M:%S",
|
|
)
|
|
|
|
__all__ = [
|
|
"BatchRecord",
|
|
"Config",
|
|
"EventDictionary",
|
|
"EventGenerator",
|
|
"EXPECTED_VISIT_EVENTS",
|
|
"GeneratorService",
|
|
"GeneratorState",
|
|
"KafkaBatchHistory",
|
|
"KafkaPublisher",
|
|
"KafkaStateManager",
|
|
"METRICS_ERRORS_TOTAL",
|
|
"METRICS_EVENTS_TOTAL",
|
|
"METRICS_LAST_SUCCESS",
|
|
"METRICS_TICK_DURATION",
|
|
"TickStreamGenerator",
|
|
"_import_kafka",
|
|
"_nested_list_to_tuple",
|
|
"_with_retry",
|
|
"calculate_events_count",
|
|
"ensure_topics",
|
|
"generate_tick_batch",
|
|
"hour_factor",
|
|
"main",
|
|
]
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|