mirror of
https://github.com/JMP-MS/ASPIC.git
synced 2026-10-27 16:07:10 +00:00
V1.012 Début du traitement par IA des retranscriptions des dictées
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
<?php
|
||||
/**
|
||||
* ASPIC — contact_ia_valide.php
|
||||
*
|
||||
* Outil de mise au point interne (4 septembre 2026, correction explicite de
|
||||
* Jean-Marc suite à un premier essai de contact_ia_test.html/.js) — PAS un
|
||||
* endpoint destiné aux futurs utilisateurs.
|
||||
*
|
||||
* Ne crée JAMAIS de contact réel (ni de profession réelle) : la première
|
||||
* version de contact_ia_test.js appelait directement contacts.php/
|
||||
* professions.php depuis cet outil de test, ce que Jean-Marc a explicitement
|
||||
* écarté. Ce fichier se contente d'enregistrer, côte à côte, les trois
|
||||
* étapes d'un essai d'interprétation :
|
||||
* - le texte brut tel que dicté (identique à l'esprit de dictees_test.php) ;
|
||||
* - ce que le LLM a compris (JSON renvoyé par contact_ia_interprete.php,
|
||||
* avant toute correction) ;
|
||||
* - ce que Jean-Marc a réellement validé après relecture (JSON des champs du
|
||||
* formulaire tels qu'affichés/corrigés au moment du clic sur "Valider").
|
||||
*
|
||||
* Objectif explicite de Jean-Marc : comparer les deux JSON dans la durée
|
||||
* pour juger la qualité de l'interprétation, et — plus tard — s'appuyer sur
|
||||
* ce qui est validé pour générer un post-it par instruction vocale, attribué
|
||||
* à un assistant (vision "bureau à l'ancienne"). Cette seconde partie n'est
|
||||
* PAS implémentée ici : elle suppose qu'un assistant puisse être attributaire
|
||||
* d'une tâche dans ASP_ToDoList, ce qui n'existe pas encore (voir "reste à
|
||||
* faire" du journal de développement) — ASP_PropositionsContact est
|
||||
* volontairement une table à part, pas une écriture anticipée dans
|
||||
* ASP_ToDoList qui préjugerait d'un mécanisme pas encore conçu.
|
||||
*
|
||||
* POST uniquement, corps JSON :
|
||||
* { "texteBrut": "...", "extraction": {...} | null, "valide": {...} }
|
||||
* "extraction" peut être null si l'utilisateur clique "Valider" sans être
|
||||
* passé par "Interpréter" (cas limite, pas bloqué ici).
|
||||
*
|
||||
* ⚠️ Nécessite la création préalable de la table par Jean-Marc lui-même
|
||||
* (Claude n'exécute jamais de modification de schéma — voir réflexions
|
||||
* stratégiques) :
|
||||
*
|
||||
* CREATE TABLE ASP_PropositionsContact (
|
||||
* PCT_Incr INT AUTO_INCREMENT PRIMARY KEY,
|
||||
* PCT_TexteBrut TEXT NOT NULL,
|
||||
* PCT_Extraction JSON NULL,
|
||||
* PCT_Valide JSON NOT NULL,
|
||||
* PCT_Utilisateur VARCHAR(10) NOT NULL,
|
||||
* PCT_Date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
* );
|
||||
*
|
||||
* Session utilisateur : accès réservé aux utilisateurs identifiés, même
|
||||
* principe que dictees_test.php/todolist.php.
|
||||
*/
|
||||
|
||||
session_start();
|
||||
header('Content-Type: application/json; charset=utf-8');
|
||||
require __DIR__ . '/db.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;
|
||||
}
|
||||
|
||||
$data = json_decode(file_get_contents('php://input'), true) ?? [];
|
||||
$texteBrut = trim((string) ($data['texteBrut'] ?? ''));
|
||||
$extraction = $data['extraction'] ?? null;
|
||||
$valide = $data['valide'] ?? null;
|
||||
|
||||
if ($texteBrut === '') {
|
||||
http_response_code(400);
|
||||
echo json_encode(['error' => 'Rien à enregistrer (texte brut vide)']);
|
||||
exit;
|
||||
}
|
||||
if (!$valide) {
|
||||
http_response_code(400);
|
||||
echo json_encode(['error' => 'Rien à enregistrer (champs validés absents)']);
|
||||
exit;
|
||||
}
|
||||
|
||||
try {
|
||||
$pdo = getDbConnection();
|
||||
} catch (PDOException $e) {
|
||||
http_response_code(500);
|
||||
echo json_encode(['error' => 'Connexion base de données impossible']);
|
||||
exit;
|
||||
}
|
||||
|
||||
try {
|
||||
$stmt = $pdo->prepare(
|
||||
'INSERT INTO ASP_PropositionsContact (PCT_TexteBrut, PCT_Extraction, PCT_Valide, PCT_Utilisateur)
|
||||
VALUES (?, ?, ?, ?)'
|
||||
);
|
||||
$stmt->execute([
|
||||
$texteBrut,
|
||||
$extraction !== null ? json_encode($extraction, JSON_UNESCAPED_UNICODE) : null,
|
||||
json_encode($valide, JSON_UNESCAPED_UNICODE),
|
||||
$_SESSION['USR_Code'],
|
||||
]);
|
||||
} catch (PDOException $e) {
|
||||
http_response_code(500);
|
||||
echo json_encode(['error' => 'Erreur base de données : ' . $e->getMessage() . ' — la table ASP_PropositionsContact existe-t-elle ? (voir en-tête de ce fichier)']);
|
||||
exit;
|
||||
}
|
||||
|
||||
echo json_encode(['success' => true, 'id' => (int) $pdo->lastInsertId()]);
|
||||
Reference in New Issue
Block a user