V1.23.24 Externalisation des prompts et évolutions des collaborateurs

This commit is contained in:
2026-09-11 20:25:48 +00:00
parent 05df1c5a28
commit bac56b85a0
17 changed files with 787 additions and 162 deletions
+55 -8
View File
@@ -38,11 +38,16 @@
#message-identite.ok{color:#7be07b;}
#message-identite.ko{color:#e14a5c;}
#liste-competences-collab{max-width:720px;}
#liste-competences-collab .ligne-comp{padding:8px 0;border-bottom:1px solid #1e1e1e;font-size:13px;}
#liste-competences-collab p{color:#666;font-size:12px;}
.lien-gestion-competences{display:inline-block;margin-top:12px;font-size:12px;color:#7ab8e0;}
#chat-messages{height:320px;overflow-y:auto;background:#000;border:1px solid #333;
border-radius:6px;padding:12px;display:flex;flex-direction:column;gap:8px;max-width:720px;}
.bulle-chat{max-width:80%;padding:8px 12px;border-radius:10px;font-size:13px;
line-height:1.5;white-space:pre-wrap;}
.bulle-chat.moi{align-self:flex-end;background:#264d73;color:#fff;}
.bulle-chat.moi{align-self:flex-end;background:#fbe14a;color:#1a1a1a;}
.bulle-chat.collab{align-self:flex-start;background:#333;color:#eee;}
.bulle-chat.systeme{align-self:center;color:#7a7;font-size:11px;font-style:italic;}
#chat-input{width:100%;max-width:720px;resize:none;margin-top:10px;}
@@ -61,6 +66,8 @@
<div class="onglets-collab" id="onglets" style="display:none;">
<button type="button" id="onglet-identite">Identité</button>
<button type="button" id="onglet-experience">Expérience</button>
<button type="button" id="onglet-relationnel">Relationnel</button>
<button type="button" id="onglet-competences">Compétences</button>
<button type="button" id="onglet-test">Tester</button>
</div>
@@ -74,6 +81,11 @@
<div id="message-identite"></div>
</div>
<div id="panneau-competences" class="panneau-corps">
<div id="liste-competences-collab"></div>
<a class="lien-gestion-competences" href="bo_competences.html">Gérer les compétences →</a>
</div>
<div id="panneau-test" class="panneau-corps">
<div id="chat-messages"></div>
<textarea id="chat-input" rows="2" placeholder="Écris un message…"></textarea>
@@ -103,8 +115,12 @@ const ligne = document.getElementById('ligne-photos');
const onglets = document.getElementById('onglets');
const ongletIdentite = document.getElementById('onglet-identite');
const ongletExperience = document.getElementById('onglet-experience');
const ongletRelationnel = document.getElementById('onglet-relationnel');
const ongletCompetences = document.getElementById('onglet-competences');
const ongletTest = document.getElementById('onglet-test');
const panneauIdentite = document.getElementById('panneau-identite');
const panneauCompetences = document.getElementById('panneau-competences');
const listeCompetencesCollab = document.getElementById('liste-competences-collab');
const panneauTest = document.getElementById('panneau-test');
const texteIdentite = document.getElementById('texte-identite');
const compteurIdentite = document.getElementById('compteur-identite');
@@ -119,7 +135,7 @@ const TEXTE_IDENTITE_MAX_OCTETS = 16777215;
const codeurUtf8 = new TextEncoder();
let collaborateurs = [];
let collaborateurActif = null;
let champActif = null; // 'AGN_Identite' | 'AGN_Experience'
let champActif = null; // 'AGN_Identite' | 'AGN_Experience' | 'AGN_Relationnel'
let historiqueChatTest = [];
let premierEchangeSession = true;
@@ -134,24 +150,46 @@ function mettreAJourCompteur() {
texteIdentite.addEventListener('input', mettreAJourCompteur);
function afficherPanneau(nom) {
panneauIdentite.classList.toggle('visible', nom === 'identite' || nom === 'experience');
panneauIdentite.classList.toggle('visible', nom === 'identite' || nom === 'experience' || nom === 'relationnel');
panneauCompetences.classList.toggle('visible', nom === 'competences');
panneauTest.classList.toggle('visible', nom === 'test');
[ongletIdentite, ongletExperience, ongletTest].forEach(function (b) { b.classList.remove('actif'); });
[ongletIdentite, ongletExperience, ongletRelationnel, ongletCompetences, ongletTest].forEach(function (b) { b.classList.remove('actif'); });
if (nom === 'identite') ongletIdentite.classList.add('actif');
if (nom === 'experience') ongletExperience.classList.add('actif');
if (nom === 'relationnel') ongletRelationnel.classList.add('actif');
if (nom === 'competences') ongletCompetences.classList.add('actif');
if (nom === 'test') ongletTest.classList.add('actif');
}
async function afficherCompetencesCollab() {
listeCompetencesCollab.innerHTML = 'Chargement…';
try {
const r = await fetch('agents_competences.php');
const data = await r.json();
const lignes = (data.attributions || []).filter(function (a) { return a.AGC_AgentIncr == collaborateurActif.AGN_Incr; });
listeCompetencesCollab.innerHTML = lignes.length ? '' : '<p>Aucune compétence attribuée.</p>';
lignes.forEach(function (a) {
const div = document.createElement('div');
div.className = 'ligne-comp';
div.textContent = a.CMP_Libelle;
listeCompetencesCollab.appendChild(div);
});
} catch (e) {
listeCompetencesCollab.innerHTML = '<p>Erreur de chargement.</p>';
}
}
const PANNEAU_PAR_CHAMP = { AGN_Identite: 'identite', AGN_Experience: 'experience', AGN_Relationnel: 'relationnel' };
function chargerChamp(champ) {
champActif = champ;
const estIdentite = champ === 'AGN_Identite';
texteIdentite.value = estIdentite
texteIdentite.value = champ === 'AGN_Identite'
? (collaborateurActif.AGN_Identite || EBAUCHES_IDENTITE[collaborateurActif.AGN_Prenom] || '')
: (collaborateurActif.AGN_Experience || '');
: (collaborateurActif[champ] || '');
messageIdentite.textContent = '';
messageIdentite.className = '';
mettreAJourCompteur();
afficherPanneau(estIdentite ? 'identite' : 'experience');
afficherPanneau(PANNEAU_PAR_CHAMP[champ]);
}
function ouvrirTest() {
@@ -165,6 +203,13 @@ function ouvrirTest() {
function ajouterBulle(role, texte) {
const b = document.createElement('div');
b.className = 'bulle-chat ' + role;
// Couleur du collaborateur (AGN_Couleur, pastel) sur ses propres bulles —
// le jaune classique du post-it (#fbe14a, voir ecran_fond.html, "toujours
// pour l'humain") reste fixe en CSS pour "moi", jamais écrasé ici.
if (role === 'collab' && collaborateurActif && collaborateurActif.AGN_Couleur) {
b.style.background = collaborateurActif.AGN_Couleur;
b.style.color = '#1a1a1a';
}
b.textContent = texte;
chatMessages.appendChild(b);
chatMessages.scrollTop = chatMessages.scrollHeight;
@@ -207,6 +252,8 @@ async function chargerCollaborateurs() {
ongletIdentite.addEventListener('click', function () { chargerChamp('AGN_Identite'); });
ongletExperience.addEventListener('click', function () { chargerChamp('AGN_Experience'); });
ongletRelationnel.addEventListener('click', function () { chargerChamp('AGN_Relationnel'); });
ongletCompetences.addEventListener('click', function () { afficherPanneau('competences'); afficherCompetencesCollab(); });
ongletTest.addEventListener('click', ouvrirTest);
btnAbandonner.addEventListener('click', function () { chargerChamp(champActif); });