mirror of
https://github.com/JMP-MS/ASPIC.git
synced 2026-10-27 19:27:10 +00:00
V1.19.21 Réflexions stratégiques et gestion de la personnalité des collaborateurs
This commit is contained in:
@@ -302,3 +302,52 @@ En parallèle du chantier ci-dessus, Jean-Marc a revu de son côté la répartit
|
||||
- Exploiter enfin `AGN_Couleur`, portée sur cet écran mais encore inutilisée par aucun affichage réel (post-its du tableau de liège, bulles de dialogue d'une future Mission).
|
||||
- Contenu réel des classeurs Missions, Propositions, Livraisons et Gestion — aucun écran ni donnée derrière à ce stade, seule la classification est fixée (voir réflexions stratégiques, section 19).
|
||||
- Reconstituer, si l'occasion se présente, le détail de la session intermédiaire (~7 septembre) qui avait fait passer d'un classeur unique à 9 classeurs — non fait, faute de matière, comme déjà noté le 8 septembre.
|
||||
|
||||
|
||||
## 10 septembre 2026 (soir) : "collaborateurs" — construire et tester l'identité de chaque assistant, premier dialogue réel avec l'API Anthropic (V1.19.21)
|
||||
|
||||
*Réflexion stratégique associée : Réflexions stratégiques, section 20 (identité des collaborateurs — le chemin médian entre agent robotique et avatar-compagnon) ; section 21 (stockage de documents PDF, discussion architecturale indépendante de cette session technique, pas de code produit sur ce second sujet).*
|
||||
|
||||
### "Assistants" → "collaborateurs" : habillage seul, confirmé
|
||||
|
||||
Dans la continuité du glissement de vocabulaire déjà amorcé ("agents" → "assistants"), Jean-Marc a voulu franchir une dernière étape : "collaborateurs". Confirmé dès le départ comme un changement strictement côté présentation — `ASP_Agents`, les colonnes `AGN_*` et `agents.php` restent inchangés ("c'est notre cuisine interne") ; seul le libellé du panneau change ("Bureau des assistants" → "L'équipe des collaborateurs").
|
||||
|
||||
### Deux outils plein écran, intégrés à l'écran des collaborateurs plutôt qu'en outil à part
|
||||
|
||||
Jean-Marc a explicitement écarté l'idée d'un outil interne séparé (comme `dictees_test.php`/`contact_ia_test.html`), de peur qu'un outil isolé "fasse passer à côté de plein de choses" : les deux mécanismes suivants prennent la forme de deux boutons ajoutés sous le panneau des collaborateurs, chacun ouvrant un même overlay `#overlay-collab` en plein cadre (efface l'intégralité du bureau, y compris l'avant-plan), avec les 5 photos de collaborateurs en tête et un corps de fenêtre différent selon l'outil :
|
||||
|
||||
- **"Construire une identité"** — sélection d'un collaborateur en tête, puis un grand terminal de saisie (`<textarea>`) pour écrire ou modifier son texte d'identité, boutons Abandonner/Valider. Écriture via l'endpoint `collaborateurs_identite.php` (nouveau, PUT sur `AGN_Identite`).
|
||||
- **"Tester l'identité"** — même sélection, puis une vraie fenêtre de dialogue façon session de chat (bulles utilisateur/collaborateur), branchée sur l'API Anthropic pour un dialogue réel avec le collaborateur choisi, prenant en compte l'identité déjà enregistrée. Bouton Fermer, retour à l'écran des collaborateurs dans les deux cas.
|
||||
|
||||
`collaborateurs_identite.php` reste un endpoint interne (session ouverte suffisante, pas de contrôle par rôle — décision explicite de Jean-Marc tant qu'il reste seul utilisateur réel de l'application, à revoir le jour d'un second compte MIRADOR, voir en-tête du fichier) volontairement séparé d'`agents.php` : `AGN_Identite` n'est jamais renvoyée à l'écran des collaborateurs standard ni à aucun autre écran utilisateur — décision de confidentialité actée dès la conception (réflexions stratégiques, section 20) : le parcours de vie/la personnalité d'un collaborateur ne doit jamais être consultable tel quel, seule une présentation synthétisée par le collaborateur lui-même, en dialogue, pourra un jour en être tirée.
|
||||
|
||||
### Bug critique trouvé par test automatisé avant livraison : la cascade CSS `[hidden]` perdait toujours face à `display:flex`
|
||||
|
||||
Avant toute livraison, une vérification par navigateur headless (Playwright) a révélé un bug qui serait resté invisible à la seule relecture du code : `#overlay-collab{display:flex}` et `.overlay-collab-corps{display:flex}` — des règles d'auteur, nécessaires pour que l'overlay s'affiche correctement une fois ouvert — **l'emportaient systématiquement sur la règle native du navigateur `[hidden]{display:none}`, quelle que soit la spécificité du sélecteur**, parce que l'origine d'une règle (auteur vs agent utilisateur) prime sur la spécificité dans la cascade CSS. Conséquence en pratique : l'overlay plein écran restait **toujours affiché et interceptait tous les clics sur l'ensemble du bureau**, y compris avant toute ouverture volontaire, dès le chargement de la page — bug détecté quand un clic Playwright sur la flèche suivante a échoué avec un message explicite ("element intercepts pointer events", pointant vers `<div hidden="" id="overlay-collab">`). Corrigé par l'ajout de deux règles explicites `#overlay-collab[hidden]{display:none;}` et `.overlay-collab-corps[hidden]{display:none;}`, chacune commentée pour expliquer le mécanisme de cascade en cause — revérifié ensuite par un scénario Playwright complet (ouverture/fermeture des deux outils, lecture de `getComputedStyle().display` à chaque étape, aucune erreur JS).
|
||||
|
||||
### `collaborateur_dialogue.php` — premier dialogue réel avec l'API Anthropic dans ASPIC
|
||||
|
||||
Nouvel endpoint, sur le même schéma défensif que le reste du projet : session ouverte requise, méthode POST uniquement, `AGN_Incr` et l'historique de la conversation (`messages`) validés avant tout envoi. Prompt système construit dynamiquement à partir de `AGN_Prenom`/`AGN_Fonction`/`AGN_Identite`, avec des garde-fous explicites : le collaborateur reste un collègue professionnel, jamais un assistant IA générique ni une figure de compagnon ; il ne doit jamais réciter ni paraphraser son texte d'identité mot pour mot même si on le lui demande directement, toujours reformuler brièvement dans ses propres mots ; il peut avoir et exprimer des avis divergents de ceux de Jean-Marc ou d'un autre collaborateur (trait de caractère assumé, réflexions stratégiques section 20 : "magnifique, la vraie vie !"). Constantes : modèle `claude-sonnet-5`, `https://api.anthropic.com/v1/messages`, `anthropic-version: 2023-06-01`.
|
||||
|
||||
**Incident de production réel, diagnostiqué et résolu le soir même.** Premier essai de Jean-Marc (dictée d'une identité pour Matilda, puis test du dialogue) : erreur HTTP 400 de l'API Anthropic, *"This API key is not scoped to a workspace, so this request must include the anthropic-workspace-id header..."* — diagnostiqué comme une clé API scopée "organisation" plutôt que liée à un espace de travail précis. Deux remèdes possibles proposés à Jean-Marc : recréer la clé en sélectionnant un espace de travail à la création (aucun changement de code), ou ajouter une variable d'environnement `ANTHROPIC_WORKSPACE_ID` (implémentée en secours dans le code, header `anthropic-workspace-id` ajouté seulement si cette variable est définie). Jean-Marc a choisi la première option ("Je propose de faire simple, recréer la clé !") — confirmée fonctionnelle immédiatement après ("Cela fonctionne parfaitement !").
|
||||
|
||||
### Affinage de mise en page demandé après un vrai test en conditions réelles
|
||||
|
||||
Une fois les deux outils validés en usage réel, Jean-Marc a demandé un resserrement précis de l'espace vertical disponible pour la saisie/le dialogue, point par point : titre "identité de..." remonté en haut de l'overlay, espace réduit entre ce titre et la ligne des 5 photos (photos et texte sous les photos non retouchés), haut de la fenêtre de saisie/dialogue remonté, boutons descendus au plus bas dans les deux outils, zone de saisie du message de "Tester l'identité" agrandie à deux lignes, boutons Envoyer et Fermer mis côte à côte plutôt que l'un sous l'autre. Traduit en CSS par un resserrement des paddings/marges du haut de l'overlay (`#overlay-collab` : 28px→10px de padding vertical ; titre et ligne de photos : marges basses réduites) et une restructuration du bloc de saisie du chat (`#chat-input` en bloc pleine largeur autonome plutôt que dans une ligne flexible partagée avec les boutons, `rows="2"`, boutons Fermer/Envoyer réunis dans la même ligne sous la zone de texte).
|
||||
|
||||
### Capacité du champ `AGN_Identite` et indicateur d'occupation
|
||||
|
||||
En testant, Jean-Marc s'est interrogé sur la capacité réelle du champ (`TEXT` MySQL à l'origine, 65 535 octets) — sans besoin de saturation identifié dans l'immédiat, mais avec l'idée d'ajouter un indicateur visuel par prudence. Claude a d'abord qualifié cette limite de "largement inatteignable", ce que Jean-Marc a corrigé : l'intention de fond est que l'identité d'un collaborateur **s'enrichisse avec l'usage réel de l'application** (missions menées, réunions, compétences acquises — voir la Mission, réflexions stratégiques section 18) plutôt que de rester une biographie figée écrite une fois pour toutes — ce qui change la nature de la question (un plafond qui semble haut aujourd'hui peut devenir réel sur la durée de vie d'un collaborateur). Conséquence actée le soir même : colonne élargie par Jean-Marc directement en base (`ALTER TABLE ASP_Agents MODIFY COLUMN AGN_Identite MEDIUMTEXT NULL DEFAULT NULL;`, 16 777 215 octets), et ajout d'un compteur d'occupation sous la zone de saisie de "Construire une identité" (`#compteur-identite`), recalculé à chaque frappe, comptant les octets réels au sens de l'encodage UTF-8 stocké en base (`utf8mb4`, via `TextEncoder`, pas un simple compte de caractères — un caractère accentué ou spécial pouvant occuper plusieurs octets) : affichage neutre en usage normal, orangé au-delà de 90% de la capacité, rouge et bouton "Valider" désactivé au-delà de la limite — garde-fou également revérifié côté JavaScript avant tout envoi, pas seulement affiché.
|
||||
|
||||
### Fichiers touchés
|
||||
|
||||
`ecran_fond.html` (refonte complète de la logique d'interaction de l'overlay collaborateurs — structure DOM, positionnement, ouverture/fermeture, correctif de cascade CSS, resserrement de mise en page, compteur d'occupation), `collaborateurs_identite.php` (nouveau — lecture/écriture de `AGN_Identite`), `collaborateur_dialogue.php` (nouveau — dialogue réel via l'API Anthropic). Côté base : colonne `AGN_Identite` ajoutée par Jean-Marc à `ASP_Agents` en `TEXT` puis élargie en `MEDIUMTEXT` le soir même (voir ci-dessus).
|
||||
|
||||
### Statut en fin de session
|
||||
|
||||
Les deux outils validés par Jean-Marc en conditions réelles ("les deux outils fonctionnent parfaitement et passer de l'un à l'autre est vraiment idéal"), après correction du bug de cascade CSS et de l'incident de clé API. `<code>` avancé en tout début de cette même session (V1.18.19 → V1.19.20) pour le code livré ce soir ; `<conception>` avancé deux fois au cours de la même session, de 19 à 21, pour l'ouverture des sections 20 et 21 des Réflexions stratégiques — nouvelle version **V1.19.21**.
|
||||
|
||||
**Reste à faire, noté au passage :**
|
||||
- Rédaction des cinq textes d'identité eux-mêmes — Jean-Marc les écrit lui-même, à la première personne plutôt qu'à la troisième (choix motivé : un texte écrit comme les propres notes intimes du collaborateur aide davantage le modèle à en adopter la voix), Matilda déjà saisie via l'outil réel.
|
||||
- Lien concret entre une Mission close (réflexions stratégiques, section 18) et l'enrichissement réel de `AGN_Identite` au fil du temps — intention actée (section 20), rien conçu ni codé à ce stade.
|
||||
- Stockage de documents utilisateur (PDF) — réflexion architecturale actée (réflexions stratégiques, section 21 : stockage hors racine servie par le serveur web, endpoint PHP dédié, sous-dossier opaque par client en défense en profondeur), aucun développement engagé.
|
||||
|
||||
Reference in New Issue
Block a user