#!/usr/bin/env bash
# keiba.db から確定オッズを取込み、カバレッジを表示。p6 再予想は --repredict で。
#
#   ./scripts/backfill_odds_pipeline.sh /root/keiba.db
#   ./scripts/backfill_odds_pipeline.sh /root/keiba.db --repredict
#
set -euo pipefail
KEIBA_DB="${1:?usage: backfill_odds_pipeline.sh /path/to/keiba.db [--repredict]}"
REPREDICT=0
if [[ "${2:-}" == "--repredict" ]]; then
  REPREDICT=1
fi

ROOT="$(cd "$(dirname "$0")/.." && pwd)"
cd "$ROOT"

if [[ ! -f "$KEIBA_DB" ]]; then
  echo "keiba.db not found: $KEIBA_DB" >&2
  exit 1
fi

echo "=== keiba.db NL_O1 coverage ==="
python3 scripts/check_keiba_o1_coverage.py --sqlite "$KEIBA_DB" || true

echo "=== MySQL before ==="
RACES_BEFORE=$(mysql keiba_ai -N -e "SELECT COUNT(*) FROM races;")
ODDS_RACES_BEFORE=$(mysql keiba_ai -N -e "SELECT COUNT(DISTINCT race_id) FROM odds_lines WHERE odds_type='tansho';")
echo "races=$RACES_BEFORE odds_races=$ODDS_RACES_BEFORE"

echo "=== import odds ==="
./scripts/import_keiba_odds.sh "$KEIBA_DB" 2020 2026

RACES_AFTER=$(mysql keiba_ai -N -e "SELECT COUNT(*) FROM races;")
ODDS_RACES_AFTER=$(mysql keiba_ai -N -e "SELECT COUNT(DISTINCT race_id) FROM odds_lines WHERE odds_type='tansho';")
ODDS_LINES=$(mysql keiba_ai -N -e "SELECT COUNT(*) FROM odds_lines WHERE odds_type='tansho';")
PCT=$((ODDS_RACES_AFTER * 100 / (RACES_AFTER > 0 ? RACES_AFTER : 1)))

echo "=== MySQL after ==="
echo "races=$RACES_AFTER odds_races=$ODDS_RACES_AFTER (${PCT}%) odds_lines=$ODDS_LINES"

if (( ODDS_RACES_AFTER < RACES_AFTER * 80 / 100 )); then
  echo "WARN: オッズがレース数の80%未満です。keiba.db の NL_O1 を Windows で再取得してください。" >&2
  echo "  scripts/windows/jrvltsql_refetch_o1_and_upload.bat" >&2
  exit 2
fi

if (( REPREDICT == 1 )); then
  echo "=== repredict p6_latest ==="
  ./scripts/repredict_p6_after_odds.sh
fi

echo "OK: odds pipeline complete"
