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
+35 -26
View File
@@ -58,12 +58,18 @@ session_start();
header('Content-Type: application/json; charset=utf-8');
require __DIR__ . '/db.php';
require __DIR__ . '/journal_ia.php';
require __DIR__ . '/moteur_prompts.php';
if (empty($_SESSION['USR_Code'])) {
http_response_code(401);
echo json_encode(['error' => 'Non identifié — veuillez vous connecter.']);
exit;
}
// Prénom de l'utilisateur connecté (posé en session par aspic.php au login),
// jamais "Jean-Marc" en dur dans le prompt/le journal (11 septembre 2026,
// point relevé par Jean-Marc lui-même : ASPIC est censé pouvoir un jour
// tourner pour un autre patron, Joseph ou Sylvie).
$patron = trim((string) ($_SESSION['USR_Prenom'] ?? '')) ?: "l'utilisateur";
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
http_response_code(405);
echo json_encode(['error' => 'Méthode non autorisée']);
@@ -115,7 +121,7 @@ try {
$stmt = $pdo->prepare(
'SELECT m.MIS_Incr, m.MIS_AgentIncr, m.MIS_CompetenceCode, m.MIS_SiteIncr,
m.MIS_Titre, m.MIS_Objectif, m.MIS_Statut, m.MIS_Journal, m.MIS_HistoriqueJson,
a.AGN_Prenom, a.AGN_Fonction, a.AGN_Identite, a.AGN_Experience,
a.AGN_Prenom, a.AGN_Fonction, a.AGN_Identite, a.AGN_Experience, a.AGN_Competences,
c.CMP_Libelle, c.CMP_Description
FROM ASP_Missions m
JOIN ASP_Agents a ON a.AGN_Incr = m.MIS_AgentIncr
@@ -413,7 +419,12 @@ $blocIdentite = $identite !== '' ? $identite : "(Aucune identité détaillée é
$experience = trim((string) ($mission['AGN_Experience'] ?? ''));
$blocExperience = $experience !== ''
? "\n\nCe que tu retiens de vos échanges précédents avec Jean-Marc :\n\n{$experience}"
? "\n\nCe que tu retiens de vos échanges précédents avec {$patron} :\n\n{$experience}"
: '';
$competencesAgent = trim((string) ($mission['AGN_Competences'] ?? ''));
$blocCompetences = $competencesAgent !== ''
? "\n\nTes compétences déclarées :\n\n{$competencesAgent}"
: '';
$outils = outilsDeLaCompetence($mission['MIS_CompetenceCode']);
@@ -425,29 +436,27 @@ $contexteSite = $site
? "Tu travailles sur un site déjà existant (\"{$site['SIT_Nom']}\", statut : {$site['SIT_Statut']}) — utilise lister_fichiers_site()/lire_fichier_site() avant de modifier quoi que ce soit à l'aveugle."
: "Aucun site n'existe encore pour cette mission — le premier appel à ecrire_fichier_site() le créera automatiquement.";
$promptSysteme = <<<PROMPT
Tu es {$prenom}, en mission au sein de l'agence de Jean-Marc. Voici ton parcours et ta personnalité, à ton seul usage, jamais à réciter tel quel :
{$blocIdentite}{$blocExperience}
Tu es actuellement en MISSION (pas une simple discussion de mise au point) : ceci a de vraies conséquences, tes outils modifient réellement des fichiers.
Titre de la mission : {$mission['MIS_Titre']}
Objectif : {$mission['MIS_Objectif']}
Compétence mobilisée : {$mission['CMP_Libelle']} — {$mission['CMP_Description']}
Tes outils RÉELS pour cette mission (et RIEN d'autre — ne promets jamais une capacité que tu n'as pas dans cette liste) :
{$listeOutils}
{$contexteSite}
Règles strictes :
- Tu ne travailles JAMAIS que pour l'entreprise de Jean-Marc elle-même, jamais pour un client tiers de cette entreprise.
- Tu ne peux utiliser comme contenu que ce que Jean-Marc te fournit explicitement dans cette conversation — tu n'as accès à aucune autre source.
- Une fois un fichier écrit, dis clairement ce que tu as fait, en une phrase naturelle, sans jargon technique excessif.
- Si l'objectif te semble flou ou incomplet, pose la question avant d'écrire un fichier au hasard.
PROMPT;
// Texte sorti du code le 11 septembre 2026 — voir moteur_prompts.php pour le
// texte par défaut/la table ASP_Prompts, bo_prompts.html pour l'édition.
try {
$promptSysteme = chargerPromptSysteme($pdo, 'MISSION_AGENT', [
'{{PRENOM}}' => $prenom,
'{{PATRON}}' => $patron,
'{{BLOC_IDENTITE}}' => $blocIdentite,
'{{BLOC_EXPERIENCE}}' => $blocExperience,
'{{BLOC_COMPETENCES}}' => $blocCompetences,
'{{TITRE_MISSION}}' => $mission['MIS_Titre'],
'{{OBJECTIF}}' => $mission['MIS_Objectif'],
'{{COMPETENCE_LIBELLE}}' => $mission['CMP_Libelle'],
'{{COMPETENCE_DESCRIPTION}}' => $mission['CMP_Description'],
'{{LISTE_OUTILS}}' => $listeOutils,
'{{CONTEXTE_SITE}}' => $contexteSite,
]);
} catch (Throwable $e) {
http_response_code(500);
echo json_encode(['error' => 'Prompt système indisponible : ' . $e->getMessage()]);
exit;
}
// -------- Historique --------
$historique = [];
@@ -519,7 +528,7 @@ if ($limiteAtteinte && $texteFinal === '') {
// -------- Persistance --------
$hordate = date('d/m/Y H:i');
$nouveauJournal = "\n--- $hordate ---\n[Jean-Marc] $message\n";
$nouveauJournal = "\n--- $hordate ---\n[{$patron}] $message\n";
foreach ($lignesJournal as $l) {
$nouveauJournal .= " $l\n";
}