API réception alertes chute (SmartEye/YOLO), analyse IA (Gemini 2.5 Flash), gestion alertes avec escalade (watchdog), notifications Firebase, dashboard web, documentation MkDocs. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
54 lines
1.6 KiB
Python
54 lines
1.6 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
SmartEye SENTINEL - Handler d'Acquittement
|
|
============================================
|
|
Appelé par alert_ack.php pour mettre à jour le statut d'une alerte.
|
|
|
|
Usage : python3 alert_ack_handler.py <alert_id> <status> [detail]
|
|
|
|
Auteur : Unigest Solutions / SmartEye V30
|
|
"""
|
|
|
|
import sys
|
|
import json
|
|
|
|
sys.path.insert(0, '/var/www/lucas')
|
|
from alert_manager import mettre_a_jour_statut, get_alerte, AlertStatus
|
|
|
|
def main():
|
|
if len(sys.argv) < 3:
|
|
print(json.dumps({"success": False, "error": "Usage: alert_ack_handler.py <alert_id> <status> [detail]"}))
|
|
sys.exit(1)
|
|
|
|
alert_id = sys.argv[1]
|
|
status = sys.argv[2].upper()
|
|
detail = sys.argv[3] if len(sys.argv) > 3 else None
|
|
|
|
# Vérifier que l'alerte existe
|
|
alerte = get_alerte(alert_id)
|
|
if not alerte:
|
|
print(json.dumps({
|
|
"success": False,
|
|
"error": f"Alerte {alert_id} non trouvée (peut-être déjà résolue ou expirée)"
|
|
}))
|
|
sys.exit(0)
|
|
|
|
# Mettre à jour
|
|
result = mettre_a_jour_statut(alert_id, status, detail)
|
|
|
|
if result:
|
|
print(json.dumps({
|
|
"success": True,
|
|
"message": f"Alerte {alert_id[:8]}... mise à jour : {status}",
|
|
"alert_id": alert_id,
|
|
"new_status": status,
|
|
"previous_status": alerte.get("status", "?")
|
|
}))
|
|
else:
|
|
print(json.dumps({
|
|
"success": False,
|
|
"error": f"Impossible de passer au statut {status} (statut actuel: {alerte.get('status', '?')})"
|
|
}))
|
|
|
|
if __name__ == "__main__":
|
|
main() |