Files
clickstream-ch-kafka-supers…/generator/generator.py
T
ddadmin d5408f28e9 feat(generator): добавлена стартовая история через backfill
- Зачем:
  - стенду нужна повторяемая история с живым продолжением от модельной границы без дублей и разрыва визитов.
- Что:
  - добавлен backfill-режим с `GEN_MODEL_T_END`, manifest и state на `T_end`.
  - live-запуск восстанавливается из manifest без настенной дельты и проверяет совместимость state.
  - добавлены SQL-проверки формы данных, повторяемости и стыка backfill с live.
- Проверка:
  - make generator-test.
  - два чистых ClickHouse-прогона backfill дали одинаковые manifest checksums и digest.
  - reviewer gate issue 05 пройден после исправлений state/manifest.
2026-06-14 19:45:58 +03:00

79 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,
KafkaStartupHistoryManifest,
_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",
"KafkaStartupHistoryManifest",
"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()