#!/bin/bash
#
# Lintello — Crawl L'dicO : pipeline nocturne complet (OVH mutualisé)
# Enchaîne : analyze (30j) -> run (100) -> enrich (50) -> check (alertes email)
#
# Remplace le worker Symfony Messenger (impossible en mutualisé : pas de process 24/7).
# Reprend exactement les commandes du CrawlScheduleProvider (tâche 'nightly').
#
# === Installation OVH (manager) ===
#   1. CHMOD 755 sur ce fichier
#   2. Manager OVH > Hébergement > Tâches planifiées (Cron) > Ajouter
#      - Commande : /home/LOGIN/www/cron_scripts/crawl-nightly.sh   (chemin absolu, SANS ":")
#      - Langage  : Autre / Other
#      - Fréquence : tous les jours à 02h00  (réglée dans l'interface OVH)
#   3. Adapter PHP_BIN et PROJECT_DIR ci-dessous au déploiement.
#
# NB : les ":" des commandes Symfony sont ici, à l'intérieur du .sh — OVH ne voit
#      que le chemin du script, donc pas de problème de deux-points.

set -u

# --- À ADAPTER au déploiement OVH ---------------------------------------------
PHP_BIN="/usr/local/php8.3/bin/php"   # binaire PHP CLI OVH (choisir la version du projet)
PROJECT_DIR="/home/LOGIN/www"         # racine du projet Symfony sur OVH
APP_ENV="prod"                        # environnement Symfony
# ------------------------------------------------------------------------------

LOG_DIR="$PROJECT_DIR/var/log/cron"
LOG="$LOG_DIR/crawl-nightly.log"
mkdir -p "$LOG_DIR"

cd "$PROJECT_DIR" || { echo "[$(date '+%F %T')] ERREUR: cd $PROJECT_DIR impossible" >> "$LOG"; exit 1; }

echo "========== [$(date '+%F %T')] DÉBUT crawl nightly ==========" >> "$LOG"

run() {
  echo "---- [$(date '+%T')] console $*" >> "$LOG"
  "$PHP_BIN" bin/console "$@" --env="$APP_ENV" --no-interaction >> "$LOG" 2>&1
  echo "     (exit=$?)" >> "$LOG"
}

# Chaque étape est lancée indépendamment : même si une échoue, 'check' tourne
# et envoie les alertes email.
run app:crawl:analyze --days=30
run app:crawl:run --limit=100
run app:crawl:enrich --limit=50
run app:crawl:check

echo "========== [$(date '+%F %T')] FIN crawl nightly ==========" >> "$LOG"
