Modele d'etats par ecran -- Revise Mieux
Pour chaque ecran critique, les 11 etats d'affichage sont decrits explicitement.
Les etats couverts : Default, Loading, Processing, Success, Empty, Partial, Stale, OCR Uncertainty, Error, Blocked, Retry.
1. Dashboard eleve
| Etat |
Ce que l'utilisateur voit |
Comportement technique |
| Default (soiree) |
Plan de soiree avec etapes, estimation duree, bouton "C'est parti" |
EveningPlan calcule, sessions composees |
| Default (hors soiree) |
Progression globale, liste des chapitres avec barres de maitrise |
GET /chapters + masteries |
| Loading |
Skeleton : rectangles animes pour header, plan, chapitres |
isLoading = true sur le fetch initial |
| Processing |
Bandeau "Traitement de tes photos en cours..." avec lien vers processing.tsx |
Pipeline J0 actif pour un chapitre |
| Success |
Plan de soiree avec coche verte sur une etape terminee, message de transition |
Apres completion d'une session, refresh du plan |
| Empty |
Checklist 3 etapes + chapitre demo. "Aucun chapitre" avec CTA "Charger le chapitre demo" |
0 chapitres en base, Z8-AC01/AC02 |
| Partial |
Chapitres charges mais plan de soiree incomplet (schedule partiel) |
Certaines matieres sans ScheduleSlots, bandeau "Ajoute ton emploi du temps" |
| Stale |
Donnees affichees normalement, indicateur discret de synchro |
Pull-to-refresh disponible, background refresh en cours |
| OCR Uncertainty |
Badge sur le chapitre : "2 zones a verifier" |
Items avec validation_required = true |
| Error |
Message "Impossible de charger tes chapitres" + bouton "Reessayer" |
Erreur reseau sur GET /chapters |
| Blocked |
N/A -- le dashboard n'est jamais bloque |
|
| Retry |
Bouton "Reessayer" apres un echec reseau |
Relance le fetch |
2. Capture photo
| Etat |
Ce que l'utilisateur voit |
Comportement technique |
| Default |
Zone camera avec guidage "Cadre ton cahier", compteur pages, vignettes |
Camera active, aucune photo prise |
| Loading |
Spinner bref pendant l'initialisation camera |
Chargement expo-camera |
| Processing |
N/A -- le processing est sur un ecran dedie |
|
| Success |
Flash visuel + vignette ajoutee a la bande de pages |
Photo capturee, ajoutee a la liste locale |
| Empty |
Zone camera vide, bouton "Terminer" inactif (opacite reduite) |
0 pages capturees |
| Partial |
Vignettes des pages capturees + bouton "+" pour en ajouter |
Entre 1 et 29 pages |
| Stale |
N/A -- tout est local |
|
| OCR Uncertainty |
N/A -- pre-processing (l'analyse vient apres) |
|
| Error |
"Camera indisponible" + option "Importer depuis la galerie" |
Permission camera refusee ou hardware |
| Blocked |
"30 pages maximum atteintes" -- bouton capture desactive |
pages.length >= 30 |
| Retry |
"Permission camera requise" + bouton vers les reglages |
Apres refus de permission |
3. Processing (pipeline OCR)
| Etat |
Ce que l'utilisateur voit |
Comportement technique |
| Default |
N/A -- cet ecran n'a pas d'etat au repos |
|
| Loading |
Phase 1 : "Lecture de tes pages..." avec animation de scan |
Progression 0-30% |
| Processing |
Phase 2 : "Creation des questions..." puis Phase 3 : "Presque fini..." |
Progression 30-70% puis 70-100% |
| Success |
Redirection automatique vers le chapitre cree |
Pipeline termine avec >= 1 item valide |
| Empty |
N/A -- redirige vers Recovery si 0 items |
|
| Partial |
"3/10 pages analysees" avec items deja disponibles |
Traitement en cours, pages traitees progressivement (Z2-AC01) |
| Stale |
"Tu peux fermer l'app, on te previent quand c'est pret" (apres 30s) |
Notification push programmee a la fin du pipeline |
| OCR Uncertainty |
N/A -- l'incertitude est geree apres, sur le chapitre |
|
| Error |
Redirection vers l'ecran Recovery (Z8-AC03) |
Pipeline echoue ou timeout > 60s |
| Blocked |
N/A |
|
| Retry |
Bouton "Reessayer" sur l'ecran Recovery |
Relance le pipeline J0 |
4. Detail chapitre / Carte de lecon
| Etat |
Ce que l'utilisateur voit |
Comportement technique |
| Default |
Barre maitrise globale + notions en accordeon + bouton "Lancer une session" |
Lesson card + masteries charges |
| Loading |
Skeleton : barre de maitrise grise, accordeons placeholder |
GET /chapters/{id}/lesson-card + GET /masteries |
| Processing |
Bandeau "Analyse des pages 4-6 en cours..." avec progression |
Pipeline incremental actif (Z2-AC14) |
| Success |
Animation transition maitrise apres une session completee |
Refresh des masteries apres session |
| Empty |
"Aucun contenu extrait. Verifie la qualite des photos et re-uploade." |
0 items valides (Z2-AC07) |
| Partial |
Items des pages traitees affiches + placeholders pages en cours |
Pipeline partiel (Z2-AC01), indicateur "3/10 pages analysees" |
| Stale |
Donnees affichees, fond refresh en cours |
Cache masteries potentiellement obsolete |
| OCR Uncertainty |
Badges "Zone illisible · page 4" + bandeau "N zones a verifier" |
Pages en FAILED, items avec validation_required |
| Error |
"Impossible de charger le chapitre" + bouton "Reessayer" |
Erreur reseau |
| Blocked |
Bouton diagnostic desactive + message "Aucun contenu n'a pu etre extrait" |
0 items valides (Z2-AC07) |
| Retry |
Badge "Exercices non generes · page X" avec bouton "Reessayer" |
Z2-AC11, max 3 retries manuels |
5. Session de revision
| Etat |
Ce que l'utilisateur voit |
Comportement technique |
| Default |
Question affichee + barre progression X/Y + zone de reponse |
Session IN_PROGRESS, question courante |
| Loading |
Skeleton question + spinner pendant la composition |
POST /sessions/daily + GET /sessions/{id}/questions |
| Processing |
N/A -- le LLM a deja genere les questions (lazy cache) |
|
| Success |
Feedback vert "Bonne reponse !" + micro-celebration si transition positive |
Score >= 0.7, transition maitrise positive |
| Empty |
"Tous tes items sont a jour ! Prochaine revision : [date]" + option consolidation |
Aucun item eligible (Z4-AC13) |
| Partial |
"Petite session rapide -- N questions sur ce chapitre" |
< 5 items dans le chapitre (Z4-AC11) |
| Stale |
N/A -- les questions sont fraiches a la composition |
|
| OCR Uncertainty |
Question avec badge "Contenu en cours de verification" |
Item avec validation_required, gabarit simple uniquement |
| Error |
"Preparation de tes exercices en cours... reessaie dans quelques secondes" |
LLM timeout (Z4-AC06) |
| Blocked |
N/A -- la session ne bloque jamais (gabarits simples si validation en cours) |
|
| Retry |
Apres 10s LLM timeout : mode "Relecture active" avec flashcards statiques |
Fallback Z4-AC12 |
6. Validation HITL
| Etat |
Ce que l'utilisateur voit |
Comportement technique |
| Default |
Item avec suggestion + 4 boutons d'action (Confirmer/Corriger/JNSP/Ignorer) |
ValidationTask PENDING |
| Loading |
Spinner pendant le chargement des validations |
GET /validations |
| Processing |
N/A |
|
| Success |
Confirmation visuelle "Mis a jour !" + navigation vers la validation suivante |
Task resolue (CONFIRMED/CORRECTED) |
| Empty |
"Aucune verification en attente. Tout est bon !" |
0 ValidationTasks PENDING (Z3-AC09) |
| Partial |
N/A |
|
| Stale |
N/A |
|
| OCR Uncertainty |
Crop de la page source affiche a cote de la suggestion pour comparaison |
Item a faible confidence |
| Error |
"Impossible de sauvegarder ta reponse" + bouton "Reessayer" |
Erreur reseau sur POST |
| Blocked |
N/A |
|
| Retry |
Bouton "Reessayer" apres echec de sauvegarde |
Relance le POST |
7. Dashboard parent
| Etat |
Ce que l'utilisateur voit |
Comportement technique |
| Default |
Maitrise globale de l'enfant + chapitres + activite semaine |
Donnees fraiches |
| Loading |
Skeleton dashboard |
Chargement initial |
| Processing |
N/A |
|
| Success |
N/A (pas d'action mutative depuis le dashboard parent) |
|
| Empty (enfant n'a pas commence) |
"[Prenom] n'a pas encore commence -- vous serez notifie des sa premiere session" |
0 sessions, 0 chapitres |
| Partial |
Chapitres avec items en verification mentionnes |
Items validation_required |
| Stale |
Donnees du dernier digest, indicateur "Mis a jour il y a 2j" |
Parent ne consulte pas frequemment |
| OCR Uncertainty |
"2 points en verification -- exercices simplifies en attendant" |
Items validation_required dans le chapitre |
| Error |
"Connexion perdue -- donnees du dernier chargement affichees" |
Erreur reseau |
| Blocked |
N/A |
|
| Retry |
Pull-to-refresh |
|
8. Onboarding eleve
| Etat |
Ce que l'utilisateur voit |
Comportement technique |
| Default |
Checklist 3 etapes + CTAs |
Premier acces |
| Loading |
Spinner sur le bouton "Charger le chapitre demo" |
POST /onboarding/seed-demo |
| Processing |
N/A |
|
| Success |
Redirection vers le dashboard avec le chapitre demo |
Seed reussi |
| Empty |
N/A (c'est l'etat initial par definition) |
|
| Partial |
N/A |
|
| Stale |
N/A |
|
| OCR Uncertainty |
N/A |
|
| Error |
"Impossible de charger le chapitre demo" + fallback vers le dashboard vide |
Erreur seed |
| Blocked |
N/A |
|
| Retry |
Bouton "Reessayer" ou navigation directe vers capture |
|
Matrice recapitulative : etats critiques par ecran
| Ecran |
Etats les plus risques (UX) |
AC de reference |
| Dashboard |
Empty (premier usage), Error (perte de confiance) |
Z8-AC01, Z8-AC02 |
| Capture |
Error (permission camera), Blocked (30 pages) |
Z2-AC03 |
| Processing |
Error (pipeline echoue, premier upload critique) |
Z8-AC03, Z8-AC04 |
| Detail chapitre |
Partial (pages en cours), OCR Uncertainty (zones illisibles) |
Z2-AC01, Z2-AC07 |
| Session |
Empty (rien a reviser), Error (LLM timeout), Retry (fallback flashcards) |
Z4-AC06, Z4-AC12, Z4-AC13 |
| Validation HITL |
Default (comprehension des actions) |
Z3-AC02 a Z3-AC05 |
| Dashboard parent |
Empty (enfant pas commence), Stale (pas consulte depuis longtemps) |
Z8-AC05, Z6-AC27 |