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

38 lines
2.4 KiB
Markdown

# 5.3 — Accès à l'espace parent & abritage de la gestion podcasts
## Objectif
Relier l'icône discrète de l'écran enfant à une porte parentale (saisie du code)
qui ouvre l'espace parent, et y intégrer la gestion des abonnements (J3).
## Périmètre & hors-périmètre
- Inclus : porte parentale (saisie + vérification), espace parent, déplacement de la gestion podcasts (J3) derrière cette porte.
- Exclus : réglages de limites (J6, qui s'ajouteront à l'espace parent).
## Dépendances
5.1, 5.2 (code + vérification), 3.x (gestion podcasts), 4.2 (icône posée).
## Conception
- **Application** : `VerifyParentalCodeUseCase` (utilise `ParentalCodeRepository.verify`).
- **Presentation** (`features/parental/presentation/`) :
- `ParentGateView` : pavé numérique, saisie 4 chiffres → `VerifyParentalCodeUseCase`. Bon code → navigation espace parent ; mauvais → message + reset saisie. Anti-spam simple (léger délai après N échecs) optionnel, documenté.
- `ParentHomeView` : menu de l'espace parent → « Mes podcasts » (écrans de J3), « Réglages » (changer le code), placeholder « Limites » (rempli en J6).
- Brancher les écrans de gestion podcasts de J3 ici, et **retirer l'accès dev temporaire** mis en place au J3.
- Sortie de l'espace parent → retour à l'écran enfant (qui réactive l'épinglage, J4).
## Plan TDD
1. **Red** : `verify_parental_code_use_case_test.dart` — bon code → `true` ; mauvais → `false` (repo mocké).
2. **Green** : implémenter.
3. **Red** : `parent_gate_view_test.dart` (widget) — saisie correcte → navigation vers l'espace parent (provider mocké) ; incorrecte → message d'erreur, pas de navigation.
4. **Green** : implémenter la porte.
5. **Red** : `parent_home_view_test.dart` — les entrées de menu mènent aux écrans attendus (podcasts, réglages).
6. **Green** : implémenter l'espace parent + câbler la gestion podcasts.
7. **Refactor** : supprimer l'accès dev temporaire de J3 ; vérifier qu'on n'atteint plus la gestion podcasts sans code.
## Definition of Done
- Tests use case + porte + accueil parent verts.
- Depuis l'écran enfant : ⚙️ → code correct → gestion des podcasts ; code incorrect → refus ; aucun accès à la gestion sans code.
- `tool/check.sh` passe ; étape 5.3 cochée dans `ROADMAP.md`.
## Risques / notes
- Vérifier qu'aucune route résiduelle (dev J3) ne contourne la porte parentale.