_seraitDeclenchee" de la fonction elle-même (voir en-tête de * consignes_fonctions.php) ; cet endpoint se contente d'interroger * auMoinsUneConsigneIaSeraitDeclenchee() (moteur_consignes.php), qui parcourt * les consignes actives et appelle ces jumeaux — rien d'autre. * * Le front-end (liste_contacts.html, validerFormulaireContact()) appelle cet * endpoint AVANT l'enregistrement réel (POST/PUT vers contacts.php), pour * savoir s'il doit afficher le badge IA pendant l'attente de la réponse. * Un enregistrement qui ne déclenche aucune IA reste donc instantané à * l'écran, sans badge — exigence explicite de Jean-Marc ("hors de question * d'afficher systématiquement le badge IA, alors qu'il n'y est pas fait * appel"). * * Entrée JSON : { "contexte": "Contacts", "portee": "Création"|"Modification", * "donnees": { ...valeurs actuelles du formulaire... } } * Sortie JSON : { "declenche": true|false } * * Accès réservé aux utilisateurs identifiés, même principe que contacts.php. * Toujours POST (l'objet "donnees" peut contenir des champs qui n'ont pas * leur place dans une query string). Ne touche jamais à $_SESSION au-delà de * la vérification d'identification, et n'écrit jamais en base. */ session_start(); header('Content-Type: application/json; charset=utf-8'); require __DIR__ . '/db.php'; require __DIR__ . '/consignes_fonctions.php'; require __DIR__ . '/moteur_consignes.php'; // Accès réservé aux utilisateurs identifiés (session ouverte par aspic.php). if (empty($_SESSION['USR_Code'])) { http_response_code(401); echo json_encode(['error' => 'Non identifié — veuillez vous connecter.']); exit; } if ($_SERVER['REQUEST_METHOD'] !== 'POST') { http_response_code(405); echo json_encode(['error' => 'Méthode non autorisée']); exit; } $corps = json_decode(file_get_contents('php://input'), true); if (!is_array($corps)) { $corps = []; } $contexte = trim((string)($corps['contexte'] ?? '')); $portee = trim((string)($corps['portee'] ?? '')); $donnees = is_array($corps['donnees'] ?? null) ? $corps['donnees'] : []; if ($contexte === '' || $portee === '') { http_response_code(400); echo json_encode(['error' => 'Paramètres "contexte" et "portee" obligatoires']); exit; } try { $pdo = getDbConnection(); } catch (PDOException $e) { http_response_code(500); echo json_encode(['error' => 'Connexion base de données impossible']); exit; } try { $declenche = auMoinsUneConsigneIaSeraitDeclenchee($pdo, $contexte, $portee, $donnees); } catch (Throwable $e) { // Repli prudent : en cas de souci imprévu, on répond "pas de badge" plutôt // que de faire échouer l'écran pour un simple indicateur visuel — même // philosophie de robustesse que les fonctions IA elles-mêmes (voir // consignes_fonctions.php). $declenche = false; } echo json_encode(['declenche' => $declenche]);