#!/usr/bin/env bash # # Проверяет, что новый мир генератора не смешается со старым. set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" REPO_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)" COMPOSE_BIN="${COMPOSE_BIN:-docker compose}" KAFKA_BOOTSTRAP_SERVERS_HOST="${KAFKA_BOOTSTRAP_SERVERS_HOST:-localhost:9092}" GENERATOR_METRICS_URL_HOST="${GENERATOR_METRICS_URL_HOST:-http://localhost:9109/metrics}" CLICKHOUSE_SERVICE="${CLICKHOUSE_SERVICE:-clickhouse}" CLICKHOUSE_DB="${CLICKHOUSE_DB:-default}" CLICKHOUSE_USER="${CLICKHOUSE_USER:-default}" CLICKHOUSE_PASSWORD="${CLICKHOUSE_PASSWORD:-123456}" CHECK_MODE="${1:-clean}" cd "${REPO_ROOT}" if [[ "${CHECK_MODE}" != "clean" && "${CHECK_MODE}" != "continue" ]]; then echo "Ошибка: неизвестный режим предпроверки: ${CHECK_MODE}" >&2 exit 2 fi if [[ "${CHECK_MODE}" == "clean" ]]; then echo "Предпроверка: live-генератор не должен быть запущен." PYTHONPATH="${REPO_ROOT}/generator/src" \ uv run --with-requirements generator/requirements.txt \ python -m clickstream_generator.stand_clean \ --mode live \ --live-metrics-url "${GENERATOR_METRICS_URL_HOST}" fi echo "Предпроверка: Kafka data-топики и STG должны быть пустыми или state совместим." if ! stg_counts="$(${COMPOSE_BIN} exec -T "${CLICKHOUSE_SERVICE}" clickhouse-client \ --user="${CLICKHOUSE_USER}" \ --password="${CLICKHOUSE_PASSWORD}" \ --database="${CLICKHOUSE_DB}" \ --format=TSV \ --query " SELECT (SELECT count() FROM stg.browser_raw) AS browser_raw, (SELECT count() FROM stg.location_raw) AS location_raw, (SELECT count() FROM stg.device_raw) AS device_raw, (SELECT count() FROM stg.geo_raw) AS geo_raw ")"; then echo "Ошибка: не удалось проверить STG через ClickHouse." >&2 echo "Проверьте, что ClickHouse запущен и DDL применён: make ddl" >&2 echo "${stg_counts}" >&2 exit 1 fi KAFKA_BOOTSTRAP_SERVERS="${KAFKA_BOOTSTRAP_SERVERS_HOST}" \ GEN_DATA_DIR="${REPO_ROOT}/data" \ PYTHONPATH="${REPO_ROOT}/generator/src" \ uv run --with-requirements generator/requirements.txt \ python -m clickstream_generator.stand_clean \ --mode "${CHECK_MODE}" \ --kafka-bootstrap-servers "${KAFKA_BOOTSTRAP_SERVERS_HOST}" \ --stg-counts "${stg_counts}"