#!/usr/bin/env bash
# ============================================================================
# translate_gap.sh — Traduce el "gap" marzo→ahora de feadulta a EN/FR/IT/PT.
#
# Hace TODO de una vez: comprobaciones previas, traduce las 15 cartas semanales
# (marzo a junio) + sus artículos con Gemma local, remapea categorías y enseña
# el recuento final. Idempotente y REANUDABLE: re-ejecutar es seguro (salta lo
# ya traducido). NO publica nada (todo queda en borrador / draft).
#
# USO (un solo comando, en segundo plano):
#     nohup bash scripts/translate_gap.sh > /tmp/feadulta-gap.out 2>&1 &
# Y para ver el progreso:
#     tail -f /tmp/feadulta-gap.log
#
# Ver issue rafa/feadulta#75.
# ============================================================================
set -u

cd "$(dirname "$0")/.." || { echo "No puedo entrar en el repo"; exit 1; }

LOG=/tmp/feadulta-gap.log
LANGS="en,fr,it,pt"
# Cartas del gap (de más reciente a más antigua). Override opcional: CARTAS="45018" bash ...
CARTAS="${CARTAS:-45018 44997 44975 44230 44229 44228 44090 44089 44088 44087 44086 44085 44084 44083 42590}"

ts()  { date '+%Y-%m-%d %H:%M:%S'; }
say() { echo "[$(ts)] $*" | tee -a "$LOG"; }

say "================ INICIO batch del gap (draft) ================"

# 1) LM Studio + Gemma cargado
say "Preflight 1/2: LM Studio / Gemma..."
if ! curl -s --max-time 10 http://172.19.128.1:1234/v1/models 2>/dev/null | grep -q 'gemma-4-e4b'; then
  say "ERROR: LM Studio no responde o 'google/gemma-4-e4b' no está cargado."
  say "  -> En Windows: abre LM Studio, carga 'google/gemma-4-e4b', server en 0.0.0.0:1234."
  exit 1
fi
say "  OK: Gemma disponible."

# 2) Contenedores docker arriba
say "Preflight 2/2: contenedores docker..."
for cnt in wordpress-web wordpress-mysql; do
  if ! docker ps --format '{{.Names}}' | grep -qx "$cnt"; then
    say "ERROR: el contenedor '$cnt' no está arriba. Arranca el stack (docker compose up -d) y reintenta."
    exit 1
  fi
done
say "  OK: wordpress-web y wordpress-mysql arriba."

# 3) Traducir cada carta + sus artículos
N=$(echo $CARTAS | wc -w)
i=0
for c in $CARTAS; do
  i=$((i+1))
  say "=== Carta $c  ($i/$N)  ->  $LANGS  (draft) ==="
  python3 scripts/translate_post.py --carta "$c" --langs "$LANGS" --status draft 2>&1 | tee -a "$LOG"
done

# 4) Remap de categorías (idempotente, sin Gemma): mete cada traducción en la
#    categoría de su idioma (arregla el archivo de carta por idioma).
say "Remapeando categorías de todas las traducciones..."
docker cp scripts/remap_translation_cats.php wordpress-web:/tmp/remap_translation_cats.php >/dev/null 2>&1
docker exec wordpress-web php /tmp/remap_translation_cats.php 2>&1 | tee -a "$LOG"

# 5) Recuento final por idioma
say "Recuento final de traducciones por idioma (meta traduccion_origen):"
docker exec wordpress-mysql mysql -uwordpress_user -pwordpress_pass wordpress_db -N -e "
SELECT t.slug, COUNT(*) FROM wp_postmeta m
JOIN wp_term_relationships tr ON m.post_id=tr.object_id
JOIN wp_term_taxonomy tt ON tr.term_taxonomy_id=tt.term_taxonomy_id AND tt.taxonomy='language'
JOIN wp_terms t ON tt.term_id=t.term_id
WHERE m.meta_key='traduccion_origen' GROUP BY t.slug;" 2>/dev/null | tee -a "$LOG"

say "================ FIN batch del gap ================"
say "Todo en DRAFT. No se ha publicado nada. Avisa a Rafa para revisar antes de publicar."
say "Log completo: $LOG"
