From 0f7437fa77cd084a9fa0a9fa248dc03bca3390db Mon Sep 17 00:00:00 2001 From: Jean-Marc Date: Tue, 8 Sep 2026 01:29:41 +0000 Subject: [PATCH] V1.15.17 Evolutions des consignes --- agent_notes.php | 5 +- agents.php | 9 +- aspic.php | 20 +- consignes_apercu.php | 90 +++++ consignes_fonctions.php | 250 +++++++++++++- contact_ia_interprete.php | 5 +- contact_ia_panel.js | 4 +- contacts.php | 79 ++++- ecran_fond.html | 309 ++++++++++++++--- ecran_fond.jpg | Bin 121784 -> 108930 bytes journal/ASPIC - Journal. Index.md | 8 +- journal/ASPIC - Reflexions strategiques.md | 50 +++ ...PIC-Journal. 30. Chantier des consignes.md | 30 +- liste_contacts.html | 258 +++++++++++++- micro.js | 4 +- moteur_consignes.php | 315 ++++++++++++++++-- realisations.php | 44 ++- version.php | 2 +- 18 files changed, 1361 insertions(+), 121 deletions(-) create mode 100644 consignes_apercu.php diff --git a/agent_notes.php b/agent_notes.php index 3bcb94a..692f7fb 100644 --- a/agent_notes.php +++ b/agent_notes.php @@ -105,12 +105,13 @@ if ($agent === '') { // marqué par défaut (ne devrait pas arriver en usage normal, simple // filet de sécurité pour ne jamais laisser CVX_AgentTraitant vide). try { + // AGN_Nom renommée AGN_Prenom en base (7 septembre 2026, nuit). $stmtDefaut = $pdo->query( - "SELECT AGN_Nom FROM ASP_Agents WHERE AGN_Defaut = 'O' ORDER BY AGN_Incr ASC LIMIT 1" + "SELECT AGN_Prenom FROM ASP_Agents WHERE AGN_Defaut = 'O' ORDER BY AGN_Incr ASC LIMIT 1" ); $agent = $stmtDefaut->fetchColumn(); if ($agent === false || $agent === '') { - $stmtPremier = $pdo->query('SELECT AGN_Nom FROM ASP_Agents ORDER BY AGN_Incr ASC LIMIT 1'); + $stmtPremier = $pdo->query('SELECT AGN_Prenom FROM ASP_Agents ORDER BY AGN_Incr ASC LIMIT 1'); $agent = $stmtPremier->fetchColumn(); } } catch (PDOException $e) { diff --git a/agents.php b/agents.php index ad28a7f..80a29dd 100644 --- a/agents.php +++ b/agents.php @@ -45,7 +45,14 @@ try { // Loulou"), utilisées par micro.js pour tolérer les confusions // récurrentes de la reconnaissance vocale sans avoir à modifier le // code à chaque fois — colonne éditable directement par Jean-Marc. - $stmt = $pdo->query('SELECT AGN_Incr, AGN_Nom, AGN_Fonction, AGN_Variantes FROM ASP_Agents ORDER BY AGN_Incr ASC'); + // + // AGN_Nom renommée AGN_Prenom (7 septembre 2026, nuit — Jean-Marc, + // homogénéisation avec USR_Prenom) : répercuté ici et dans tous les + // consommateurs de ce endpoint (micro.js, contact_ia_panel.js, + // contact_ia_interprete.php) — la clé JSON change de nom avec la colonne, + // pas d'alias de compatibilité gardé, pour ne pas laisser deux noms + // cohabiter pour la même chose. + $stmt = $pdo->query('SELECT AGN_Incr, AGN_Prenom, AGN_Fonction, AGN_Variantes FROM ASP_Agents ORDER BY AGN_Incr ASC'); echo json_encode(['agents' => $stmt->fetchAll()]); } catch (PDOException $e) { http_response_code(500); diff --git a/aspic.php b/aspic.php index 1cd2062..d10d212 100644 --- a/aspic.php +++ b/aspic.php @@ -117,14 +117,28 @@ try { exit; } -$stmtNom = $pdoCible->prepare('SELECT USR_Nom FROM ASP_Users WHERE USR_Code = ?'); +// USR_Prenom récupéré ici en même temps que USR_Nom (7 septembre 2026, nuit) +// et posé en session : sert désormais de "nom affiché" pour les réalisations +// créées par cet utilisateur (voir REA_NomAffiche, realisations.php) sans +// jamais toucher à USR_Code lui-même — Jean-Marc a explicitement écarté un +// renommage de USR_Code (trop structurant) et une jointure ASP_Users refaite +// à chaque affichage/écriture (source de complication inutile, et +// potentiellement impossible si utilisateurs et agents IA finissent un jour +// dans des bases séparées) : un seul aller-retour ici, à la connexion, +// suffit pour tout le reste de la session. +$stmtNom = $pdoCible->prepare('SELECT USR_Nom, USR_Prenom FROM ASP_Users WHERE USR_Code = ?'); $stmtNom->execute([$routage['MIR_Code']]); -$nom = $stmtNom->fetchColumn(); +$ligneUsr = $stmtNom->fetch(); +$nom = $ligneUsr['USR_Nom'] ?? null; +$prenom = $ligneUsr['USR_Prenom'] ?? null; + +$_SESSION['USR_Prenom'] = $prenom; echo json_encode([ 'success' => true, 'user' => [ 'USR_Code' => $routage['MIR_Code'], - 'USR_Nom' => $nom !== false ? $nom : null, + 'USR_Nom' => $nom, + 'USR_Prenom' => $prenom, ], ]); diff --git a/consignes_apercu.php b/consignes_apercu.php new file mode 100644 index 0000000..bc87ef6 --- /dev/null +++ b/consignes_apercu.php @@ -0,0 +1,90 @@ +_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]); diff --git a/consignes_fonctions.php b/consignes_fonctions.php index b562ab9..28d202f 100644 --- a/consignes_fonctions.php +++ b/consignes_fonctions.php @@ -10,14 +10,39 @@ * contacts.php depuis la version du 6 septembre 2026 (soir). * * Convention pour écrire une nouvelle fonction ici : - * - Traitement : signature (string $valeur): string — reçoit la valeur - * actuelle du champ, retourne la valeur transformée. - * - Test : signature (string $valeur): bool — retourne vrai si la valeur - * respecte la consigne, faux sinon (le message affiché à l'échec vient de - * CNS_MessageErreur en base, jamais de cette fonction). - * Fichier volontairement sans aucune dépendance (pas de session, pas de - * base de données) : chaque fonction ne fait que transformer ou tester une - * valeur qu'on lui passe. + * - Traitement à UN champ : signature (string $valeur): string — reçoit la + * valeur actuelle du champ, retourne la valeur transformée. + * - Test à UN champ : signature (string $valeur): bool — retourne vrai si la + * valeur respecte la consigne, faux sinon (le message affiché à l'échec + * vient de CNS_MessageErreur en base, jamais de cette fonction). + * - Traitement/Test à PLUSIEURS champs (extension du 7 septembre 2026, voir + * moteur_consignes.php) : quand CNS_Champ contient plusieurs noms de champs + * séparés par une virgule, la fonction reçoit un tableau associatif + * [nom_du_champ => valeur] au lieu d'une simple chaîne — un Traitement + * retourne alors ce même type de tableau (valeurs mises à jour, mêmes clés), + * un Test retourne toujours un simple bool. Voir + * consigne_completer_code_postal() ci-dessous pour un exemple. + * - Jumeau "_seraitDeclenchee" (7 septembre 2026, soir) : toute fonction de + * Traitement qui interroge un service externe (IA) et porte + * FON_VisuelAttenteIA = 'O' DOIT avoir, en plus, une fonction nommée + * "_seraitDeclenchee", signature (array $valeurs): bool + * — répond "est-ce que j'agirais sur ces valeurs", sans jamais rien faire + * d'autre (aucun appel réseau). La vraie fonction appelle ce jumeau EN + * PREMIER (voir consigne_completer_code_postal() ci-dessous) : la condition + * de déclenchement n'existe ainsi qu'à un seul endroit, jamais recopiée ni + * devinée ailleurs (pas même dans ce fichier) — c'est ce jumeau + * qu'interroge consignes_apercu.php pour piloter le badge IA générique côté + * écran, voir ce fichier et moteur_consignes.php + * (auMoinsUneConsigneIaSeraitDeclenchee()). + * Fichier volontairement sans dépendance à la session ni à la base de + * données : chaque fonction ne fait que transformer ou tester une ou + * plusieurs valeurs qu'on lui passe. Exception depuis le 7 septembre 2026 + * (soir) : une fonction peut interroger un service externe (API d'IA, voir + * consigne_completer_code_postal()) quand la consigne elle-même l'exige + * explicitement — jamais la session ni la base ASPIC, seulement un appel + * réseau sortant, et toujours avec un repli silencieux (valeurs inchangées) + * en cas d'échec : un Traitement ne doit jamais faire échouer un + * enregistrement à cause d'un service tiers indisponible. */ // ASP_Fonctions.FON_Nom = 'MAJUSCULE' (Nature=Traitement) @@ -55,3 +80,212 @@ function consigne_premiere_lettre_majuscule(string $valeur): string $valeur ); } + +// ASP_Fonctions.FON_Nom = 'MAIL_VALIDE' (Nature=Test), 7 septembre 2026. +// Vrai si la valeur ressemble à une adresse mail syntaxiquement correcte, +// faux sinon — une simple cohérence de saisie ("@" présent, domaine +// plausible), jamais une vérification que la boîte existe réellement. +// Champ facultatif : une valeur vide est considérée conforme ici (le +// caractère obligatoire ou non du champ reste la responsabilité d'une +// consigne NON_VIDE séparée, combinable avec celle-ci sur le même champ). +// +// Volontairement PAS de regex écrite à la main du style "@ suivi de deux +// groupes de lettres séparés par un point" : une adresse valide peut avoir +// un domaine à plus de deux niveaux (ex. toto@tata.ndd.com), un chiffre, un +// tiret... filter_var(FILTER_VALIDATE_EMAIL) est le validateur natif de PHP, +// déjà utilisé ailleurs dans ASPIC pour la même vérification (voir +// prospects_core.php, contrôle sur PSP_Mail) — le reprendre ici garde une +// seule et même définition de "adresse mail valide" dans toute l'application +// plutôt que deux logiques différentes qui pourraient diverger. +function consigne_mail_valide(string $valeur): bool +{ + $valeur = trim($valeur); + if ($valeur === '') return true; + return filter_var($valeur, FILTER_VALIDATE_EMAIL) !== false; +} + +// ASP_Fonctions.FON_Nom = 'SANS_CHIFFRE' (Nature=Test), 7 septembre 2026. +// Vrai si la valeur ne contient aucun chiffre, faux sinon — champ facultatif +// (une valeur vide est conforme, même principe que consigne_mail_valide() : +// le caractère obligatoire est la responsabilité d'une consigne NON_VIDE +// séparée, combinable sur le même champ). Générique et réutilisable tel +// quel sur n'importe quel champ texte : Jean-Marc l'a demandée pour Nom, +// Prénom et Ville, ce qui ne demande ici AUCUNE fonction par champ — juste +// trois lignes dans ASP_Consignes (CNT_Nom, CNT_Prenom, CNT_AdrVille) +// pointant toutes vers cette même fonction, chacune avec son propre +// CNS_MessageErreur si on veut un message différent par champ. +function consigne_sans_chiffre(string $valeur): bool +{ + return trim($valeur) === '' || !preg_match('/\d/', $valeur); +} + +// ASP_Fonctions.FON_Nom = 'CP_DEPUIS_VILLE' (Nature=Traitement, CNS_Champ = +// "CNT_AdrVille,CNT_AdrCP"), 7 septembre 2026 (soir). +// Première consigne "qui va chercher sa réponse avec l'IA" (demande de +// Jean-Marc) : complète le code postal à partir de la ville quand celui-ci +// n'a pas été saisi. Un champ seul ne suffisait pas ici (il faut la ville en +// entrée pour produire le code postal en sortie) — voir l'extension du +// moteur à plusieurs champs dans moteur_consignes.php. +// +// Ne fait RIEN (retourne les valeurs inchangées) si le code postal est déjà +// renseigné — jamais d'écrasement d'une saisie existante, même douteuse — +// ou si la ville est vide (rien à déduire). Sinon interroge le même modèle +// que contact_ia_interprete.php (OPENAI_API_KEY, voir ce fichier pour le +// détail de l'intégration) avec une sortie structurée stricte : le modèle +// renvoie soit un code postal à 5 chiffres qu'il connaît avec une confiance +// raisonnable, soit null s'il n'est pas sûr — jamais un code inventé, même +// principe de prudence que consigne_mail_valide() ci-dessus (mieux vaut +// laisser le champ vide qu'afficher une fausse information). Une ville qui +// couvre plusieurs codes postaux sans qu'aucun ne soit clairement principal +// (ex. arrondissements de Paris/Lyon/Marseille) doit renvoyer null plutôt que +// de deviner — c'est écrit explicitement dans la consigne envoyée au modèle. +// +// Toute défaillance (clé absente, réseau, quota, réponse inattendue) se +// traduit par un retour silencieux des valeurs inchangées : un Traitement ne +// doit jamais bloquer l'enregistrement d'un contact à cause d'un service +// externe (voir commentaire d'en-tête de moteur_consignes.php) — contrairement +// à un Test, dont l'échec est lui affiché à l'utilisateur. +// Jumeau "_seraitDeclenchee" (voir en-tête de fichier) : réplique à elle +// seule la condition de déclenchement de consigne_completer_code_postal() +// ci-dessous, sans jamais faire le moindre appel réseau. C'est la SEULE +// fonction que consignes_apercu.php interroge pour savoir si le badge IA doit +// apparaître — la vraie fonction l'appelle elle-même en premier, pour que +// cette condition n'existe jamais qu'à cet unique endroit. +function consigne_completer_code_postal_seraitDeclenchee(array $valeurs): bool +{ + $ville = trim((string)($valeurs['CNT_AdrVille'] ?? '')); + $codePostal = trim((string)($valeurs['CNT_AdrCP'] ?? '')); + + return $codePostal === '' && $ville !== ''; +} + +function consigne_completer_code_postal(array $valeurs): array +{ + if (!consigne_completer_code_postal_seraitDeclenchee($valeurs)) { + return $valeurs; + } + + $ville = trim((string)($valeurs['CNT_AdrVille'] ?? '')); + + $apiKey = trim((string) getenv('OPENAI_API_KEY')); + if (!$apiKey) { + return $valeurs; + } + + $schema = [ + 'type' => 'object', + 'properties' => [ + 'code_postal' => [ + 'type' => ['string', 'null'], + 'description' => "Code postal français à 5 chiffres correspondant à la ville donnée, uniquement si connu avec une confiance raisonnable. null si la ville est ambiguë, inconnue, introuvable en France, ou couvre plusieurs codes postaux sans qu'un seul soit clairement le plus probable.", + ], + ], + 'required' => ['code_postal'], + 'additionalProperties' => false, + ]; + + $corpsRequete = [ + 'model' => 'gpt-5.6-luna', // même modèle que contact_ia_interprete.php, voir ce fichier. + 'messages' => [ + [ + 'role' => 'system', + 'content' => "Tu donnes le code postal français d'une ville, pour un CRM. " + . "N'invente jamais un code postal : renvoie null si tu n'es pas " + . "raisonnablement sûr, si la ville est ambiguë ou inconnue, ou si " + . "elle est à cheval sur plusieurs codes postaux sans qu'un seul soit " + . "clairement le principal (ex. grandes villes découpées en " + . "arrondissements).", + ], + ['role' => 'user', 'content' => $ville], + ], + 'response_format' => [ + 'type' => 'json_schema', + 'json_schema' => ['name' => 'code_postal_ville', 'strict' => true, 'schema' => $schema], + ], + ]; + + $ch = curl_init('https://api.openai.com/v1/chat/completions'); + curl_setopt_array($ch, [ + CURLOPT_RETURNTRANSFER => true, + CURLOPT_POST => true, + CURLOPT_POSTFIELDS => json_encode($corpsRequete), + CURLOPT_HTTPHEADER => [ + 'Content-Type: application/json', + 'Authorization: Bearer ' . $apiKey, + ], + // Appelée en synchrone pendant l'enregistrement d'un contact (choix + // de Jean-Marc, 7 septembre 2026 : "oui, tel quel" malgré le coût/la + // latence) : délai volontairement court, on préfère abandonner + // (valeurs inchangées) plutôt que de faire attendre longtemps sur un + // enrichissement facultatif. + CURLOPT_TIMEOUT => 8, + CURLOPT_CONNECTTIMEOUT => 5, + ]); + $reponseBrute = curl_exec($ch); + $codeHttp = curl_getinfo($ch, CURLINFO_HTTP_CODE); + curl_close($ch); + + if ($reponseBrute === false || $codeHttp !== 200) { + return $valeurs; + } + + $reponseDecodee = json_decode($reponseBrute, true); + $contenuJson = $reponseDecodee['choices'][0]['message']['content'] ?? null; + $extraction = $contenuJson ? json_decode($contenuJson, true) : null; + $codePostalDeduit = $extraction['code_postal'] ?? null; + + // Garde-fou défensif (même principe qu'ailleurs dans ASPIC : jamais + // confiance aveugle en un service externe) : un code postal français est + // exactement 5 chiffres, sinon la réponse est ignorée. + if (is_string($codePostalDeduit) && preg_match('/^\d{5}$/', $codePostalDeduit)) { + $valeurs['CNT_AdrCP'] = $codePostalDeduit; + // Journalisation (7 septembre 2026, soir, demande de Jean-Marc après + // son premier essai réel — "indispensable" pour pouvoir relier une + // ligne de coût IA à sa cause) : clé réservée "_realisation", voir + // moteur_consignes.php pour le mécanisme générique. Pas de champ + // 'agent' ici (contrairement au tout premier jet, qui inventait "Mat" + // en dur) : Jean-Marc a fait remarquer, à raison, qu'ASP_Consignes + // porte déjà CNS_Agent — c'est le moteur (executerTraitements(), voir + // moteur_consignes.php) qui l'y lit et l'attribue à la réalisation, + // jamais cette fonction. ACT_Code 'IA_CP' à créer à la main dans + // ASP_Actions (table gérée à la main, voir realisations.php) avant le + // premier passage réel en production. + $valeurs['_realisation'] = [ + 'action' => 'IA_CP', + 'commentaire' => "Code postal $codePostalDeduit déduit de la ville « $ville » par l'IA.", + ]; + } else { + // Appel IA fait, coût réellement engagé, mais sans réponse + // exploitable — ex. Paris/Lyon/Marseille, découpées en + // arrondissements sans code postal unique, pour lesquelles le modèle + // renvoie sciemment null plutôt que de deviner (voir le prompt + // système ci-dessus). Repéré par Jean-Marc (7 septembre 2026, nuit, + // test sur "Paris") : "il y a un appel fait à l'IA et pas de trace + // dans les réalisations, ce qui n'est pas normal" — un appel qui ne + // trouve rien coûte quand même des tokens, il doit donc apparaître + // au même titre qu'un appel réussi. Même ACT_Code 'IA_CP', un + // commentaire différent suffit à distinguer les deux cas dans + // l'historique, sans demander à Jean-Marc de créer un deuxième code + // dans ASP_Actions. + $valeurs['_realisation'] = [ + 'action' => 'IA_CP', + 'commentaire' => "Aucun code postal déduit pour la ville « $ville » (ambiguë ou inconnue pour l'IA).", + ]; + // '_avertissement' (nouvelle clé réservée, voir moteur_consignes.php) : + // contrairement à '_realisation' (historique consulté a posteriori), + // ce message est affiché IMMÉDIATEMENT à l'écran — sans lui, + // l'utilisateur ne voit rien du tout et ne sait pas que l'IA a bien + // réfléchi puis sciemment renoncé, plutôt qu'un simple silence. + // Message volontairement impératif (7 septembre 2026, demande de + // Jean-Marc) : le toast qui l'affiche reste à l'écran tant que + // l'utilisateur n'a pas cliqué pour le refermer (voir + // liste_contacts.html/afficherToast()), l'instruction doit donc être + // sans ambiguïté sur ce qu'il reste à faire. + $valeurs['_avertissement'] = + "Code postal non déterminé pour « $ville » (ville ambiguë ou " + . "avec plusieurs codes postaux possibles). Saisissez le code " + . "postal vous-même."; + } + + return $valeurs; +} diff --git a/contact_ia_interprete.php b/contact_ia_interprete.php index 85e7cd8..13500ac 100644 --- a/contact_ia_interprete.php +++ b/contact_ia_interprete.php @@ -138,7 +138,8 @@ try { // fichier reste volontairement passif : il ne renvoie que ce qui a été // réellement dit (assistant_id reste null si personne n'est cité), sans // jamais anticiper une décision qui appartient à l'étage suivant. - $agents = $pdo->query('SELECT AGN_Incr, AGN_Nom, AGN_Fonction, AGN_Variantes FROM ASP_Agents ORDER BY AGN_Incr ASC')->fetchAll(); + // AGN_Nom renommée AGN_Prenom en base (7 septembre 2026, nuit). + $agents = $pdo->query('SELECT AGN_Incr, AGN_Prenom, AGN_Fonction, AGN_Variantes FROM ASP_Agents ORDER BY AGN_Incr ASC')->fetchAll(); $actionsDisponibles = $pdo->query('SELECT ACT_Code, ACT_Libelle FROM ASP_Actions ORDER BY ACT_Libelle ASC')->fetchAll(); } catch (PDOException $e) { http_response_code(500); @@ -226,7 +227,7 @@ $listeProfessions = $professions : '(aucune profession existante)'; $listeAgents = $agents ? implode(', ', array_map( - fn($a) => $a['AGN_Incr'] . ' = ' . $a['AGN_Nom'] . + fn($a) => $a['AGN_Incr'] . ' = ' . $a['AGN_Prenom'] . ($a['AGN_Variantes'] ? ' (variantes tolérées : ' . $a['AGN_Variantes'] . ')' : ''), $agents )) diff --git a/contact_ia_panel.js b/contact_ia_panel.js index 048fe51..bb8825c 100644 --- a/contact_ia_panel.js +++ b/contact_ia_panel.js @@ -554,7 +554,9 @@ (agents || []).forEach(function(a){ const option = document.createElement("option"); option.value = String(a.AGN_Incr); - option.textContent = a.AGN_Nom + (a.AGN_Fonction ? " (" + a.AGN_Fonction + ")" : ""); + // AGN_Nom renommée AGN_Prenom en base (7 septembre 2026, nuit) — voir + // agents.php, qui renvoie désormais cette clé sous son nouveau nom. + option.textContent = a.AGN_Prenom + (a.AGN_Fonction ? " (" + a.AGN_Fonction + ")" : ""); selectAssistant.appendChild(option); }); if(!agents || !agents.length){ diff --git a/contacts.php b/contacts.php index 0f1bf56..0230885 100644 --- a/contacts.php +++ b/contacts.php @@ -69,6 +69,23 @@ * pas de distinction Saisie/Validation (tout s'applique à l'enregistrement), * pas de vérification en temps réel côté écran pour l'instant — décision de * Jean-Marc du 6 septembre 2026, priorité à la robustesse. + * + * Journalisation des Traitements IA dans ASP_Realisations (7 septembre 2026, + * soir) : appliquerConsignes() peut remonter, via son paramètre par référence + * $journalisationsIA, une ou plusieurs entrées à journaliser (ex. code postal + * déduit par l'IA depuis la ville — voir consigne_completer_code_postal()). + * Écrites ICI, directement en base, plutôt que laissées au front-end comme + * CNT_CRE/CNT_MAJ (voir liste_contacts.html, validerFormulaireContact()) : + * REA_CodeUser/REA_NomAffiche reçoivent alors le nom d'agent IA (ex. "Matilda" + * — voir ASP_Agents.AGN_Prenom, et CNS_Agent sur la consigne qui a déclenché le + * Traitement), pas + * l'utilisateur humain de la session — hors de portée de realisations.php, + * qui impose volontairement $_SESSION['USR_Code'] (correctif de sécurité du + * 24 août 2026, voir ce fichier) et ne doit surtout pas rouvrir la + * possibilité qu'un client falsifie REA_CodeUser. Best-effort (try/catch + * séparé) : un souci de journalisation ne doit jamais faire échouer + * l'enregistrement du contact lui-même, même principe que la journalisation + * CNT_CRE/CNT_MAJ côté front. */ session_start(); @@ -122,6 +139,43 @@ function construireMotifLike(string $valeur): array return [$motif, '\\']; } +/** + * Journalise dans ASP_Realisations les Traitements IA remontés par + * appliquerConsignes() (voir moteur_consignes.php et le commentaire d'en-tête + * de ce fichier) — ex. code postal déduit de la ville. Best-effort : une + * exception ici est avalée (juste consignée au log serveur), jamais renvoyée + * au client — un souci de journalisation ne doit pas laisser croire que + * l'enregistrement du contact a échoué alors qu'il a réussi. + */ +function journaliserRealisationsIA(PDO $pdo, int $idContact, array $journalisationsIA): void +{ + if (!$journalisationsIA) return; + try { + // REA_CodeUser ET REA_NomAffiche reçoivent la même valeur pour un + // agent IA (7 septembre 2026, nuit — "le prénom de l'agent en dur", + // Jean-Marc) : contrairement à un utilisateur humain, un agent n'a + // pas de code technique court séparé de son nom affiché — la valeur + // vient déjà en clair de CNS_Agent (voir moteur_consignes.php), + // aucune recherche supplémentaire à faire ici. + $stmt = $pdo->prepare( + 'INSERT INTO ASP_Realisations (REA_IncrContact, REA_CodeUser, REA_NomAffiche, REA_Date, REA_Action, REA_Comment) + VALUES (?, ?, ?, NOW(), ?, ?)' + ); + foreach ($journalisationsIA as $j) { + $nomAgent = (string)($j['agent'] ?? 'IA'); + $stmt->execute([ + $idContact, + $nomAgent, + $nomAgent, + (string)($j['action'] ?? 'IA'), + (string)($j['commentaire'] ?? ''), + ]); + } + } catch (PDOException $e) { + error_log('ASPIC contacts: échec journalisation ASP_Realisations (Traitement IA) : ' . $e->getMessage()); + } +} + try { switch ($method) { case 'GET': @@ -199,10 +253,14 @@ try { case 'POST': $data = json_decode(file_get_contents('php://input'), true) ?? []; - $erreurConsigne = appliquerConsignes($pdo, 'Contacts', 'Création', $data); + $erreurConsigne = appliquerConsignes($pdo, 'Contacts', 'Création', $data, $agentConsigne, $journalisationsIA, $avertissementsIA); if ($erreurConsigne !== null) { http_response_code(400); - echo json_encode(['error' => $erreurConsigne]); + // 'agent' (CNS_Agent, 7 septembre 2026) : vaut JSON null si la + // consigne en échec n'en a pas — sans effet côté front, où + // afficherToast n'affiche la ligne agent que si la valeur est + // présente et non vide. + echo json_encode(['error' => $erreurConsigne, 'agent' => $agentConsigne]); exit; } @@ -245,7 +303,14 @@ try { $stmtCode = $pdo->prepare('UPDATE ASP_Contacts SET CNT_Code = ? WHERE CNT_Incr = ?'); $stmtCode->execute([$code, $nouvelIncr]); - echo json_encode(['id' => $nouvelIncr, 'code' => $code]); + journaliserRealisationsIA($pdo, $nouvelIncr, $journalisationsIA); + + // 'avertissements' (7 septembre 2026, nuit) : messages à afficher + // immédiatement à l'écran, voir moteur_consignes.php ("_avertissement") + // — distinct de la journalisation ci-dessus, qui va dans + // l'historique mais ne s'affiche pas tout de suite. Tableau vide + // la plupart du temps, le front-end n'affiche alors rien. + echo json_encode(['id' => $nouvelIncr, 'code' => $code, 'avertissements' => $avertissementsIA]); break; case 'PUT': @@ -256,10 +321,10 @@ try { } $data = json_decode(file_get_contents('php://input'), true) ?? []; - $erreurConsigne = appliquerConsignes($pdo, 'Contacts', 'Modification', $data); + $erreurConsigne = appliquerConsignes($pdo, 'Contacts', 'Modification', $data, $agentConsigne, $journalisationsIA, $avertissementsIA); if ($erreurConsigne !== null) { http_response_code(400); - echo json_encode(['error' => $erreurConsigne]); + echo json_encode(['error' => $erreurConsigne, 'agent' => $agentConsigne]); exit; } @@ -295,7 +360,9 @@ try { $stmt = $pdo->prepare($sql); $stmt->execute($params); - echo json_encode(['success' => true]); + journaliserRealisationsIA($pdo, (int)$_GET['id'], $journalisationsIA); + + echo json_encode(['success' => true, 'avertissements' => $avertissementsIA]); break; case 'DELETE': diff --git a/ecran_fond.html b/ecran_fond.html index 7d96626..427a298 100644 --- a/ecran_fond.html +++ b/ecran_fond.html @@ -48,16 +48,23 @@ background:#ad580d url('ecran_fond.jpg') center center / contain no-repeat; position:relative; } - /* Étiquette "Contacts" sur la tranche du 1er classeur (2 septembre 2026, - essai). Positionnée en JS plutôt qu'en CSS pur : comme l'image est en - "contain", sa taille et sa position réelles à l'écran changent avec la - proportion de la fenêtre — même calcul que "background-size:contain" - refait à la main pour caler ce texte sur l'étiquette blanche, quelle - que soit la fenêtre. Coordonnées mesurées sur ecran_fond.jpg (image de - référence 1280×650) : rectangle d'étiquette à peu près x:[54,91], - y:[376,481] sur cette image. rotate(-90deg) : lecture bas → haut, - comme demandé (on tourne la tête pour lire), plutôt que haut → bas. */ - #etiquette-contacts{ + /* Étiquettes des 9 classeurs (7 septembre 2026 — évolution de l'essai à + un seul classeur "Contacts" du 2 septembre). Nouvelle photo fournie par + Jean-Marc, mêmes dimensions de référence (1024×457) et même bureau/mur/ + micro (vérifié par comparaison pixel à pixel avec l'ancienne image : + seule la zone des classeurs, x≈[40,400], diffère réellement — le reste + n'est que du bruit de compression) — les constantes MICRO_ZONE, ICONE et + ZONE_POSTITS restent donc inchangées plus bas, seules les constantes de + classeurs et la pastille "Contacts" ont été remesurées sur la nouvelle + photo. + Toujours positionnées en JS (voir creerClasseurs()/positionner()) pour + le même motif que le 2 septembre : l'image étant en "contain", sa + taille/position réelles à l'écran changent avec la proportion de la + fenêtre. rotate(-90deg) : lecture bas → haut (on tourne la tête pour + lire), inchangé. Règles génériques (classe, plus un seul id) : il y a + désormais 9 étiquettes/classeurs au lieu d'un seul — voir le tableau + CLASSEURS dans le script. */ + .etiquette-classeur{ position:fixed; transform:translate(-50%,-50%) rotate(-90deg); transform-origin:center; @@ -69,18 +76,25 @@ pointer-events:none; user-select:none; } - /* Zone cliquable calée sur la tranche visible (face plate, sans le - dessus incliné) du 1er classeur — même principe de positionnement en - JS que l'étiquette ci-dessus. Pas d'habillage visuel par défaut (le - classeur photographié suffit), juste un léger éclaircissement au survol - pour signaler que c'est cliquable, en plus du curseur et de l'infobulle. */ - #classeur-contacts{ + /* Zone calée sur la tranche visible (face plate, sans le dessus incliné) + de chaque classeur — même principe de positionnement en JS que + l'étiquette ci-dessus. Pas d'habillage visuel par défaut (le classeur + photographié suffit), juste un léger éclaircissement au survol pour + signaler que c'est cliquable, en plus du curseur et de l'infobulle — + UNIQUEMENT sur le classeur réellement branché (voir .classeur-actif + ci-dessous) : les 8 autres n'ont pas encore d'écran derrière (voir + tableau CLASSEURS), pas de survol trompeur pour eux tant que ce n'est + pas le cas.*/ + .classeur-zone{ position:fixed; display:block; + } + .classeur-zone.classeur-actif{ + cursor:pointer; box-shadow:inset 0 0 0 0 rgba(255,255,255,0); transition:box-shadow .12s ease; } - #classeur-contacts:hover{ + .classeur-zone.classeur-actif:hover{ box-shadow:inset 0 0 0 2px rgba(255,255,255,.7); } /* Chevalet supprimé le 3 septembre 2026 (voir journal) : Jean-Marc l'a @@ -348,8 +362,10 @@ - -
Contacts
+
@@ -389,28 +405,139 @@ Créé par Mevelia Solutions"> // silhouette du micro) : décalage vertical uniforme de +13 confirmé pour // tout ce qui était calé sur le bureau ou le mur, aucun décalage // horizontal — cohérent avec la description de Jean-Marc. + // 4ᵉ version le 7 septembre 2026 : Jean-Marc a retravaillé l'image pour + // passer d'un unique classeur "Contacts" à une rangée de 9 classeurs + // (mêmes dimensions 1024×457, même bureau/mur/micro/carnet/téléphone, + // vérifié par différence pixel à pixel entre les deux photos — seule la + // zone des classeurs, x≈[40,400], a réellement changé). Constantes de + // classeurs et pastille "Contacts" remesurées ci-dessous sur cette + // nouvelle version ; MICRO_ZONE_*/ICONE_*/ZONE_POSTITS_* inchangées. const IMG_W = 1024, IMG_H = 457; - // Centre de l'étiquette du 1er classeur (57.5, 282 -> 57.5, 295 : +13). - const ETIQ_CENTRE_X_FRAC = 57.5 / IMG_W; - const ETIQ_CENTRE_Y_FRAC = 295 / IMG_H; - const ETIQ_POLICE_FRAC = 19 / IMG_W; - // Rectangle de la tranche visible du 1er classeur (x inchangé, y:[224,397] - // -> y:[237,410]). - const CLASSEUR_X1 = 37, CLASSEUR_X2 = 78; - const CLASSEUR_Y1 = 237, CLASSEUR_Y2 = 410; - // Chevalet supprimé le 3 septembre 2026 (voir journal) : plus d'objet à - // cet endroit sur la nouvelle photo, Jean-Marc l'a rangé. - // Zone cliquable/survolable du micro : silhouette complète, x inchangé, - // y:[236,406] -> y:[249,419]. + + // -------- Classeurs (7 septembre 2026 — 9 classeurs remplacent l'unique + // classeur "Contacts" du 2 septembre) -------- + // Nouvelle photo fournie par Jean-Marc, mêmes dimensions de référence + // 1024×457. Toutes les coordonnées ci-dessous ont été mesurées directement + // sur cette nouvelle photo par analyse pixel par pixel (relevé des + // transitions de couleur colonne par colonne / ligne par ligne), pas à + // l'œil — même exigence de précision que les mesures manuelles de + // Jean-Marc sur les versions précédentes. + // + // CLASSEURS_Y1/Y2 : rectangle vertical de la tranche visible, commun aux + // 9 classeurs (mesuré quasi identique sur chacun, 230-233 en haut et + // 409-411 en bas — la photo montre les 9 classeurs à la même hauteur). + const CLASSEURS_Y1 = 231, CLASSEURS_Y2 = 410; + // Rectangle vertical utile de la partie blanche de l'étiquette (mesuré + // constant à 255-339 sur les 9 classeurs) : c'est cette hauteur, une fois + // convertie à l'écran, qui borne la largeur du texte tourné à -90° + // (voir calculerPoliceEtiquette() plus bas). + const ETIQ_LABEL_Y1 = 255, ETIQ_LABEL_Y2 = 339; + const ETIQ_CENTRE_Y_FRAC = ((ETIQ_LABEL_Y1 + ETIQ_LABEL_Y2) / 2) / IMG_H; + // Largeur utile de la partie blanche de l'étiquette (mesurée 22-25px selon + // le classeur, valeur basse retenue par sécurité — cette largeur borne + // l'ÉPAISSEUR du texte tourné, donc indirectement la taille de police + // maximale des libellés courts, voir calculerPoliceEtiquette() plus bas). + const ETIQ_LABEL_LARGEUR = 22; + // Marges de sécurité (10-6%) sur les deux contraintes ci-dessus. Plus + // resserrées que la précédente version (12%) : la taille de police n'est + // plus estimée à partir d'un ratio de largeur de caractère deviné, mais + // mesurée pour de vrai par le navigateur lui-même (voir + // calculerPoliceEtiquette()) — la marge ne sert donc plus qu'à absorber + // l'écart entre la police réellement utilisée chez Jean-Marc (Segoe UI, + // Windows) et celle du moteur qui affiche la page au moment du calcul, + // jamais à compenser une approximation de largeur de texte. + const ETIQ_MARGE_HAUTEUR = 0.94; + const ETIQ_MARGE_LARGEUR = 0.90; + // Facteur hauteur de ligne approximatif (line-height non fixé en CSS ici, + // donc dépendant du navigateur — 1.2 est une valeur usuelle prudente) : + // c'est cette épaisseur de ligne, pas la taille de police elle-même, qui + // doit tenir dans ETIQ_LABEL_LARGEUR une fois le texte tourné à -90°. + const ETIQ_LIGNE_HAUTEUR = 1.2; + // Seuil plancher, en dessous duquel le texte deviendrait illisible quel + // que soit le libellé (aucun classeur actuel ne devrait l'atteindre). + const ETIQ_POLICE_MIN_FRAC = 9 / IMG_W; + // Plafond commun aux libellés courts : épaisseur de ligne maximale qui + // tient dans la largeur physique de l'étiquette (2ᵉ contrainte de + // calculerPoliceEtiquette() ci-dessous, extraite ici en constante + // partagée) — c'est la taille qu'atteignent "Contacts", "Catalogue", "En + // cours" ou "Factures" une fois que la contrainte de hauteur cesse d'être + // la plus stricte des deux. Sert aussi de police forcée pour "Documents" + // (policeForceeFrac dans CLASSEURS, voir plus bas) le 7 septembre 2026 + // (soir). + const ETIQ_POLICE_CAP_FRAC = (ETIQ_LABEL_LARGEUR * ETIQ_MARGE_LARGEUR) / ETIQ_LIGNE_HAUTEUR / IMG_W; + + // Tableau des 9 classeurs, dans l'ordre demandé par Jean-Marc le + // 7 septembre 2026 (photo retravaillée : le 1er classeur a glissé vers la + // gauche et devient "Consignes", "Contacts" passe en 2e position). + // x1/x2 : bornes horizontales de la tranche visible (classeur entier, y + // compris le bord en plastique coloré autour de l'étiquette) — définissent + // la zone cliquable/survolable. labelCx : centre horizontal mesuré du + // RECTANGLE BLANC de l'étiquette lui-même (pas du classeur entier) — + // retouché le 7 septembre 2026 après retour de Jean-Marc ("Consignes" trop + // à droite, "Contacts"/"Catalogue" à décaler vers la gauche) : l'étiquette + // n'est pas toujours parfaitement centrée sur la tranche du classeur, + // mieux vaut mesurer sa propre position que supposer qu'elle coïncide avec + // le centre de la tranche. Re-décalé une seconde fois le 7 septembre 2026 + // (soir) pour "Consignes" seul ("presque parfait", encore un peu trop à + // droite) : -2px supplémentaires. href : écran réel derrière le classeur, + // ou null quand cet écran n'existe pas encore — seul un classeur avec href + // reçoit la classe "classeur-actif" (survol + clic, voir creerClasseurs()) ; + // les 8 autres affichent leur étiquette mais ne sont pas encore cliquables, + // faute d'écran à ouvrir (voir le journal pour la liste des écrans + // restant à construire). policeForceeFrac : taille de police imposée (en + // fraction de IMG_W), au lieu de la double contrainte calculée par + // calculerPoliceEtiquette() — voir commentaire sur "Documents" ci-dessous + // pour le seul cas qui l'utilise pour l'instant. + const CLASSEURS = [ + {id:'consignes', label:'Consignes', x1:44, x2:79.5, labelCx:57.2, href:null}, + {id:'contacts', label:'Contacts', x1:79.5, x2:118, labelCx:96.6, href:'liste_contacts.html'}, + {id:'catalogue', label:'Catalogue', x1:118, x2:155, labelCx:135.0, href:null}, + // "Documentations" remplacé par "Documents" le 7 septembre 2026 (soir), + // à la demande de Jean-Marc (le libellé complet restait peu lisible même + // après le passage à measureText() : un mot de 14 lettres doit beaucoup + // rétrécir pour tenir dans la hauteur de l'étiquette). Police forcée + // (policeForceeFrac, voir ETIQ_POLICE_CAP_FRAC plus haut) plutôt que + // laissée au calcul automatique : "Documents" (9 lettres, comme + // "Consignes") tiendrait déjà largement dans la hauteur disponible même + // à la taille plafond commune aux libellés courts — autant l'aligner + // explicitement sur ce plafond pour garantir la même taille bien lisible + // que "Contacts"/"Catalogue"/"En cours"/"Factures", plutôt que de + // dépendre d'un calcul qui pourrait légèrement varier d'un libellé à + // l'autre. id conservé en interne à 'documentations' (cohérence avec + // l'historique de la photo/des mesures), seul le libellé affiché change. + {id:'documentations', label:'Documents', x1:155, x2:192.5, labelCx:173.9, href:null}, + {id:'prospection', label:'Prospection', x1:192.5, x2:234, labelCx:212.6, href:null}, + // "Communication" remplacé par "Réseaux" le 7 septembre 2026 (soir), à la + // demande de Jean-Marc : ce classeur regroupe la génération de posts + // Instagram et la veille concurrentielle sur les réseaux sociaux — + // "Réseaux" colle mieux à cet usage que le générique "Communication", + // en plus d'être bien plus court (donc bien plus lisible une fois + // tourné à -90°, voir calculerPoliceEtiquette()). id conservé en interne + // à 'communication' (cohérence avec l'historique de la photo/des + // mesures), seul le libellé affiché change. + {id:'communication', label:'Réseaux', x1:234, x2:274.5, labelCx:253.0, href:null}, + {id:'en-cours', label:'En cours', x1:274.5, x2:312.5, labelCx:293.0, href:null}, + {id:'factures', label:'Factures', x1:312.5, x2:352.5, labelCx:332.5, href:null}, + {id:'journalier', label:'Journalier', x1:352.5, x2:395.5, labelCx:372.6, href:null}, + ]; + + // Zone cliquable/survolable du micro, centre du rond noir de la grille + // (icône) et zone des post-its personnels : AUCUN changement le 7 + // septembre 2026 — vérifié par comparaison pixel à pixel avec l'ancienne + // photo, identiques au-delà de x≈400 (voir commentaire CSS plus haut). const MICRO_ZONE_X1 = 465, MICRO_ZONE_X2 = 543; const MICRO_ZONE_Y1 = 249, MICRO_ZONE_Y2 = 419; - // Centre du rond noir en haut du micro (grille), pour l'icône seule : - // (512, 255) -> (512, 268). const ICONE_CENTRE_X = 512, ICONE_CENTRE_Y = 268; const ICONE_TAILLE_FRAC = 22 / IMG_W; - // Pastille "nombre de contacts", sous le trou cerclé de métal du classeur - // Contacts : centre (58, 381) -> (58, 394). - const PASTILLE_CONTACTS_CENTRE_X = 58, PASTILLE_CONTACTS_CENTRE_Y = 394; + // Pastille "nombre de contacts" — sous le trou de préhension du classeur + // Contacts, à mi-chemin entre ce trou et le bas du classeur (retour de + // Jean-Marc le 7 septembre 2026 : la 1ʳᵉ mesure avait par erreur calé la + // pastille SUR le trou lui-même, pas en dessous). Trou de préhension + // repéré par sa forme ovale sombre, mesurée sur la nouvelle photo : + // x≈[89,107] (centre 98), y≈[360,374] (bas du trou 374). Milieu entre ce + // bas de trou (374) et le bas du classeur (CLASSEURS_Y2=410) : (374+410)/2 + // = 392. + const PASTILLE_CONTACTS_CENTRE_X = 98, PASTILLE_CONTACTS_CENTRE_Y = 392; const PASTILLE_CONTACTS_DIAM_FRAC = 17 / IMG_W; // Zone des post-its personnels (2 septembre 2026, premier affichage réel @@ -418,9 +545,10 @@ Créé par Mevelia Solutions"> // 30% de la largeur de l'écran depuis le bord droit (1024 × 0.30 ≈ 307). // Bas de la zone (Y2) recalculé le 3 septembre 2026 : n'était plus borné // par le chevalet (supprimé) mais par la nouvelle ligne de bureau - // (CLASSEUR_Y2 = 410), avec la même marge de sécurité qu'avant (~15px) — - // 352 devient 395, quelques pixels de plus qu'un simple +13 puisque - // l'espace se libère réellement, comme relevé par Jean-Marc. Grille + // (CLASSEURS_Y2 = 410, ex-CLASSEUR_Y2 avant le passage à 9 classeurs le + // 7 septembre — valeur inchangée), avec la même marge de sécurité qu'avant + // (~15px) — 352 devient 395, quelques pixels de plus qu'un simple +13 + // puisque l'espace se libère réellement, comme relevé par Jean-Marc. Grille // 4 colonnes × 5 lignes = 20 cases, volontairement alignée sur // CAPACITE_TABLEAU_PAR_UTILISATEUR (todolist.php) — à faire évoluer // ensemble le jour où cette capacité changera. @@ -446,6 +574,84 @@ Créé par Mevelia Solutions"> return ((t ^ (t >>> 14)) >>> 0) / 4294967296; } + // Crée les 9 zones cliquables + étiquettes de classeurs, une seule fois + // (voir tableau CLASSEURS plus haut) — même principe que les post-its, + // appelée une fois au chargement, positionnée ensuite (comme tout le + // reste) dans positionner(). Un classeur avec href (voir CLASSEURS) est + // un vrai lien ; les 8 autres, sans écran derrière pour l'instant, + // sont de simples
— pas de lien mort ni de survol trompeur (voir + // commentaire CSS .classeur-zone plus haut). + function creerClasseurs() { + CLASSEURS.forEach(function (c) { + const zone = document.createElement(c.href ? 'a' : 'div'); + zone.className = 'classeur-zone' + (c.href ? ' classeur-actif' : ''); + zone.id = 'classeur-' + c.id; + zone.dataset.classeurId = c.id; + if (c.href) { + zone.href = c.href; + zone.title = 'Ouvrir le classeur ' + c.label.toLowerCase(); + } + document.body.appendChild(zone); + + const etiquette = document.createElement('div'); + etiquette.className = 'etiquette-classeur'; + etiquette.id = 'etiquette-' + c.id; + etiquette.textContent = c.label; + document.body.appendChild(etiquette); + }); + } + + // Mesure de la largeur RÉELLE d'un texte (7 septembre 2026, remplace une + // première version qui estimait cette largeur à partir d'un ratio de + // largeur de caractère deviné — trop approximatif : "Prospection" et + // "Journalier" étaient ressortis trop petits à l'usage réel chez + // Jean-Marc). Utilise un hors-écran avec exactement la même + // police que .etiquette-classeur (voir CSS plus haut) : measureText() + // interroge directement le moteur de rendu de police du navigateur EN + // COURS D'UTILISATION — celui de Jean-Marc (Segoe UI, Windows) une fois la + // page redéployée chez lui — plutôt qu'une estimation calculée ici. Un + // seul canvas et un petit cache par (libellé, taille) : positionner() est + // rappelée à chaque redimensionnement de fenêtre, pas la peine de remesurer + // à chaque fois un texte qui n'a pas changé. + const canvasMesure = document.createElement('canvas'); + const ctxMesure = canvasMesure.getContext('2d'); + const largeursTexteMesurees = {}; + function mesurerLargeurTexte(libelle, taillePx) { + const cle = libelle + '@' + taillePx; + if (largeursTexteMesurees[cle] !== undefined) return largeursTexteMesurees[cle]; + ctxMesure.font = '600 ' + taillePx + 'px "Segoe UI","Arial",sans-serif'; + // letter-spacing:0.03em (voir .etiquette-classeur) ajouté à la main : + // measureText() ne le prend pas en compte nativement de façon fiable + // sur tous les navigateurs, un calcul explicite est plus sûr qu'un + // support incertain de ctx.letterSpacing. + const largeurBase = ctxMesure.measureText(libelle).width; + const largeur = largeurBase + (libelle.length - 1) * 0.03 * taillePx; + largeursTexteMesurees[cle] = largeur; + return largeur; + } + + // Taille de police (en fraction de IMG_W) pour l'étiquette d'un classeur — + // double contrainte, la plus stricte des deux l'emporte : + // 1) La largeur RÉELLE du texte (mesurée ci-dessus à une taille de + // référence, puis mise à l'échelle) doit tenir dans la hauteur + // disponible de l'étiquette (ETIQ_LABEL_Y2-Y1) : c'est cette hauteur + // qui devient la largeur du texte une fois tourné à -90°. C'est cette + // contrainte qui borne les libellés longs ("Documentations", + // "Communication"). + // 2) L'épaisseur d'une ligne de texte (≈ taille × ETIQ_LIGNE_HAUTEUR) doit + // tenir dans la largeur physique de l'étiquette (ETIQ_LABEL_LARGEUR) : + // sans cette 2ᵉ contrainte, un libellé court comme "Factures" pourrait + // grandir au point de déborder du rectangle blanc sur les côtés. + // Bornée par ETIQ_POLICE_MIN_FRAC en dessous (seuil de lisibilité) — pas de + // plafond arbitraire au-dessus, les deux contraintes ci-dessus suffisent. + function calculerPoliceEtiquette(libelle) { + const TAILLE_REF = 100; // px CSS, taille arbitraire pour la mesure + const largeurRef = mesurerLargeurTexte(libelle, TAILLE_REF); + const hauteurDispoImg = (ETIQ_LABEL_Y2 - ETIQ_LABEL_Y1) * ETIQ_MARGE_HAUTEUR; + const parContrainteHauteur = (hauteurDispoImg / largeurRef) * TAILLE_REF / IMG_W; + return Math.max(ETIQ_POLICE_MIN_FRAC, Math.min(parContrainteHauteur, ETIQ_POLICE_CAP_FRAC)); + } + function positionner() { const vw = window.innerWidth, vh = window.innerHeight; const ratioImg = IMG_W / IMG_H; @@ -458,16 +664,22 @@ Créé par Mevelia Solutions"> dispW = vw; dispH = dispW / ratioImg; offX = 0; offY = (vh - dispH) / 2; } - const etiquette = document.getElementById('etiquette-contacts'); - etiquette.style.left = (offX + ETIQ_CENTRE_X_FRAC * dispW) + 'px'; - etiquette.style.top = (offY + ETIQ_CENTRE_Y_FRAC * dispH) + 'px'; - etiquette.style.fontSize = (ETIQ_POLICE_FRAC * dispW) + 'px'; - const classeur = document.getElementById('classeur-contacts'); - classeur.style.left = (offX + (CLASSEUR_X1 / IMG_W) * dispW) + 'px'; - classeur.style.top = (offY + (CLASSEUR_Y1 / IMG_H) * dispH) + 'px'; - classeur.style.width = (((CLASSEUR_X2 - CLASSEUR_X1) / IMG_W) * dispW) + 'px'; - classeur.style.height = (((CLASSEUR_Y2 - CLASSEUR_Y1) / IMG_H) * dispH) + 'px'; + // Les 9 classeurs (zone cliquable + étiquette tournée, voir + // creerClasseurs() et calculerPoliceEtiquette() plus haut). + CLASSEURS.forEach(function (c) { + const zone = document.getElementById('classeur-' + c.id); + zone.style.left = (offX + (c.x1 / IMG_W) * dispW) + 'px'; + zone.style.top = (offY + (CLASSEURS_Y1 / IMG_H) * dispH) + 'px'; + zone.style.width = (((c.x2 - c.x1) / IMG_W) * dispW) + 'px'; + zone.style.height = (((CLASSEURS_Y2 - CLASSEURS_Y1) / IMG_H) * dispH) + 'px'; + + const etiquette = document.getElementById('etiquette-' + c.id); + etiquette.style.left = (offX + (c.labelCx / IMG_W) * dispW) + 'px'; + etiquette.style.top = (offY + ETIQ_CENTRE_Y_FRAC * dispH) + 'px'; + const taillePoliceFrac = (c.policeForceeFrac !== undefined) ? c.policeForceeFrac : calculerPoliceEtiquette(c.label); + etiquette.style.fontSize = (taillePoliceFrac * dispW) + 'px'; + }); const microDesk = document.getElementById('micro-desk'); microDesk.style.left = (offX + (MICRO_ZONE_X1 / IMG_W) * dispW) + 'px'; @@ -530,6 +742,7 @@ Créé par Mevelia Solutions"> postit.style.transform = 'rotate(' + rotation.toFixed(1) + 'deg)'; }); } + creerClasseurs(); window.addEventListener('resize', positionner); positionner(); diff --git a/ecran_fond.jpg b/ecran_fond.jpg index aac8b7d26c3e5e4bed4904c25ac2c7f37e7243d0..7fc641cb9502fdb765df361f5be8063bd7e839de 100644 GIT binary patch literal 108930 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 z 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

C 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�SP#B+MoK&m+tNsQlN8fLyRkRl{!3ZIUKn6G) xdea)nTsRwckiUgkho|FR=YfCY!f*QcKl%#SRuc}f6+N3dF*uiohqSfN|JkkRdF}uJ diff --git a/journal/ASPIC - Journal. Index.md b/journal/ASPIC - Journal. Index.md index 269952e..5137b9b 100644 --- a/journal/ASPIC - Journal. Index.md +++ b/journal/ASPIC - Journal. Index.md @@ -59,9 +59,9 @@ Pour les trois documents de ce projet (ce journal — résumé/index —, les R - 29. Interprétation vocale des contacts par LLM - 30. Chantier des consignes — moteur générique -*(Numérotation et titres repris du découpage fait par Jean-Marc le 31 août 2026, légèrement reformulés par lui à cette occasion — se référer aux fichiers eux-mêmes pour le libellé exact. Section 27 (Pilotage vocal) validée de bout en bout et son fichier définitif déposé dans `/journal` le 2 septembre 2026. Section 28 (Écran de fond) ouverte le 2 septembre 2026, toujours **en cours** — passée d'une maquette graphique exploratoire à un premier essai fonctionnel réel, puis (soirée du 2 au 3 septembre) à une pastille de comptage sur le classeur Contacts et à un premier affichage réel des post-its personnels sur le tableau de liège. Section 29 (Interprétation vocale des contacts par LLM) ouverte et son fichier définitif déposé le 4 septembre 2026 après validation de bout en bout sur un premier corpus réel ; fichiers de section à déposer par Jean-Marc, voir Statut actuel. Section 30 (Chantier des consignes — moteur générique) ouverte le 6 septembre 2026, fichier définitif rédigé le soir même après validation de bout en bout du mécanisme sur des cas réels ; fichier de section à déposer par Jean-Marc, voir Statut actuel.)* +*(Numérotation et titres repris du découpage fait par Jean-Marc le 31 août 2026, légèrement reformulés par lui à cette occasion — se référer aux fichiers eux-mêmes pour le libellé exact. Section 27 (Pilotage vocal) validée de bout en bout et son fichier définitif déposé dans `/journal` le 2 septembre 2026. Section 28 (Écran de fond) ouverte le 2 septembre 2026, toujours **en cours** — passée d'une maquette graphique exploratoire à un premier essai fonctionnel réel, puis (soirée du 2 au 3 septembre) à une pastille de comptage sur le classeur Contacts et à un premier affichage réel des post-its personnels sur le tableau de liège. Section 29 (Interprétation vocale des contacts par LLM) ouverte et son fichier définitif déposé le 4 septembre 2026 après validation de bout en bout sur un premier corpus réel ; fichiers de section à déposer par Jean-Marc, voir Statut actuel. Section 30 (Chantier des consignes — moteur générique) ouverte le 6 septembre 2026, fichier définitif rédigé le soir même après validation de bout en bout du mécanisme sur des cas réels ; **substantiellement complétée le 7 septembre 2026** (hiérarchisation cohérence/Tests/IA, traçabilité de l'agent, `REA_NomAffiche`, premier appel IA réel dans une consigne avec avertissement bloquant) — fichier de section mis à jour à déposer par Jean-Marc, voir Statut actuel.)* -## Statut actuel (2-6 septembre 2026) +## Statut actuel (2-7 septembre 2026) **Écrans "Identification" et "Liste des contacts"** (avec panneau détail intégré) : aboutis depuis le 25 août 2026, testés en production. **Prospection** (formulaire externe, vérification mail, envoi de doc) : livrée et testée en conditions réelles le 26 août 2026 (section 18). **Dépôt Git** en place depuis le 27-28 août (section 20), avec circuit de livraison FileZilla → SSH VPS → `git push` (section 23) — l'écriture directe par Claude reste bloquée côté proxy Anthropic, contournement adopté sans gêne. **MIRADOR** (authentification centralisée multi-bases, identifiant = email) branché et validé à deux utilisateurs le 30 août 2026, déployé sur `aspic.mvl-tls.fr` (développement) et `crm.aspic.bzh` (test), chacun avec son propre environnement Docker (sections 21, 24, 25). @@ -101,6 +101,8 @@ Version incrémentée une seule fois pour l'ensemble de cette session (pastille **6 septembre 2026 : chantier des consignes — un moteur générique pour sortir du code en dur (V1.14.15).** Détail complet en section 30 du journal, fil conceptuel complet en Réflexions stratégiques, section 15. Résumé : reprise le soir même, sous forme concrète, de la distinction règles/consignes esquissée le matin — première mise en œuvre volontairement circonscrite à la fiche Contacts (création/modification). Deux tables créées par Jean-Marc (`ASP_Fonctions` : catalogue de fonctions génériques ; `ASP_Consignes` : instructions actives par contexte/champ), un moteur générique unique (`moteur_consignes.php`, fonction `appliquerConsignes()`) qui lit ces tables à l'exécution et applique traitements (mise en forme silencieuse) puis tests (validation, avec message d'erreur personnalisé), et une bibliothèque de fonctions du catalogue (`consignes_fonctions.php` : `MAJUSCULE`, `NON_VIDE`, `PREMIERE_LETTRE_MAJUSCULE`). `contacts.php` réduit à un seul appel au moteur, plus aucun contrôle de champ écrit en dur. Détour initial corrigé par Jean-Marc (Claude avait d'abord codé en dur un contrôle par champ au lieu du moteur générique demandé), puis abandon délibéré de la validation en temps réel côté écran au profit de la robustesse — révélant au passage un bug préexistant (message d'erreur générique affiché au lieu du message réel du serveur), corrigé. Ajustements d'interface demandés en cours de test : toast d'erreur centré et rouge sur le panneau de saisie, rendu correct des retours à la ligne saisis dans un message d'erreur. Preuve de concept validée par Jean-Marc en fin de session : ajout de nouvelles consignes (`NON_VIDE` sur Prénom et Ville) sans la moindre modification de fichier PHP/JS, comportement immédiatement actif avec les fichiers déjà livrés. Version incrémentée une seule fois pour l'ensemble de cette session, sur les deux compteurs anticipés dès le début (code et conception) : **V1.14.15**. +**7 septembre 2026 : chantier des consignes — hiérarchisation, traçabilité et premier appel IA réel dans une consigne [Évolutions majeures] (V1.15.17).** Détail complet en section 30 du journal, fil stratégique en Réflexions stratégiques, section 17. Résumé : reprise le lendemain matin par une session dédiée au lien entre Claude et l'ordinateur de Jean-Marc (voir Réflexions stratégiques, section 16 — chantier finalement clos, sans suite), puis, le soir, extension substantielle du chantier des consignes ouvert le 6 septembre. Un badge de chargement générique (`consignes_apercu.php`, convention de fonction jumelle `_seraitDeclenchee`) prévient désormais l'utilisateur qu'un appel IA va réellement se produire avant qu'il ne soit lancé. Bug de coût découvert par Jean-Marc et corrigé structurellement : une soumission vouée à échouer sur un Test déclenchait quand même, en pure perte, un Traitement IA coûteux — le moteur exécute désormais trois phases strictement séquentielles (Traitements de cohérence, puis Tests, puis seulement si tout est passé les Traitements IA), sur la base d'un seul attribut déjà présent au catalogue (`FON_VisuelAttenteIA`). Traçabilité renforcée : un nom d'agent resté codé en dur ("Mat") a été remplacé par une source unique de vérité (`CNS_Agent`, la consigne elle-même) ; nouvelle colonne `REA_NomAffiche` sur `ASP_Realisations`, un instantané écrit une seule fois à la création (session utilisateur côté humain, nom d'agent côté IA) plutôt qu'une jointure recalculée à la lecture — écartée pour sa complexité et son incompatibilité avec une future architecture multi-bases (MIRADOR). Renommage `ASP_Agents.AGN_Nom` → `AGN_Prenom` à l'origine d'une régression du pilotage vocal (cinq fichiers pré-existants non mis à jour, "aucun impact" affirmé à tort par Claude sans avoir vérifié) — corrigée le soir même, leçon actée pour la suite (grep systématique avant d'affirmer l'absence d'impact d'un changement de schéma). Nouveau Test générique `consigne_sans_chiffre()`, appliqué par Jean-Marc sur Nom/Prénom/Ville sans retoucher un seul fichier. Premier vrai appel IA dans une consigne : `consigne_completer_code_postal()` journalise désormais un échec (ville ambiguë, ex. Paris) au lieu de rester silencieuse, via une nouvelle clé réservée générique `_avertissement` affichée immédiatement à l'écran — trois itérations d'affinage de ce retour visuel dans la soirée, jusqu'à un message réellement bloquant (bouton "Valider" explicite, pas de disparition automatique) qui ne fait que finaliser l'affichage sans jamais redéclencher un enregistrement. Version incrémentée deux fois au fil de cette même journée de travail (code en tout début, conception en fin de session, section 17 des Réflexions stratégiques étant jugée majeure) : **V1.15.17**. + **Reste à faire, noté au passage :** - Décider s'il faut renforcer le prompt d'extraction pour neutraliser les mots parasites/formules de politesse dictés autour d'une adresse mail (bug identifié le 4 septembre sur le corpus réel, correction non encore actée par Jean-Marc). - Clarifier l'origine de la coupure de fin de dictée observée sur un essai du 4 septembre (minuteur de silence à 3,5s vs interruption réelle) avant de décider si `DUREE_SILENCE_ARRET_MS` (`contact_ia_panel.js`) doit être allongée. @@ -125,7 +127,7 @@ Version incrémentée une seule fois pour l'ensemble de cette session (pastille - Revoir les règles de calcul des pastilles rouge/orange/vert (`calculerGroupe()`) pour éviter un tableau trop chargé en rouge/orange maintenant que le vert quitte le tableau immédiatement. - Décider du comportement du clic sur un post-it (aujourd'hui inerte) : ouvrir `liste_todolist.html` sur la tâche précise, ou afficher un détail directement sur l'écran de fond. - Capacité du tableau (20) et taille de la grille (4×5) dans `ecran_fond.html`/`todolist.php` sont des valeurs provisoires posées avant d'avoir les vrais pixels de la version finale — à ajuster ensemble après usage réel prolongé. -- Concevoir un nouveau type de consigne pour les cas nécessitant un appel IA en cours de traitement (ex. retrouver le code postal d'une ville saisie sans code postal) — contrat de retour plus riche que Traitement/Test actuel (silencieux / besoin de précision / question à poser), gestion d'échec réseau, coût et latence d'un appel externe (chantier des consignes, section 30) — session dédiée à prévoir. +- Concevoir le contrat de retour complet à trois issues (silencieux / besoin de précision / question à poser) pour les consignes à appel IA — le 7 septembre n'en a construit qu'un premier incrément à deux issues (succès silencieux / échec avec avertissement bloquant), voir section 30. À généraliser le jour où un second cas concret en montrera le besoin réel, pas par anticipation. - Écran de gestion des consignes par le boss (au lieu d'`INSERT`/`UPDATE` SQL à la main) — à construire après stabilisation du contrat ci-dessus, pour ne pas le refaire (chantier des consignes, section 30). - Réflexion sur un catalogue restreint de consignes/fonctions avancées à proposer aux futurs utilisateurs de l'agence, sans leur ouvrir la création libre de A à Z — argument commercial identifié par Jean-Marc le 6 septembre (voir réflexions stratégiques, section 15). - Accumulation de plusieurs messages d'erreur à la fois dans le moteur de consignes (aujourd'hui, seul le premier test en échec est remonté). diff --git a/journal/ASPIC - Reflexions strategiques.md b/journal/ASPIC - Reflexions strategiques.md index 48e4b68..74741f4 100644 --- a/journal/ASPIC - Reflexions strategiques.md +++ b/journal/ASPIC - Reflexions strategiques.md @@ -230,3 +230,53 @@ Point explicitement acté avec Jean-Marc : **aucune solution, gratuite ou payant 3. Réfléchir à un **catalogue restreint et curaté** de consignes et de fonctions avancées, à proposer aux futurs clients de l'agence — Jean-Marc a été explicite sur le fait qu'il n'envisage pas d'ouvrir à ses futurs utilisateurs une création libre de consignes avancées "de A à Z" ; il y voit au contraire un argument commercial pour de futures mises à jour payantes ("Possibilité de nouvelles consignes pour vos assistants"). Ce point rejoint directement la distinction actée plus haut entre mécanisme générique (partagé, neutre) et catalogue de fonctions (à curater soigneusement, puisqu'il devient potentiellement un produit en soi). **Statut : premier cas concret bâti et validé, philosophie plus large confirmée par la pratique.** Le moteur générique de consignes existe, fonctionne, et a déjà changé de comportement une fois sans code — scellant, à l'échelle d'un cas modeste, l'intuition posée le matin même en section 14. Trois directions ouvertes pour la suite (consignes IA, écran de gestion, catalogue commercial), aucune engagée à ce stade au-delà de la discussion. + +## 16. Lier une session à l'ordinateur de Jean-Marc — vers la fin des allers-retours de fichiers, et une question de fond sur la visibilité du code (7 septembre 2026) + +**Origine — une question posée en marge, pas un chantier planifié.** Jean-Marc a repéré, dans des mails d'Anthropic, l'existence d'une fonctionnalité permettant de donner à Claude un accès en lecture/écriture direct à un ou plusieurs répertoires de son poste, et a demandé confirmation. Vérification faite (documentation officielle Anthropic) : la fonctionnalité existe bien — une session peut être liée à un ordinateur via l'application desktop Claude ("Link to this computer"), avec ensuite un octroi d'accès dossier par dossier (jamais le disque entier d'un bloc), strictement à la demande de l'utilisateur. + +**Le vrai motif, une fois creusé : soulager une friction bien réelle du circuit de livraison actuel.** Le mode de fonctionnement en place depuis le début du projet (fichiers envoyés en pièce jointe de conversation, à télécharger, parfois renommés en double par le navigateur, puis copiés/renommés à la main dans le dossier de transfert SFTP de Jean-Marc) fonctionne mais coûte de l'attention à chaque fichier, avec un risque concret d'erreur relevé par Jean-Marc lui-même : *"Parfois, notamment quand nos échanges sont intenses, je loupe un téléchargement et je suis aux fraises."* Deux irritants précis identifiés et confirmés techniquement réglés par ce mécanisme : +- Le contournement `.js.txt` pour les fichiers JavaScript (nécessaire jusqu'ici uniquement parce que la livraison passait par le téléchargement navigateur, peu compatible avec ce type de fichier) — disparaît entièrement avec une écriture directe sur disque. +- Le renommage automatique en doublon (`toto_47.php` au lieu d'écraser `toto.php`) — même cause, même remède : en écrivant directement dans le dossier cible, le fichier livré porte son nom final et écrase silencieusement l'ancien, sans étape de tri manuel. + +**Mécanique vérifiée dans la documentation officielle, à retenir pour la mise en œuvre :** +- Une fois un dossier accordé pour une tâche/projet lié à un ordinateur, l'autorisation est retenue d'une session à l'autre — pas besoin de la redonner à chaque ouverture. Condition permanente cependant : l'application desktop Claude doit être ouverte et la machine joignable au moment où une session cloud veut effectivement toucher aux fichiers ; application fermée, le pont est simplement indisponible (pas une erreur, pas une perte de la permission). +- Concernant le NAS Synology de Jean-Marc, accédé sous Windows via une adresse IP locale : un partage réseau **mappé sur une lettre de lecteur** (ex. `Z:\`) est pris en charge par le sélecteur de dossier ; un chemin UNC brut (`\\192.168.x.x\partage`) ne l'est pas directement. Jean-Marc a confirmé que son NAS est déjà monté par lettre — pas de point de blocage de ce côté. Seule variabilité relevée par Jean-Marc lui-même : le NAS peut se mettre en veille en cas d'inactivité prolongée et mettre un instant à répondre, mais reste actif par construction lorsqu'il est à son bureau. + +**Décision : Jean-Marc prépare un répertoire réseau dédié au développement d'ASPIC (`Développement`), avec une arborescence calquée sur celle du VPS**, pour que déposer un fichier reçu de Claude s'y réduise à un simple report dans le bon sous-dossier, sans réflexion supplémentaire. Ce pont ne remplace à aucun moment la gestion du dépôt GitHub, que Jean-Marc continue d'opérer intégralement lui-même — **précision explicite de sa part : la clé GitHub ne sera pas donnée à Claude dans le cadre de cette organisation**, ce qui clôt d'un coup la question du blocage de push déjà bien documentée (journal de développement, section 23) : le sujet devient sans objet plutôt que contourné. + +**Question de fond soulevée en cours de discussion : la documentation soignée du code a un revers.** Jean-Marc a exprimé une satisfaction ancienne et jamais obtenue de ses développeurs précédents — voir le code commenté avec soin, but qu'il avait longtemps réclamé sans l'obtenir — tout en identifiant lui-même la contrepartie : plus un fichier est documenté, plus il informe un œil indiscret qui y aurait accès (un visiteur via "Afficher le code source" sur les fichiers HTML/JS réellement exposés au navigateur ; ou, dans une hypothèse plus lointaine, un client final ayant lui-même accès aux fichiers de son propre hébergement, si le modèle (a) de la section 5 — éditeur déployé chez le client — était un jour retenu pour un projet one-shot). Rappel de contexte déjà posé et confirmé toujours valable : les fichiers PHP ne sont eux-mêmes jamais transmis au navigateur (exécution côté serveur), donc leurs commentaires ne sont, par construction, jamais visibles d'un simple visiteur — le risque concret porte avant tout sur les fichiers HTML/JS, et plus largement sur toute situation où quelqu'un obtiendrait un accès direct aux fichiers sources eux-mêmes plutôt qu'au seul rendu navigateur. + +**Solution retenue : une version "exploitation" du code, générée à la demande, jamais systématiquement.** Plutôt que de renoncer à la qualité de documentation acquise sur ce projet (dont la valeur pour la continuité du travail avec Claude reste entière, voir section 2), Jean-Marc a proposé de pouvoir demander, ponctuellement et une fois l'application arrivée à un certain point de maturité, une copie des sources débarrassée de tout commentaire — à déployer à la place de la version pleinement documentée, celle-ci restant la référence de travail. Décision actée : construire cet utilitaire (retrait de commentaires par analyse syntaxique réelle du langage — pas une simple recherche/remplacement de texte, qui risquerait de corrompre une chaîne de caractères contenant `//` ou un délimiteur de commentaire), à ranger dans un sous-dossier `Exploitation` du futur répertoire réseau, en miroir de `Développement`. Portée explicitement limitée, pour ne pas se tromper sur ce que ça protège réellement : un simple retrait de commentaires (le code, sa mise en forme et ses noms de variables restent identiques, ce n'est pas une minification ni un chantier d'obscurcissement) réduit la fuite d'information gratuite vers un œil curieux, mais ne constitue pas une vraie protection contre un acteur déterminé — cohérent avec le constat déjà posé en section 5 (aucune protection réelle n'existe pour du PHP/JS vanilla livré tel quel). + +**Confrontation au réel : la demande d'accès a buté sur un bug documenté de Windows, pas sur une erreur de configuration.** Une fois le répertoire préparé côté NAS, la demande d'octroi pour `G:\01. Version 1\000. Développement` a été refusée par le mécanisme de sélection de dossier, avec un message ne pointant vers aucune cause côté Jean-Marc ("Ask the user to connect the folder they want using the folder picker on their device, or pick a different folder"). Plutôt que de proposer une manipulation au hasard, recherche faite : il s'agit d'un bug Windows réel et déjà documenté (plusieurs tickets ouverts sur le dépôt public `anthropics/claude-code`, dont #38468, #24927, #24964) — le sélecteur de dossier de l'application desktop rejette actuellement, sous Windows, tout dossier situé hors du profil utilisateur (`C:\Users\\`), y compris un lecteur réseau mappé sur une lettre pourtant explicitement pris en charge par la documentation officielle ; les jonctions/liens symboliques ne contournent pas le problème, la résolution du chemin réel bloquant également ce chemin de traverse. Statut du bug à la date de cette session : non résolu, ticket fermé comme doublon sans correctif. Une tentative parallèle, créer un nouveau projet directement à partir d'un dossier pour voir si un autre point d'entrée existait, n'a fait apparaître aucune option de partage de fichiers. Conclusion honnête tirée de cet épisode, formulée par Jean-Marc lui-même et retenue comme point de vigilance pour la suite des échanges : une fonctionnalité présentée comme possible en théorie peut ne pas l'être réellement au moment de passer à l'action — une raison de plus, au-delà de ce chantier précis, de rester prudent sur ce qu'affirme Claude tant que ce n'est pas vérifié en conditions réelles. + +**Une seule alternative restait disponible — un dossier sous `C:\` — et Jean-Marc l'a refusée, pour deux raisons distinctes et toutes deux jugées valables.** La première, posée sous forme d'image par Jean-Marc lui-même : donner l'accès à une pièce, même partiel, se choisit d'abord sur la pièce la moins sensible — entre un coffre-fort à espace réduit et une pièce d'armoires de rangement, l'accès s'ouvre sur la seconde, jamais sur le premier ; le disque `C:` héberge le système et le profil de l'utilisateur, il n'a pas vocation à devenir un point d'échange de fichiers de développement, quel que soit le soin apporté à la restriction du dossier précis accordé. La seconde raison, plus concrète et finalement décisive : une expérience vécue par Jean-Marc, un disque `C:` d'un poste stratégique arrivé à saturation à un moment où personne n'avait le temps de s'en occuper, avec pertes de données à la clé. Le volume actuel d'ASPIC sur le réseau (un peu plus de 65 Mo) est dérisoire au regard des quelque 300 Go encore libres sur le NVMe de son poste — mais Jean-Marc raisonne sur la durée du projet et sur la tendance (de nouvelles applications viendront occuper `C:` au fil du temps), pas sur l'instantané d'aujourd'hui. Claude a reconnu ce raisonnement comme fondé plutôt que d'insister sur la marge disponible dans l'immédiat. + +**Décision finale, actée par Jean-Marc : abandon complet de l'accès direct au disque, retour à l'organisation existante.** Dans ses propres mots : *"restons zen, oublions cette idée d'accéder directement à une partie de mon disque autre que C: et restons sur l'organisation actuelle."* Le circuit de livraison redevient donc, sans changement, celui décrit en ouverture de cette section (téléchargement depuis la conversation, contournement `.js.txt` pour le JavaScript, renommage manuel `toto_nn.php` → `toto.php`) — les deux irritants identifiés en début de section restent entiers, faute d'un mécanisme technique aujourd'hui utilisable pour les résoudre. Effet positif retenu malgré tout par Jean-Marc : l'occasion de cette exploration l'a poussé à réorganiser son stockage réseau, une remise en ordre qu'il envisageait depuis longtemps et qu'il n'aurait pas faite sans ce prétexte. + +**Fil ouvert et volontairement laissé de côté : un connecteur GitHub repéré au compte de Jean-Marc.** En cherchant le sélecteur de dossier, Jean-Marc a découvert qu'une intégration GitHub était déjà activée au niveau de son compte Anthropic, sans qu'elle soit pour autant utilisable dans la conversation en cours (les outils disponibles n'en portaient aucune trace au moment de la vérification). Jean-Marc a choisi de ne pas creuser ce point maintenant ("je vais voir plus tard pour cette connexion GitHub"), sans lien avec la décision de ne pas donner sa clé GitHub à Claude pour l'organisation de fichiers locale (section précédente), qui reste, elle, définitivement actée et non remise en cause par cette découverte. + +**L'utilitaire de retrait de commentaires reste construit et disponible, indépendamment de l'issue de ce chantier.** Le renoncement à l'accès disque direct ne remet rien en cause côté "version exploitation" : les deux scripts (un pour le PHP par analyse syntaxique réelle via `token_get_all()`, un pour le HTML/JS via `terser` en configuration retrait-de-commentaires seul, sans compression ni renommage) ont été construits et validés ce même jour sur des fichiers réels du projet (syntaxe vérifiée après traitement, contenu fonctionnel inchangé) — prêts à resservir le jour où Jean-Marc en fera la demande, quel que soit le circuit de livraison alors en place pour les faire parvenir. + +**Statut en fin d'échange : chantier clos, pas suspendu.** Contrairement à la formulation précédente de ce paragraphe (qui envisageait deux chantiers parallèles en cours), l'accès direct au disque de Jean-Marc est abandonné, pas différé — à ne pas rouvrir sans qu'il en fasse à nouveau la demande, par exemple si Anthropic corrige un jour le bug identifié ci-dessus. Le circuit de livraison par téléchargement reste donc la référence pour la suite du projet. Le numéro de version (partie ``) n'a pas été avancé à l'occasion de cette section, conformément à la décision initiale de Jean-Marc — la nouvelle organisation qui devait servir de test grandeur réelle pour ce déclenchement n'ayant finalement pas vu le jour, ce report reste sans objet pour l'instant plutôt que remis à plus tard. + +## 17. Sortir du code en dur : règles et consignes comme mécanisme générique [Évolutions majeures] (7 septembre 2026) + +**Origine.** Dès le lendemain de la première mise en œuvre du moteur générique (section 15), Jean-Marc a engagé exactement le chantier que cette section-là avait explicitement mis de côté comme méritant "une session dédiée" plutôt qu'un simple ajout au catalogue : une consigne capable d'appeler l'IA en cours de traitement (retrouver le code postal d'une ville saisie sans code postal), avec tout ce que ça implique de nouveau pour le moteur — coût réseau à ne jamais gaspiller, traçabilité de qui a réellement agi, et honnêteté du retour utilisateur en cas d'échec. Suffisamment substantiel pour justifier une nouvelle section plutôt qu'un addendum à la section 15. + +**Le prix de la vitesse : hiérarchiser pour ne jamais payer un appel IA en pure perte.** Premier essai réel de Jean-Marc sur le nouveau moteur : une soumission vouée à échouer sur un Test (ex. champ obligatoire vide) déclenchait quand même, avant l'échec, un Traitement coûteux faisant appel à l'IA — appel réseau gaspillé, et aucune trace n'en subsistait puisque l'enregistrement entier était de toute façon rejeté ensuite. Diagnostic de Jean-Marc, structurel plutôt qu'un simple correctif ponctuel : *"il faut qu'on hiérarchise les traitements : d'abord les traitements de cohérence, après les traitements par IA."* Plutôt que de traiter ce cas précis à part, l'ordre d'exécution du moteur lui-même a été restructuré en trois phases séquentielles, distinguées par un seul attribut déjà présent dans le catalogue (`FON_VisuelAttenteIA`, voir plus bas) : d'abord les Traitements sans appel IA, puis tous les Tests (le premier échec arrête tout avant d'atteindre la moindre étape IA), et seulement une fois tous les Tests passés, les Traitements IA. Une seule distinction générique déjà présente sert donc à la fois de commande d'affichage (le badge, ci-dessous) et de garde-fou de coût — aucune nouvelle colonne, aucun cas particulier par fonction. + +**Un badge générique pour ne jamais laisser l'utilisateur dans le flou pendant un appel réseau.** Un Traitement pouvant désormais réellement contacter un service externe avant la fin d'un enregistrement, Jean-Marc a voulu un retour visuel plutôt qu'un silence pendant l'attente. Nouvel endpoint `consignes_apercu.php`, et une convention de fonction jumelle : tout Traitement marqué `FON_VisuelAttenteIA='O'` doit être accompagné d'une fonction `_seraitDeclenchee(array $valeurs): bool` — pure, sans appel réseau — répondant à "ce traitement se déclencherait-il réellement sur ces valeurs", utilisée pour décider, avant même de tenter l'enregistrement, s'il faut afficher un badge de chargement générique. Volontairement générique plutôt que personnalisé par agent/couleur : Jean-Marc a explicitement écarté un badge coloré par agent (*"si un jour un traitement fait appel à plusieurs agents à la suite, il ne faudrait pas que l'écran se transforme en sapin de Noël"*) et son affichage systématique à chaque enregistrement, IA ou non (*"l'utilisateur pourrait s'affoler sur le coût systématique d'une insertion client"*). Plusieurs allers-retours sur la taille du badge (130 → 50 → 25 → retour à 65px) avant validation — un détail purement cosmétique, mais qui a nécessité de regarder le rendu réel (Playwright) plutôt que de deviner une valeur en pixels dans l'abstrait. + +**Traçabilité : qui a réellement agi, jamais un nom inventé.** Premier jet de Claude sur la journalisation d'une action IA : un prénom d'agent codé en dur ("Mat"). Repéré et corrigé après une question directe de Jean-Marc (*"d'où sors-tu le diminutif Mat ?"*) — Claude a reconnu l'avoir inventé, sans source. Décision retenue : le nom de l'agent journalisé dans une réalisation vient désormais uniquement de `CNS_Agent` (la consigne elle-même), jamais d'une valeur proposée par la fonction de traitement — même principe que celui déjà en place pour un agent en échec de Test. Dans le prolongement direct, Jean-Marc a voulu qu'un enregistrement de réalisation garde le prénom affiché de qui a agi (humain ou IA) sans avoir besoin de le recalculer plus tard : *"si on stocke le prénom de l'utilisateur d'un côté et le prénom de l'agent en dur on est cool."* Une première proposition de Claude (jointure `ASP_Users` recalculée à la lecture) a été explicitement écartée par Jean-Marc, sur deux arguments distincts : la complexité de la requête (*"Ta requête SQL risque d'être compliquée non ?"*) et surtout la portabilité multi-bases du projet (*"comment vas-tu faire pour les agents qui sont dans une autre base ?"*, en écho direct à l'architecture MIRADOR, section 8). Solution retenue : un instantané écrit une seule fois à la création de la réalisation (`REA_NomAffiche`) — côté humain via `$_SESSION['USR_Prenom']` fixé une fois pour toutes à la connexion, côté IA via le nom déjà connu de l'agent — zéro requête supplémentaire à la lecture, zéro risque de base croisée. + +**Un renommage anodin en apparence, une leçon retenue.** À l'occasion de cette traçabilité, Jean-Marc a rappelé l'existence d'une table `ASP_Agents` déjà en place (utilisée pour le pilotage vocal, sections 11-12) et proposé d'harmoniser sa colonne `AGN_Nom` en `AGN_Prenom`, cohérent avec `USR_Prenom`. Claude a validé le renommage en affirmant "aucun impact côté code" — sans avoir grep le nom de colonne dans l'ensemble des fichiers existants. Conséquence concrète et immédiate pour Jean-Marc : *"j'ai un message qui me dit que la liste des agents n'est pas disponible !"* — cinq fichiers pré-existants (`agents.php`, `micro.js`, `contact_ia_panel.js`, `contact_ia_interprete.php`, `agent_notes.php`) référençaient encore `AGN_Nom`, cassant au passage le pilotage vocal. Réaction de Jean-Marc, sans dramatisation : *"Classique à ce stade du développement."* Leçon explicitement actée par Claude comme réflexe permanent pour la suite du projet, au-delà de ce seul incident : **grep systématiquement le nom d'une colonne dans tout le code avant d'affirmer "aucun impact" sur un changement de schéma, même quand ça semble anodin** — un changement de schéma n'est jamais gratuit à évaluer sans preuve, quelle que soit l'ancienneté ou la banalité apparente de la colonne touchée. + +**Le premier vrai "contrat de retour enrichi" pour une consigne à appel IA — plus modeste que prévu, mais réel.** La section 15 anticipait un contrat à trois issues (silencieux / besoin de précision / question à poser) pour ce type de consigne, jugé trop tôt à concevoir dans l'abstrait. Ce qui a réellement été construit ce soir est un premier incrément volontairement plus modeste : réutilisation du mécanisme de clé réservée déjà existant (`_realisation`, jamais écrite dans `$data`, extraite par le moteur) et ajout d'une seconde clé du même type, `_avertissement` — une simple chaîne, affichée immédiatement à l'écran, sans que le front-end sache jamais d'où elle vient (mécanisme générique, pas un cas particulier "code postal" câblé côté écran). `consigne_completer_code_postal`, quand elle ne peut rien déduire d'exploitable pour une ville ambiguë ou inconnue (le cas Paris, découpée en arrondissements, sans code postal unique), laisse désormais une trace honnête dans tous les cas : une `_realisation` est journalisée que l'appel ait réussi ou échoué (Jean-Marc avait explicitement signalé l'anomalie inverse : *"il y a un appel fait à l'IA et pas de trace dans les réalisations, ce qui n'est pas normal"*), et `_avertissement` fait en plus remonter l'échec à l'utilisateur sans délai. À noter honnêtement : ce n'est pas encore le contrat à trois issues complet envisagé en section 15, seulement un succès silencieux ou un échec avec avertissement — un choix délibéré de construire la plus petite chose réelle plutôt que l'abstraction complète par anticipation, dans la continuité de la discipline déjà appliquée sur ce projet ("généraliser à partir de 3 répétitions concrètes constatées", section 6). + +**D'un toast qui disparaît à un message qui exige une décision.** Trois allers-retours d'affinage dans la soirée sur le seul retour visuel de cet avertissement, chacun corrigeant un défaut concret repéré par l'usage réel : rouge et centré comme un vrai message d'erreur plutôt qu'un toast neutre en bas d'écran ; le panneau reste en mode édition au lieu de repasser silencieusement en mode vue (*"tu peux l'afficher en rouge et centré et rester dessus comme un message d'erreur"*) ; puis, une fois testé, le message disparaissait encore trop vite et la fiche restait visuellement "non validée" aux yeux de Jean-Marc malgré un enregistrement réellement réussi en base — solution retenue : un message réellement bloquant, sans disparition automatique, avec un unique bouton "Valider" dont le clic est la seule chose qui referme le message et fait alors passer l'affichage en mode vue. Dans les mots de Jean-Marc : *"je souhaite que le message s'affiche et reste en place [...] avec une instruction claire 'Saisissez le code postal vous-même' et que lorsque l'utilisateur clique, la fiche soit validée."* Point de conception à retenir : ce clic ne redéclenche jamais un enregistrement, il ne fait que clore l'état "attention requise" — le contact concerné est déjà bel et bien enregistré depuis le tout début de la séquence. + +**Statut.** L'ensemble validé par Jean-Marc au fil des essais réels de la soirée même, aucune modification de code en attente au-delà de ce qui est déjà livré. Deux points laissés ouverts consciemment plutôt qu'oubliés : le contrat à trois issues complet (silencieux/besoin de précision/question à poser) reste à concevoir le jour où un second cas concret en montrera le besoin réel, plutôt que d'être généralisé dès maintenant sur la seule base de ce premier exemple ; et le clic sur "Valider" ne relance aujourd'hui aucune revalidation automatique du champ concerné — à ajouter délibérément si un futur cas le justifie, pas par anticipation. + +Version : `` avait déjà avancé plus tôt dans cette même session de travail (`V1.14.15` → `V1.15.15`) pour du code livré en amont de cette réflexion ; c'est cette section-ci qui justifie de faire avancer `` de 15 à 17 (16 ayant déjà été utilisé plus tôt le même jour par la section précédente, in fine sans incidence sur la conception d'ASPIC) — nouvelle version : **V1.15.17**. diff --git a/journal/ASPIC-Journal. 30. Chantier des consignes.md b/journal/ASPIC-Journal. 30. Chantier des consignes.md index 10ed409..1c57996 100644 --- a/journal/ASPIC-Journal. 30. Chantier des consignes.md +++ b/journal/ASPIC-Journal. 30. Chantier des consignes.md @@ -67,10 +67,36 @@ Conventions retenues pour les valeurs de colonnes (choisies par Jean-Marc, diff **Test réel réussi en fin de session, sans aucune modification de code :** Jean-Marc a ajouté trois nouvelles lignes dans `ASP_Consignes` (`NON_VIDE` sur `CNT_Prenom` et `CNT_AdrVille`, réutilisant la fonction déjà cataloguée) — comportement immédiatement actif après dépôt des fichiers déjà livrés, aucun fichier PHP/JS retouché. Preuve de concept validée par Jean-Marc : *"On peut dire qu'on n'est pas mauvais !"* -**Reste à faire, noté en fin de session :** -- Concevoir un nouveau type de consigne pour les cas nécessitant un appel IA en cours de traitement (ex. retrouver le code postal d'une ville saisie sans code postal) — contrat de retour plus riche que Traitement/Test actuel (silencieux / besoin de précision / question à poser), gestion d'échec réseau, coût et latence d'un appel externe. Session dédiée à prévoir, pas un ajout mineur au catalogue existant. +**Reste à faire, noté en fin de session du 6 septembre :** +- Concevoir un nouveau type de consigne pour les cas nécessitant un appel IA en cours de traitement (ex. retrouver le code postal d'une ville saisie sans code postal) — contrat de retour plus riche que Traitement/Test actuel (silencieux / besoin de précision / question à poser), gestion d'échec réseau, coût et latence d'un appel externe. Session dédiée à prévoir, pas un ajout mineur au catalogue existant. *(Premier incrément construit dès le lendemain, voir 7 septembre 2026 ci-dessous — pas encore le contrat complet à trois issues.)* - Écran de gestion des consignes par le boss (au lieu de `INSERT`/`UPDATE` SQL à la main) — à construire après stabilisation du contrat ci-dessus, pour ne pas le refaire. - Réflexion sur un catalogue restreint de consignes/fonctions avancées à proposer aux futurs utilisateurs de l'agence, sans leur ouvrir la création libre de A à Z — argument commercial identifié par Jean-Marc ("Possibilité de nouvelles consignes pour vos assistants"). - Accumulation de plusieurs messages d'erreur à la fois (le moteur ne remonte aujourd'hui que le premier test en échec). - Gestion des consignes transverses à toute la fiche (`CNS_Champ` NULL, ex. contrôle de doublon) — non traitée par le moteur actuel. - Distinction Saisie/Validation réellement exploitée un jour (temps réel), si le besoin redevient assez fort pour justifier la complexité écartée ce soir. + +## Suite — 7 septembre 2026 : hiérarchisation, traçabilité, et premier appel IA réel dans une consigne + +**Contexte stratégique complet : Réflexions stratégiques, section 17 ([Évolutions majeures]).** Ce qui suit est le compte rendu technique correspondant. + +**1. Badge de chargement IA générique.** Nouvel endpoint `consignes_apercu.php` et convention de fonction jumelle : tout Traitement marqué `FON_VisuelAttenteIA='O'` dans `ASP_Fonctions` doit être accompagné d'une fonction `_seraitDeclenchee(array $valeurs): bool`, sans aucun appel réseau, qui répond seule à "ce traitement se déclencherait-il réellement sur ces valeurs". `auMoinsUneConsigneIaSeraitDeclenchee()` (`moteur_consignes.php`) interroge ces fonctions jumelles pour toutes les consignes actives du contexte/portée, avant même une tentative d'enregistrement — `liste_contacts.html` n'affiche le badge `#badge-ia-actif` que si la réponse est positive, jamais de façon systématique. Rendu : rond, centré à l'écran comme un toast d'erreur, 65px de côté après plusieurs essais (130 → 50 → 25 → 65), vérifiés au rendu réel via Playwright plutôt qu'en pixels devinés. `pointer-events:none` (jamais un obstacle au clic, même principe que les autres éléments purement informatifs de l'écran de fond). + +**2. Hiérarchisation des trois phases d'`appliquerConsignes()`.** Bug réel découvert par Jean-Marc : une soumission vouée à échouer sur un Test déclenchait quand même, avant l'échec, un Traitement IA coûteux — appel réseau gaspillé, sans même laisser de trace puisque l'enregistrement entier était rejeté ensuite. Le moteur exécute désormais trois phases strictement séquentielles, distinguées par le seul attribut `FON_VisuelAttenteIA` déjà présent : (1) tous les Traitements de cohérence (`FON_VisuelAttenteIA != 'O'`), (2) tous les Tests (le premier échec arrête tout, avant d'atteindre la moindre étape IA), (3) seulement si tous les Tests ont réussi, les Traitements IA (`FON_VisuelAttenteIA = 'O'`). Nouvelle fonction interne `executerTraitements(array $consignesTraitement, array &$data, array &$journalisations, array &$avertissements): void`, appelée deux fois (phase 1 et phase 3) avec un sous-ensemble différent de consignes. + +**3. Traçabilité de l'agent réel dans une réalisation journalisée.** `executerTraitements()` ne fait plus confiance à un nom d'agent proposé par la fonction de traitement elle-même (source d'un bug déjà corrigé : un prénom "Mat" resté codé en dur sans aucune source) — le nom journalisé dans `_realisation.agent` vient désormais systématiquement de `$c['CNS_Agent']` (la consigne active elle-même), tronqué à 15 caractères UTF-8, avec un repli sur la valeur de la fonction puis sur `'IA'` seulement si `CNS_Agent` est vide. Même principe déjà en place côté `$agentEchec` pour un Test en échec. + +**4. `REA_NomAffiche` — instantané du nom affiché, jamais recalculé à la lecture.** Nouvelle colonne sur `ASP_Realisations`, remplie une seule fois à la création de chaque ligne : côté humain, `$_SESSION['USR_Prenom']` (désormais chargé et stocké en session dès `aspic.php`, à la connexion — requête étendue `SELECT USR_Nom, USR_Prenom FROM ASP_Users`) ; côté IA, le même nom d'agent que celui journalisé dans `_realisation.agent` (voir point 3). Une première approche par jointure `ASP_Users` recalculée à la lecture a été écartée (complexité de la requête, et surtout incompatibilité avec un futur agent hébergé dans une autre base MIRADOR) au profit de cet instantané écrit une seule fois — zéro requête supplémentaire à la lecture, zéro risque de base croisée. `realisations.php` (GET et POST) et `contacts.php` (`journaliserRealisationsIA()`) mis à jour en conséquence ; `liste_contacts.html` affiche `r.REA_NomAffiche || r.REA_CodeUser || ""` et la colonne "Qui ?" a été élargie de 40 à 90px pour ne plus tronquer "Jean-Marc"/"Matilda". + +**5. Renommage `ASP_Agents.AGN_Nom` → `AGN_Prenom` (à l'initiative de Jean-Marc), et une régression corrigée.** Fait pour homogénéiser avec `USR_Prenom`. Claude a validé ce renommage en affirmant "aucun impact côté code" sans avoir grep le nom de colonne dans l'ensemble du projet — cinq fichiers pré-existants du pilotage vocal (`agents.php`, `micro.js`, `contact_ia_panel.js`, `contact_ia_interprete.php`, `agent_notes.php`) référençaient encore `AGN_Nom`, cassant la liste des agents ("la liste des agents n'est pas disponible !"). Tous corrigés le même soir. Leçon actée pour la suite (voir Réflexions stratégiques, section 17) : grep systématiquement le nom d'une colonne dans tout le code avant d'affirmer "aucun impact" sur un changement de schéma. + +**6. `consigne_sans_chiffre()` — nouveau Test générique.** `consignes_fonctions.php` : `return trim($valeur) === '' || !preg_match('/\d/', $valeur);`. Ajoutée au catalogue (`ASP_Fonctions`, code `SANS_CHIFFRE`) puis appliquée par Jean-Marc lui-même via trois nouvelles lignes `ASP_Consignes` (Nom, Prénom, Ville) — aucun fichier PHP/JS retouché pour l'étendre à un troisième champ, confirmant une fois de plus le principe du chantier. + +**7. `consigne_completer_code_postal()` — premier vrai appel IA dans une consigne, avec trace honnête en cas d'échec.** Reprend le contrat existant (`_realisation`, clé réservée déjà en place) et introduit une nouvelle clé réservée symétrique, `_avertissement` — une simple chaîne, affichée immédiatement à l'écran par le front-end sans qu'il sache jamais d'où elle vient. Quand l'IA ne peut rien déduire d'exploitable (ville ambiguë comme Paris, découpée en arrondissements) : une `_realisation` est journalisée dans tous les cas (même en échec — corrige l'anomalie signalée par Jean-Marc : un appel IA sans la moindre trace), et `_avertissement` est en plus renvoyé au front. `moteur_consignes.php` (`executerTraitements()`) extrait les deux clés en parallèle dans un nouveau tableau `$avertissements`, remonté par `appliquerConsignes()` (nouveau paramètre `?array &$avertissements = null`) puis par `contacts.php` dans la réponse JSON (`'avertissements' => $avertissementsIA`). + +**8. Affichage de l'avertissement côté écran — trois itérations dans la soirée.** D'abord un toast neutre, identique aux autres. Puis rouge et centré comme un vrai message d'erreur (`afficherToast(message, true)`), et le panneau reste en mode édition au lieu de repasser en mode vue après l'enregistrement (`afficherDetailPourId(idContact, avertissements.length ? "edition" : "vue")`) — pour que l'utilisateur puisse corriger tout de suite le champ resté incomplet, `contactCourant` étant malgré tout rafraîchi pour éviter un double POST en cas de nouvelle tentative d'enregistrement. Puis, une fois testé, le message disparaissait encore trop vite et la fiche restait visuellement "non validée" alors qu'elle était bien enregistrée : `afficherToast()` accepte désormais un 4ᵉ paramètre optionnel (`onValider`) qui, s'il est fourni, supprime la disparition automatique et ajoute un bouton "Valider" (nouvelle classe `.toast-bouton`) — le clic ferme le message et exécute `onValider`, ici un simple `basculerModeDetail("vue")` (aucune revalidation, aucun nouvel enregistrement déclenché, le contact étant déjà enregistré depuis le début de la séquence). Le texte de l'avertissement, côté `consignes_fonctions.php`, a été rendu plus impératif ("Saisissez le code postal vous-même.") en cohérence avec ce fonctionnement bloquant. + +**Version.** `` déjà avancé en tout début de cette session de travail (`V1.14.15` → `V1.15.15`, avant même le badge IA du point 1). `` avancé en fin de session à `17` (Réflexions stratégiques, nouvelle section 17) — version finale de la session : **V1.15.17**. + +**Reste à faire, noté en fin de session du 7 septembre :** +- Le contrat de retour à trois issues (silencieux / besoin de précision / question à poser), envisagé le 6 septembre, reste à concevoir dans son ensemble — ce qui a été construit ce 7 septembre n'en couvre que deux (succès silencieux, échec avec avertissement), volontairement, en attendant un second cas concret qui justifierait la généralisation. +- Tous les points laissés ouverts le 6 septembre (écran de gestion des consignes, catalogue commercial restreint, accumulation de plusieurs messages d'erreur, consignes transverses `CNS_Champ` NULL, distinction Saisie/Validation) restent entiers, aucun n'a été traité ce 7 septembre. diff --git a/liste_contacts.html b/liste_contacts.html index f71c36c..8c20208 100644 --- a/liste_contacts.html +++ b/liste_contacts.html @@ -675,7 +675,12 @@ .ligne-realisation.zebra-b{background:var(--zebra-bleu);} .ligne-realisation .col-rea{padding:0 8px 0 0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;} .col-rea-date{width:120px;flex:0 0 auto;} - .col-rea-qui{width:40px;flex:0 0 auto;} + /* 40px -> 90px (7 septembre 2026, nuit) : dimensionnée à l'origine pour un + code à 3 caractères (REA_CodeUser, ex. "JMP"), devenue trop étroite + depuis l'affichage de REA_NomAffiche (prénom en clair, ex. "Jean-Marc", + "Matilda") — le texte était tronqué à 2-3 caractères par l'ellipsis + ci-dessus (Jean-Marc : "n'affiche que 3 caractères"). */ + .col-rea-qui{width:90px;flex:0 0 auto;} .col-rea-action{width:190px;flex:0 0 auto;} .col-rea-comment{flex:1 1 auto;} #pied-realisations{ @@ -710,6 +715,59 @@ top:50%;bottom:auto;transform:translate(-50%,-50%); background:var(--rouge-suppression);color:#fff; } + /* -------- Badge IA générique (7 septembre 2026, soir) -------- + Affiché en plein milieu de l'écran, "comme s'il s'agissait d'un message" + (demande explicite de Jean-Marc) — même position que #toast.toast-erreur + ci-dessus, même z-index (jamais affiché en même temps qu'un toast dans la + pratique : masqué avant qu'un toast d'erreur éventuel n'apparaisse, voir + validerFormulaireContact()). Volontairement générique, pas un habillage + par agent/couleur (Jean-Marc a explicitement écarté cette idée : "si un + jour un traitement fait appel à plusieurs agents à la suite, il ne + faudrait pas que l'écran se transforme en sapin de Noël"). + Affiché UNIQUEMENT quand consignes_apercu.php répond que l'IA va + réellement être sollicitée (voir validerFormulaireContact() plus bas, + et moteur_consignes.php pour le mécanisme "_seraitDeclenchee") — jamais + de façon systématique à chaque enregistrement, ni pour un simple + enregistrement classique où le temps de traitement est imperceptible : + décision ferme de Jean-Marc ("l'utilisateur pourrait s'affoler sur le + coût systématique d'une insertion client"). Taille : 65px (7 septembre + 2026, nuit — plusieurs essais avec Jean-Marc, 130px puis 50px puis 25px + jugés tour à tour trop gros, avant un retour à 65px une fois un souci de + rafraîchissement d'écran écarté), confortablement au-dessus de la + quarantaine de pixels repérée comme seuil de lisibilité du dessin + (trois volutes fines) lors du tout premier test Playwright. Simple + valeur CSS, aucune autre incidence. pointer-events:none (même principe + que #micro-icone/#pastille-contacts sur l'écran de fond) : ce badge est + purement informatif, jamais un obstacle au clic. */ + #badge-ia-actif{ + position:fixed;top:50%;left:50%;transform:translate(-50%,-50%); + width:65px;height:65px; + display:none;z-index:700; + pointer-events:none; + } + #badge-ia-actif svg{display:block;width:100%;height:100%;} + /* Ligne "nom de l'agent" sous le message (7 septembre 2026) : seulement + pour le toast d'erreur, seulement quand la consigne en échec a un + CNS_Agent renseigné — voir afficherToast(message, erreur, agent) et + moteur_consignes.php. Italique pour la distinguer visuellement du + message lui-même, légèrement moins contrastée (mais toujours lisible + sur le fond rouge) plutôt qu'une simple répétition du même style. */ + #toast .toast-agent{ + margin-top:6px;font-style:italic;color:rgba(255,255,255,0.85); + } + /* Bouton de validation d'un toast bloquant (7 septembre 2026, avertissement + IA) : ce toast-là ne disparaît pas tout seul (voir afficherToast()) — il + faut un clic explicite de l'utilisateur pour le refermer, ce qui fait + alors repasser la fiche du mode édition au mode vue (voir + validerFormulaireContact()). Fond blanc/texte rouge plutôt qu'un simple + texte cliquable, pour bien marquer que c'est une action et pas une + information de plus. */ + #toast .toast-bouton{ + display:block;margin:12px auto 0;padding:6px 18px; + background:#fff;color:var(--rouge-suppression); + border:none;border-radius:4px;font-size:13px;font-weight:600; + cursor:pointer; + } @@ -1044,6 +1102,41 @@ Créé par Mevelia Solutions">

+ + +