← Retour

Documentation — Chrono Lecture Orthophonie

Aperçu général

Chrono Lecture Orthophonie est un outil web pour chronométrer les sessions de lecture à voix haute. Il permet de mesurer précisément le temps de lecture d'un patient, de comptabiliser les erreurs et de suivre la progression au fil des séances.

Architecture
Fichier index.html auto-contenu (HTML + CSS + JS) · Backend api.php pour la persistance des fiches et résultats · Page resultats.php pour le tableau de bord praticien.

Praticien vs Patient

L'application fonctionne dans deux contextes distincts selon l'URL :

👨‍⚕️ Praticien

URL : index.html (sans paramètre ?patient)

  • Crée et gère les fiches
  • Contrôle le mode, la pénalité, le délai
  • Voit l'historique complet de tous les patients
  • Génère les liens patients
  • Accède aux résultats détaillés

👦 Patient

URL : ?patient&fiche_data=… (lien généré)

  • Voit uniquement sa fiche et son chrono
  • Peut choisir son mode (si non imposé)
  • Sauvegarde automatique en fin de session
  • Peut exporter ses résultats

Les 4 modes de lecture

Page entière

Tous les mots sont affichés simultanément. L'élève lit la page complète au rythme qui lui convient. Les mots sont mélangés à chaque nouvelle session.

→ Évaluation globale, lecture courante

Mots aléatoires

Les mots apparaissent un par un dans un ordre mélangé (Fisher-Yates). Le nombre de mots est contrôlé par "Nb mots random". Espace ou clic = mot suivant.

→ Entraînement à la lecture rapide, discrimination

Défilement auto

Les mots défilent automatiquement à intervalle fixe (paramètre "Délai auto" en secondes). Aucune action requise du patient après le départ.

→ Travail de la fluence, rythme imposé

Surlignage

La page entière est visible. Un surlignage jaune suit le mot en cours. Les mots lus sont grisés. Analyse du temps par mot disponible. Mots mélangés à chaque session.

→ Guidage visuel, analyse fine des difficultés
Les modes Mots aléatoires et Surlignage génèrent des statistiques mot à mot (temps par mot, visualisation vert/jaune/rouge) enregistrées avec chaque résultat.

Décompte 3-2-1-GO!

À chaque pression sur Départ (ou Espace), un décompte de 3 secondes s'affiche en overlay sur la zone de lecture avant que le chrono ne démarre.

Pourquoi ?
En modes Page entière et Surlignage, les mots sont mélangés au moment du GO! pendant que l'overlay les masque — le patient ne voit jamais l'ordre avant le départ.

Pendant le décompte, les pressions sur Espace sont ignorées.

Gestion des fiches

Charger une fiche existante

Sélectionner dans le menu "Fiche" → cliquer Charger. Les fiches stockées sur le serveur sont listées automatiquement au démarrage.

Créer une nouvelle fiche

Cliquer + Nouvelle fiche et remplir :

La fiche est automatiquement sauvegardée sur le serveur et persistante entre les sessions. Si le serveur est indisponible, utiliser "Sauver en JSON" pour conserver le fichier localement.
Ne pas appuyer sur Espace dans le champ "Mots" — le raccourci clavier est ignoré dans les champs de saisie, mais par précaution, l'espace dans les mots est intentionnel.

Importer une fiche JSON

Cliquer Importer JSON → sélectionner un fichier .json exporté précédemment.

Format JSON d'une fiche

{
  "nom": "Voyelles 3",
  "description": "Sons on/an/ai/un…",
  "or": 16,
  "argent": 22,
  "bronze": 30,
  "penalite_erreur": 2,
  "taille_defaut": 72,
  "police_defaut": "Arial",
  "couleur": "#c64f7a",
  "mots": ["on","an","ai","un","oi",…]
}

Déroulement d'une session

  1. Charger une fiche et renseigner le nom de l'élève
  2. Choisir le mode et ajuster les paramètres (pénalité, délai, nb mots)
  3. Cliquer Départ ou appuyer Espace → décompte 3-2-1-GO! → chrono démarre
  4. En modes aléatoire et surlignage : Espace ou clic pour passer au mot suivant
  5. En fin de session naturelle (dernier mot atteint) : le chrono s'arrête et le résultat est auto-sauvé
  6. En cas d'arrêt manuel (Espace pendant la session) : cliquer Sauver essai pour enregistrer
  7. Comptabiliser les erreurs avec + erreur ou + (avant ou après)
Le chrono est basé sur performance.now() (résolution sous-milliseconde, sans dérive). Le temps corrigé = temps brut + (nb erreurs × pénalité).

Scores et médailles

Le temps corrigé est comparé aux seuils de la fiche :

🥇
Or
≤ seuil Or
🥈
Argent
≤ seuil Argent
🥉
Bronze
≤ seuil Bronze
Hors seuil
Au-dessus du Bronze

La vitesse en mots/minute est calculée en temps réel et affichée dans la carte "Score".

Générer un lien patient

Ouvrir 🔗 Générer un lien patient dans le panneau praticien :

Le lien est entièrement autonome : la fiche est encodée en base64 directement dans l'URL. Aucune connexion au serveur n'est requise pour le patient.

Exemple de lien généré

https://mon-site.fr/index.html?patient&fiche_data=eyJub20iOiJWb3llbGxlcy4uLiJ9&mode=auto&nom=Pierre&delay=2

Visualiser les résultats

Accéder à resultats.php pour le tableau de bord complet.

Fonctionnalités de resultats.php :
  • Filtres : par élève, fiche, plage de dates
  • KPIs : nb d'essais, meilleur temps, moyenne des 5 derniers, progression
  • Graphique : courbe de progression temporelle (une ligne par élève/fiche)
  • Analyse des mots : agrégat des temps par mot sur toutes les sessions filtrées (vert/jaune/rouge)
  • Table des sessions : triable, avec détail mot à mot dépliable

Les résultats sont également visibles dans l'historique en bas de la zone de lecture (praticien uniquement).

Interface patient

Le patient reçoit un lien et voit une interface épurée :

Raccourcis clavier

ToucheActionContexte
EspaceDépart / Stop / Mot suivantPartout (sauf champs de saisie)
+Ajouter une erreurSession en cours
-Retirer une erreurSession en cours
En modes Mots aléatoires et Surlignage : Espace passe au mot suivant si le chrono tourne, sinon démarre/stoppe.

Paramètres URL

ParamètreValeurDescription
patient(flag)Active le mode patient (UI épurée)
fiche_database64Fiche encodée (générée automatiquement)
fichenom.jsonCharge une fiche depuis /fiches/ (fallback)
modepage · random · auto · highlightPré-sélectionne le mode
nomtexte URL-encodéNom de l'élève
delaynombre (ex : 1.5)Délai défilement auto en secondes (défaut : 1.5)
penaltynombre (ex : 2)Pénalité par erreur en secondes (défaut : 2)

API PHP (api.php)

GET
?action=list_fiches — liste toutes les fiches de /fiches/*.json
POST
?action=save_fiche — enregistre une fiche JSON dans /fiches/
GET
?action=list_results — retourne tout /data/results.json
POST
?action=save_result — ajoute un résultat (déduplique par champ iso)
Les résultats sont dédupliqués par timestamp ISO. Si un patient POSTe deux fois le même résultat (double-clic, reconnexion), seul le premier est conservé.
Le répertoire /data/ est protégé par .htaccess (Deny from all). Les fiches dans /fiches/ sont accessibles publiquement (nécessaire pour les liens patients).

Fichiers du projet

index.html — Application principale (praticien + patient)
api.php — API REST (fiches + résultats)
resultats.php — Tableau de bord résultats
aide.html — Cette documentation
tests.html — Suite de tests automatisés + checklist manuelle
fiches/ — Fiches JSON (ex : voyelles3.json)
data/results.json — Résultats persistants (protégé)
data/.htaccess — Deny from all
Le dossier /fiches/ doit être accessible en écriture par le serveur web (chmod 775 fiches/). Idem pour /data/.