mirror of
https://github.com/JMP-MS/ASPIC.git
synced 2026-10-27 16:07:10 +00:00
99 lines
4.1 KiB
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]);
|