Files
ASPIC/dictees_test.php

99 lines
4.1 KiB
PHP

<?php
/**
* ASPIC — dictees_test.php
*
* Outil de mise au point interne (3 septembre 2026, demande de Jean-Marc) —
* PAS un endpoint destiné aux futurs utilisateurs. Reçoit, sans aucune
* interprétation, chaque énoncé capté par micro_test.js (branché
* temporairement sur le micro de l'écran de fond — voir le commentaire
* d'en-tête de ce fichier et celui d'ecran_fond.html) et l'enregistre tel
* quel dans ASP_DicteesTest — y compris les essais ratés, jamais filtrés ni
* supprimables depuis l'écran (décision explicite de Jean-Marc : un post-it
* raté fera aussi partie de la vraie vie des futurs utilisateurs, la banque
* de tests doit en tenir compte dès maintenant plutôt que de ne garder que
* les essais réussis).
*
* Objectif : accumuler un corpus réel de dictées sur le thème "Gestion des
* Contacts" — valeur par défaut de DCT_Theme, posée directement en base
* (DEFAULT 'Gestion des Contacts'), volontairement pas reprise ici pour ne
* pas dupliquer une valeur qui doit rester pilotée par la table — en vue de
* concevoir plus tard les règles d'interprétation du pilotage vocal (voir
* réflexions stratégiques).
*
* POST uniquement, corps JSON : { "texte": "..." } — un seul énoncé par
* appel (contrairement à agent_notes.php qui reçoit un lot de lignes d'une
* notation complète, ici chaque énoncé segmenté par le moteur de
* reconnaissance du navigateur est envoyé et enregistré immédiatement).
*
* Session utilisateur : accès réservé aux utilisateurs identifiés, même
* principe que les autres endpoints (agent_notes.php, todolist.php...).
*
* Ajout du 3 septembre 2026 (soir) — "mode adresse" de micro_test.js : le
* corps JSON peut porter en plus un champ optionnel "texteNormalise"
* (résultat du dictionnaire de conversion point/tiret/arobase appliqué
* côté client sur une adresse mail/URL dictée). Stocké dans une colonne
* séparée, DCT_TexteNormalise, JAMAIS à la place de DCT_Texte qui reste le
* texte brut tel que rendu par le moteur de reconnaissance — voir le
* commentaire d'en-tête de micro_test.js. NULL pour toutes les lignes hors
* "mode adresse", comme avant ce jour.
*
* ⚠️ Nécessite d'avoir ajouté la colonne en base avant déploiement :
* ALTER TABLE ASP_DicteesTest
* ADD COLUMN DCT_TexteNormalise VARCHAR(255) NULL DEFAULT NULL
* AFTER DCT_Texte;
* (modification de schéma à faire par Jean-Marc lui-même, comme toujours —
* voir réflexions stratégiques / journal sur ce point.)
*/
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) ?? [];
$texte = trim((string) ($data['texte'] ?? ''));
$texteNormalise = trim((string) ($data['texteNormalise'] ?? ''));
if ($texte === '') {
http_response_code(400);
echo json_encode(['error' => 'Rien à enregistrer']);
exit;
}
try {
$pdo = getDbConnection();
} catch (PDOException $e) {
http_response_code(500);
echo json_encode(['error' => 'Connexion base de données impossible']);
exit;
}
// DCT_Texte est un TEXT (pas de contrainte de longueur pratique, contrairement
// à CVX_Consigne dans ASP_ConsignesVoix qui est un varchar(200)) : la dictée
// brute est conservée intégralement, sans troncature — un énoncé sur les
// contacts (nom, profession, ville, téléphone...) peut être plus long qu'une
// simple consigne de tâche.
try {
$stmt = $pdo->prepare(
'INSERT INTO ASP_DicteesTest (DCT_Texte, DCT_Utilisateur, DCT_TexteNormalise) VALUES (?, ?, ?)'
);
$stmt->execute([$texte, $_SESSION['USR_Code'], $texteNormalise !== '' ? $texteNormalise : null]);
} catch (PDOException $e) {
http_response_code(500);
echo json_encode(['error' => 'Erreur base de données : ' . $e->getMessage()]);
exit;
}
echo json_encode(['success' => true]);