V1.005 Débuts de l'intégration de la voix

This commit is contained in:
2026-09-02 07:09:21 +00:00
parent a2b67b288e
commit 3126ef9403
12 changed files with 936 additions and 4 deletions
+81
View File
@@ -0,0 +1,81 @@
<?php
/**
* ASPIC — lilou_notes.php
*
* Étape 1 du pilotage vocal, volontairement "sans interprétation" (1er
* septembre 2026, décision de Jean-Marc) : reçoit le texte dicté à Lilou
* entre une phrase d'ouverture ("Lilou, ajoute une tâche...", "Lilou, un
* truc à faire...", "Lilou, note ça dans ma todolist...") et une phrase de
* clôture ("c'est tout Lilou") ou d'annulation ("Lilou annule"), et
* l'ajoute tel quel à un fichier texte global — aucune tentative de
* compréhension ici, y compris pour une annulation : on note ce qui a été
* dit, point (demande explicite de Jean-Marc). Objectif : accumuler un
* vrai corpus d'essais réels avant de définir des règles d'interprétation
* (étape 2, envisagée via n8n, avec des règles modifiables par
* l'utilisateur — voir réflexions stratégiques, section à venir sur le
* pilotage vocal), plutôt que de deviner ces règles à l'avance.
*
* POST uniquement, corps JSON : { "lignes": ["...", "..."] }
* (un tableau d'une ligne par phrase dictée, "ensuite" déjà retiré côté
* micro.js).
*
* Stockage provisoire (2 septembre 2026) : en plein déblocage d'un souci de
* droits d'écriture sur le sous-dossier notes_lilou/ (propriétaire
* 1001:users, www-data hors de ce groupe), le fichier de sortie est
* temporairement écrit directement à la racine de l'appli
* (dictees.txt, à côté de ce script) plutôt que dans notes_lilou/ — le
* temps de confirmer que le circuit complet fonctionne. Conséquence
* assumée pour ce soir : ce fichier n'est plus protégé par le .htaccess
* (qui ne couvre que notes_lilou/), donc techniquement accessible par son
* URL directe s'il est deviné. À remettre dans notes_lilou/ (avec les
* droits corrigés) une fois le test concluant — ne pas oublier.
*
* Session utilisateur : accès réservé aux utilisateurs identifiés, même
* principe que les autres endpoints (todolist.php, contacts.php...).
*/
session_start();
header('Content-Type: application/json; charset=utf-8');
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) ?? [];
$lignes = $data['lignes'] ?? [];
if (!is_array($lignes) || count($lignes) === 0) {
http_response_code(400);
echo json_encode(['error' => 'Aucune ligne à enregistrer']);
exit;
}
$fichier = __DIR__ . '/dictees.txt';
$horodatage = date('d/m/Y H:i:s');
$bloc = '=== ' . $horodatage . ' — ' . $_SESSION['USR_Code'] . " ===\n";
foreach ($lignes as $ligne) {
$ligne = trim((string) $ligne);
if ($ligne === '') {
continue;
}
$bloc .= ' ' . $ligne . "\n";
}
$bloc .= "\n";
$ok = file_put_contents($fichier, $bloc, FILE_APPEND | LOCK_EX);
if ($ok === false) {
http_response_code(500);
echo json_encode(['error' => "Impossible d'écrire dans le fichier de notes"]);
exit;
}
echo json_encode(['success' => true]);