#!/usr/bin/env bash
set -euo pipefail

API_URL="${API_URL:-http://localhost:8010/api/v1}"

echo "=== Recarregando Ranking de Consultores CAPES ==="
echo ""

STATUS_CHECK=$(curl -s "${API_URL}/ranking/status")
JA_RODANDO=$(echo "$STATUS_CHECK" | python3 -c "import sys,json; print(json.load(sys.stdin).get('running', False))" 2>/dev/null || echo "False")

if [ "$JA_RODANDO" = "True" ]; then
  echo "[!] Job já em execução - acompanhando progresso existente..."
else
  echo "[1/2] Disparando job (limpar_antes=true)..."
  RESP=$(curl -s -X POST "${API_URL}/ranking/processar" \
    -H "Content-Type: application/json" \
    -d '{"limpar_antes": true}')

  if echo "$RESP" | grep -q '"sucesso":true'; then
    echo "  ✓ Job iniciado com sucesso"
  else
    echo "  ✗ Erro ao iniciar job: $RESP"
    exit 1
  fi
fi

echo ""
echo "[2/2] Acompanhando progresso..."
echo ""

while true; do
  STATUS=$(curl -s "${API_URL}/ranking/status")

  RUNNING=$(echo "$STATUS" | python3 -c "import sys,json; print(json.load(sys.stdin).get('running', False))" 2>/dev/null || echo "False")
  PROCESSADOS=$(echo "$STATUS" | python3 -c "import sys,json; print(json.load(sys.stdin).get('processados', 0))" 2>/dev/null || echo "0")
  TOTAL=$(echo "$STATUS" | python3 -c "import sys,json; print(json.load(sys.stdin).get('total', 0))" 2>/dev/null || echo "0")
  PROGRESS=$(echo "$STATUS" | python3 -c "import sys,json; print(json.load(sys.stdin).get('progress', 0))" 2>/dev/null || echo "0")
  MSG=$(echo "$STATUS" | python3 -c "import sys,json; print(json.load(sys.stdin).get('mensagem', ''))" 2>/dev/null || echo "")

  BARRA=""
  PROGRESS_INT=${PROGRESS%.*}
  PREENCHIDO=$((PROGRESS_INT / 5))
  VAZIO=$((20 - PREENCHIDO))
  for ((i=0; i<PREENCHIDO; i++)); do BARRA+="█"; done
  for ((i=0; i<VAZIO; i++)); do BARRA+="░"; done

  printf "\r  [%s] %5.1f%% | %s/%s | %s" "$BARRA" "$PROGRESS" "$PROCESSADOS" "$TOTAL" "$MSG"

  if [ "$RUNNING" = "False" ]; then
    echo ""
    break
  fi

  sleep 3
done

echo ""
echo "=== Concluído ==="

STATS=$(curl -s "${API_URL}/ranking/estatisticas" 2>/dev/null || echo "{}")
if [ "$STATS" != "{}" ]; then
  echo ""
  echo "Estatísticas:"
  echo "$STATS" | python3 -c "
import sys, json
data = json.load(sys.stdin)
print(f\"  Total consultores: {data.get('total_consultores', 'N/A'):,}\")
print(f\"  Com pontuação:     {data.get('com_pontuacao', 'N/A'):,}\")
print(f\"  Pontuação máxima:  {data.get('pontuacao_maxima', 'N/A')}\")
print(f\"  Pontuação média:   {data.get('pontuacao_media', 'N/A'):.2f}\")
" 2>/dev/null || echo "  (não foi possível obter estatísticas)"
fi

echo ""
echo "Pronto!"
