#!/usr/bin/env bash
# ---------------------------------------------------------------------------
# Health-check Zammad : interroge l'endpoint monitoring (token'd) et sort en
# erreur si l'instance n'est pas saine. À brancher sur un poller externe
# (cron, UptimeRobot, healthchecks.io...) pour ALERTER en cas d'échec.
#
# Détecte notamment le risque #1 du projet : une des 7 boîtes IMAP qui casse
# (auth expirée...) et fait disparaître silencieusement des mails de devis, ou
# des jobs de fond en échec.
#
# SECRET : le token n'est PAS dans le repo. Le fournir via la variable d'env
# MONITORING_TOKEN (Zammad UI : Settings > System > Monitoring).
#
# Usage :
#   export MONITORING_TOKEN=...                         # requis
#   export ZAMMAD_URL=https://support.advmfr.com        # défaut: http://localhost:8080
#   ./healthcheck.sh
# Codes de sortie : 0 sain · 1 non sain · 2 endpoint injoignable.
# ---------------------------------------------------------------------------
set -euo pipefail

URL="${ZAMMAD_URL:-http://localhost:8080}"
: "${MONITORING_TOKEN:?Fournir MONITORING_TOKEN (Zammad: Settings > System > Monitoring)}"

resp="$(curl -fsS "$URL/api/v1/monitoring/health_check?token=$MONITORING_TOKEN")" || {
  echo "CRITICAL: endpoint santé injoignable ($URL)"
  exit 2
}

if printf '%s' "$resp" | grep -q '"healthy":true'; then
  echo "OK: $resp"
  exit 0
else
  echo "UNHEALTHY: $resp"
  exit 1
fi
