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
2.2 — Service audio (just_audio + audio_service)
Objectif
Implémenter PlaybackRepository avec just_audio pour le streaming et
audio_service pour la lecture en arrière-plan / contrôles écran verrouillé.
Périmètre & hors-périmètre
- Inclus : impl. concrète du repository, configuration
audio_service, mapping états plugin →PlaybackState, mapping erreurs →PlaybackFailure. - Exclus : domaine (2.1), UI (2.3).
Dépendances
2.1.
Conception
- Data (
features/playback/data/) :JustAudioPlaybackRepository implements PlaybackRepository.- Encapsule un
AudioPlayer(just_audio) + uneConcatenatingAudioSourcepour la file. - Expose
watch()en combinant les streams just_audio (playerStateStream,positionStream,currentIndexStream) →PlaybackState. - Capture les erreurs de source (URL invalide, réseau) →
AudioSourceFailure. - Intégration
audio_service:AudioHandlerreliant les commandes système (notification, casque) au repository.
- DI :
playbackRepositoryProvider(override en test par un fake). - Android : permissions/manifest requis par
audio_service(service de premier plan, etc.).
Plan TDD
- Red :
just_audio_playback_repository_test.dart— en abstrayantAudioPlayerderrière une fine façade mockable :loadconfigure la source etplaydélègue ; une exception de source →AudioSourceFailure. Le mapping des streams versPlaybackStateest vérifié sur des événements simulés. - Green : implémenter la façade + le repository + le mapping.
- Validation manuelle : lire une URL audio de test sur l'appareil (la lecture réelle ne s'automatise pas de façon fiable en unit test) — consigner le résultat.
- Refactor.
Definition of Done
- Test du repository vert (façade mockée) ; lecture réelle vérifiée manuellement.
- Lecture en arrière-plan fonctionnelle (écran éteint = audio continue).
tool/check.shpasse ; étape 2.2 cochée dansROADMAP.md.
Risques / notes
audio_serviceimpose une configuration Android précise (manifest, init). Prévoir un temps de mise au point.- Garder la frontière nette : aucune logique métier dans cette couche, uniquement adaptation au plugin.