#!/usr/bin/env bash
# 大量取得の前に必ず実行するスモークテスト（数分・数十件）。
# 合格: トンネル OK + raw 増加 +（可能なら）races 増加を確認してから本番取得へ。
#
#   ./scripts/jv_smoke_test.sh
#   ./scripts/jv_smoke_test.sh 20240101 50
#
set -euo pipefail

ROOT="$(cd "$(dirname "$0")/.." && pwd)"
# shellcheck source=/dev/null
source "${ROOT}/scripts/jv_load_env.sh"
cd "$ROOT"
export PYTHONPATH="${ROOT}${PYTHONPATH:+:$PYTHONPATH}"

FROM_DT="${1:-20240101}"
MAX="${2:-50}"
PY=(python3.11)
command -v "${PY[0]}" &>/dev/null || PY=(python3)
EXTRA=()
if [[ -n "${JV_FETCH_EXTRA:-}" ]]; then
  # shellcheck disable=SC2206
  EXTRA=(${JV_FETCH_EXTRA})
fi

echo "=== JV smoke test from=${FROM_DT} max=${MAX} ==="

if ! "${PY[@]}" scripts/jv_link_tcp_healthcheck.py; then
  echo "FAIL: tunnel"
  exit 2
fi

RAW_B=$(mysql keiba_ai -N -e "SELECT COUNT(*) FROM jv_raw_records;")
RACES_B=$(mysql keiba_ai -N -e "SELECT COUNT(*) FROM races WHERE circuit='JRA';")
ID_B=$(mysql keiba_ai -N -e "SELECT COALESCE(MAX(id),0) FROM jv_raw_records;")

echo "before: raw=${RAW_B} races_jra=${RACES_B} max_id=${ID_B}"

if ! "${PY[@]}" collectors/fetch_jv_raw.py \
  "${EXTRA[@]}" --host "${JVLINK_SERVER_HOST:-127.0.0.1}" --port "${JVLINK_SERVER_PORT:-18765}" \
  --from-datetime "$FROM_DT" --dataspec RACE --option 1 --max-records "$MAX"; then
  echo "FAIL: fetch"
  exit 3
fi

RAW_A=$(mysql keiba_ai -N -e "SELECT COUNT(*) FROM jv_raw_records;")
ADDED=$((RAW_A - RAW_B))
echo "fetch: raw +${ADDED}"
mysql keiba_ai -N -e \
  "SELECT record_type, COUNT(*) c FROM jv_raw_records WHERE id>${ID_B} GROUP BY record_type ORDER BY c DESC;"

if (( ADDED == 0 )); then
  echo "FAIL: raw が増えていない"
  exit 4
fi

RA_NEW=$(mysql keiba_ai -N -e \
  "SELECT COUNT(*) FROM jv_raw_records WHERE id>${ID_B} AND record_type='RA';")
if (( RA_NEW > 0 )); then
  echo "normalize: RA ${RA_NEW} 件のみ試行"
  FROM_N=$((ID_B + 1))
  "${PY[@]}" collectors/normalize_jv_raw.py --from-id "$FROM_N" --batch-size 500
  RACES_A=$(mysql keiba_ai -N -e "SELECT COUNT(*) FROM races WHERE circuit='JRA';")
  echo "races_jra: ${RACES_B} -> ${RACES_A} (delta $((RACES_A - RACES_B)))"
else
  echo "WARN: 今回の ${MAX} 件に RA なし（JG/SE 等のみ）。本番は年単位・無制限で RA が混ざる。"
  RACES_A=$RACES_B
fi

echo "PASS smoke (tunnel OK, raw +${ADDED}). 本番: jv_fetch_2020_to_now.sh は smoke 後にのみ実行。"
