Files
Vincent Bourdon 16fd4c8c36 docs: cadrage initial Storytime (specs par jalon, roadmap, CLAUDE.md)
Lecteur d'histoires cadenassé pour le coucher (Android/Flutter).
- CLAUDE.md : principes craftsmanship/TDD/clean code/clean archi + decisions techniques
- ROADMAP.md : suivi haut niveau des 7 jalons, a tenir a jour par etape
- docs/specs/ : specs completes decoupees par jalon, etapes en sous-fichiers
- .gitignore Flutter (pubspec.lock versionne, projet applicatif)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 17:03:33 +02:00

2.5 KiB

6.3 — Écran de fin & reprise parent

Objectif

À l'atteinte d'une limite, arrêter la lecture et afficher un écran apaisant « C'est fini pour ce soir 🌙 », l'app restant épinglée ; seule la saisie du code parental permet de reprendre.

Périmètre & hors-périmètre

  • Inclus : réaction à LimitStatus.reached (stop lecture + écran de fin), verrouillage de la reprise derrière le code parental.
  • Exclus : la logique de décision (6.1) et les avertissements (6.2).

Dépendances

6.1, 6.2, 2.x (arrêt lecture), 1.x (épinglage maintenu), 5.x (vérification du code).

Conception

  • Presentation :
    • Quand LimitsController passe à reached : appeler l'arrêt de lecture (PauseStoryUseCase/stop) puis afficher BedtimeOverEndView (plein écran, doux, étoiles/lune).
    • L'app reste épinglée ; l'écran de fin ne propose aucune sortie système.
    • Reprise : un bouton discret « Parent » → ParentGateView (J5). Code correct → réinitialise/lève la limite pour la session (ou ouvre l'espace parent pour ajuster les réglages) ; code incorrect → reste sur l'écran de fin.
    • Décision à figer : reprendre annule-t-il la limite du soir, ou ré-autorise-t-il une histoire de plus ? → documenter le comportement choisi.
  • Cohérence avec le reset quotidien (6.1) : le lendemain, compteurs repartis de zéro.

Plan TDD

  1. Red : end_session_flow_test.dart (contrôleur) — transition vers reached → appel d'arrêt de lecture + signal d'affichage de l'écran de fin.
  2. Green : implémenter la réaction.
  3. Red : bedtime_over_end_view_test.dart (widget) — l'écran de fin s'affiche ; le bouton « Parent » ouvre la porte ; code correct → reprise selon comportement documenté ; incorrect → reste bloqué.
  4. Green : implémenter l'écran + câblage avec la porte parentale.
  5. Validation manuelle : sur appareil, atteindre une limite (régler un court délai) → lecture stoppée, écran de fin, reprise uniquement par code, app non quittable.
  6. Refactor.

Definition of Done

  • Tests flux de fin + écran + reprise verts.
  • Démo manuelle complète consignée (limite atteinte → fin → reprise parent).
  • Comportement de reprise documenté.
  • tool/check.sh passe ; étape 6.3 cochée dans ROADMAP.md.

Risques / notes

  • S'assurer que l'écran de fin ne laisse aucune faille de navigation vers le système.
  • Bien gérer le cas « les deux limites » : la première atteinte déclenche la fin.