#!/bin/bash
#
# Lintello Prospect — SURVEILLANCE : alerte par mail quand le flux ne va pas.
#
# Contrôle, pour chaque ordre actif : la récolte du jour a-t-elle eu lieu, et si elle a
# livré moins que le quota, POURQUOI (l'entonnoir de HarvestRun désigne l'étape qui
# décroche). Contrôle aussi la file Messenger (messages bloqués / en échec définitif) et
# le compteur de consommation API.
#
# N'envoie un mail QUE s'il y a quelque chose à dire. Destinataire : ADMIN_ALERT_EMAIL.
#
# === Installation OVH (manager) ===
#   - Fréquence : UNE FOIS PAR JOUR, après la dernière deliveryHour des profils.
#     Avec deliveryHour = 8, un passage à 10h00 laisse le temps au worker de drainer.
#   - CHMOD 755. Commande = chemin absolu.
#
# ⚠️ NE SE TESTE PAS DEPUIS SSH. L'OVH mutualisé bride le TCP sortant vers l'extérieur en
#    session SSH, mais PAS en cron ni en web. Lancée à la main, la commande échoue sur le
#    Postgres du VPS (Connection refused) ET sur l'envoi Brevo : deux faux négatifs.
#    Vérifié le 30/07. Pour tester réellement : créer un cron temporaire toutes les 5 min
#    avec --force-send, puis lire var/log/cron/prospect-check.log et le supprimer.
#
#    La commande sort en ÉCHEC (exit 1) si le mail ne part pas — renseigner le champ
#    « Email » du cron OVH donne alors un second canal, le seul qui reste quand le premier
#    est mort.
#
# === Battement de cœur (recommandé) ===
#   Un deuxième cron HEBDOMADAIRE avec --force-send envoie un mail même quand tout va
#   bien. Sans lui, « pas de mail » reste ambigu entre « tout va bien » et « l'alerte
#   est cassée ». C'est le silence qui a coûté trois semaines le 07/07.
#     prospect-check.sh --force-send

set -u

# --- À ADAPTER au déploiement -------------------------------------------------
# ⚠️ OVH tourne en PHP 8.4 (le vendor refuse 8.3) : vérifier le chemin réel.
PHP_BIN="/usr/local/php8.4/bin/php"
PROJECT_DIR="/home/LOGIN/www"
APP_ENV="prod"
# ------------------------------------------------------------------------------

LOG_DIR="$PROJECT_DIR/var/log/cron"
LOG="$LOG_DIR/prospect-check.log"
mkdir -p "$LOG_DIR"

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

echo "---- [$(date '+%F %T')] prospect:check $*" >> "$LOG"
"$PHP_BIN" bin/console app:prospect:check --env="$APP_ENV" --no-interaction "$@" >> "$LOG" 2>&1
echo "     (exit=$?)" >> "$LOG"
