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>
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user