16fd4c8c36
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>
2.2 KiB
2.2 KiB
6.2 — Avertissements doux
Objectif
Prévenir l'enfant en douceur, en amont de l'échéance, sans interrompre l'écoute : « Encore 5 minutes 🌙 », « C'est la dernière histoire ⭐ ».
Périmètre & hors-périmètre
- Inclus : observation de
LimitStatus, affichage non bloquant des avertissements, anti-répétition. - Exclus : l'arrêt et l'écran de fin (6.3).
Dépendances
6.1 (LimitEvaluator, LimitStatus), 2.x (lecture en cours), 4.x (espace enfant).
Conception
- Presentation (
features/limits/presentation/) :LimitsController(Riverpod) : combine les compteurs (temps via un tick périodique, histoires via les événements de lecture) et appelleEvaluateLimitsUseCase→ exposeLimitStatus.- Sur transition vers
warnTimeSoon/warnLastStory: afficher un overlay/snackbar doux (texte + emoji), non bloquant, qui se referme seul. La lecture continue. - Anti-répétition : chaque avertissement ne s'affiche qu'une fois par session/seuil (mémoriser le dernier
LimitStatusnotifié). - Ton et style : doux, rassurant, cohérent avec le thème coucher (0.3).
- Le tick de temps : un timer léger qui met à jour
elapsedet réévalue ; s'arrête quand la lecture est en pause.
Plan TDD
- Red :
limits_controller_test.dart— séquence d'états simulés : passage àwarnTimeSoondéclenche une notification ; rester enwarnTimeSoonne la re-déclenche pas ;warnLastStorynotifie une fois. - Green : implémenter le contrôleur + anti-répétition.
- Red :
warning_overlay_test.dart(widget) — surwarnTimeSoon, le texte « Encore 5 minutes » apparaît puis disparaît ; la lecture n'est pas interrompue (le lecteur reste monté/actif). - Green : implémenter l'overlay.
- Refactor.
Definition of Done
- Tests contrôleur (anti-répétition) + widget verts.
- Démo : les avertissements apparaissent au bon moment, une seule fois, sans couper le son.
tool/check.shpasse ; étape 6.2 cochée dansROADMAP.md.
Risques / notes
- Le timer doit se mettre en pause avec la lecture pour ne pas avertir/arrêter à tort pendant une pause.
- Textes des messages = constantes nommées (faciles à ajuster / traduire plus tard).