V1.23.24 Externalisation des prompts et évolutions des collaborateurs

This commit is contained in:
2026-09-11 20:25:48 +00:00
parent 05df1c5a28
commit bac56b85a0
17 changed files with 787 additions and 162 deletions
+13 -10
View File
@@ -94,7 +94,7 @@ $method = $_SERVER['REQUEST_METHOD'];
if ($method === 'GET') {
try {
$stmt = $pdo->query(
'SELECT AGN_Incr, AGN_Prenom, AGN_Fonction, AGN_Photo, AGN_Couleur, AGN_Identite, AGN_Experience
'SELECT AGN_Incr, AGN_Prenom, AGN_Fonction, AGN_Photo, AGN_Couleur, AGN_Identite, AGN_Experience, AGN_Relationnel
FROM ASP_Agents ORDER BY AGN_OrdreAffichage ASC'
);
echo json_encode(['collaborateurs' => $stmt->fetchAll()]);
@@ -109,15 +109,18 @@ if ($method === 'PUT') {
$data = json_decode(file_get_contents('php://input'), true) ?? [];
$incr = (int) ($data['AGN_Incr'] ?? 0);
// Un seul des deux champs à la fois dans le corps de la requête — jamais
// les deux ensemble côté front (voir champActif dans ecran_fond.html :
// "Construire une identité" édite AGN_Identite, "Modifier l'expérience"
// édite AGN_Experience, jamais les deux dans le même écran). Whitelist
// stricte plutôt qu'un nom de colonne construit depuis une clé arbitraire
// du JSON reçu, même si en pratique cette donnée ne vient jamais
// d'ailleurs que du front interne — même esprit défensif que le reste du
// projet (voir contacts.php, contact_ia_interprete.php).
$champsAutorises = ['AGN_Identite', 'AGN_Experience'];
// Un seul des champs à la fois dans le corps de la requête — jamais
// plusieurs ensemble côté front (voir champActif dans bo_collaborateurs.html :
// un onglet par champ — Identité/Expérience/Relationnel — jamais deux
// édités dans le même appel). AGN_Relationnel (11 septembre 2026) : posture
// relationnelle du collaborateur envers l'équipe, statique pour l'instant
// — distincte d'AGN_Identite (caractère individuel) et d'AGN_Experience
// (qui s'enrichit par append, voir collaborateur_experience_append.php).
// Whitelist stricte plutôt qu'un nom de colonne construit depuis une clé
// arbitraire du JSON reçu, même si en pratique cette donnée ne vient
// jamais d'ailleurs que du front interne — même esprit défensif que le
// reste du projet (voir contacts.php, contact_ia_interprete.php).
$champsAutorises = ['AGN_Identite', 'AGN_Experience', 'AGN_Relationnel'];
$champ = null;
foreach ($champsAutorises as $c) {
if (array_key_exists($c, $data)) {