#!/usr/bin/env bash # # Импортирует портативный артефакт стартовой истории в Kafka. set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" REPO_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)" COMPOSE_BIN="${COMPOSE_BIN:-docker compose}" ARTIFACT="${ARTIFACT:-/tmp/clickstream-startup-history.json}" GEN_SEED="${GEN_SEED:-4242}" GEN_MODEL_T0="${GEN_MODEL_T0:-2026-01-01T00:00:00+00:00}" GEN_MODEL_T_END="${GEN_MODEL_T_END:-2026-01-01T06:00:00+00:00}" GEN_MODEL_TIMEZONE="${GEN_MODEL_TIMEZONE:-UTC}" GEN_MODEL_TIME_SPEED="${GEN_MODEL_TIME_SPEED:-1}" GEN_TICK_SECONDS="${GEN_TICK_SECONDS:-60}" GEN_LAMBDA_BASE_PER_MIN="${GEN_LAMBDA_BASE_PER_MIN:-60}" GEN_JITTER_PCT="${GEN_JITTER_PCT:-0}" GEN_MIN_EVENTS_PER_TICK="${GEN_MIN_EVENTS_PER_TICK:-1}" GEN_MAX_EVENTS_PER_TICK="${GEN_MAX_EVENTS_PER_TICK:-1000}" cd "${REPO_ROOT}" if [[ ! -s "${ARTIFACT}" ]]; then echo "Ошибка: артефакт не найден или пуст: ${ARTIFACT}" >&2 exit 1 fi ARTIFACT_DIR="$(dirname "${ARTIFACT}")" ARTIFACT_FILE="$(basename "${ARTIFACT}")" echo "=== Импорт стартовой истории ===" echo "ARTIFACT=${ARTIFACT}" echo "GEN_SEED=${GEN_SEED}" echo "GEN_MODEL_T0=${GEN_MODEL_T0}" echo "GEN_MODEL_T_END=${GEN_MODEL_T_END}" echo "" echo "Шаг 1: запуск Kafka" ${COMPOSE_BIN} up -d kafka echo "Шаг 2: сборка образа генератора" ${COMPOSE_BIN} build generator echo "Шаг 3: воспроизведение артефакта в Kafka" ${COMPOSE_BIN} run --rm --no-deps \ -v "${ARTIFACT_DIR}:/startup-artifacts:ro" \ -e GEN_SEED="${GEN_SEED}" \ -e GEN_MODEL_T0="${GEN_MODEL_T0}" \ -e GEN_MODEL_T_END="${GEN_MODEL_T_END}" \ -e GEN_MODEL_TIMEZONE="${GEN_MODEL_TIMEZONE}" \ -e GEN_MODEL_TIME_SPEED="${GEN_MODEL_TIME_SPEED}" \ -e GEN_TICK_SECONDS="${GEN_TICK_SECONDS}" \ -e GEN_LAMBDA_BASE_PER_MIN="${GEN_LAMBDA_BASE_PER_MIN}" \ -e GEN_JITTER_PCT="${GEN_JITTER_PCT}" \ -e GEN_MIN_EVENTS_PER_TICK="${GEN_MIN_EVENTS_PER_TICK}" \ -e GEN_MAX_EVENTS_PER_TICK="${GEN_MAX_EVENTS_PER_TICK}" \ generator python -m clickstream_generator.startup_history_artifact import \ --artifact "/startup-artifacts/${ARTIFACT_FILE}" echo "Готово: артефакт воспроизведён в Kafka."