# language: fr @error-handling @network-loss Fonctionnalité: Gestion de la perte de réseau et buffering adaptatif Contexte: Étant donné que je suis un utilisateur connecté Et que je suis en mode écoute Et qu'un contenu est en cours de lecture # 12.3 - Buffer adaptatif selon type de réseau (cf. TECHNICAL.md et ADR-002) Plan du Scénario: Paramètres de buffer selon le type de réseau Étant donné que je suis connecté en "" Quand le système initialise le buffer audio Alors le buffer minimum est de secondes Et le buffer cible est de secondes Et le buffer maximum est de secondes Exemples: | type_reseau | buffer_min | buffer_cible | buffer_max | | WiFi | 5 | 30 | 120 | | 4G | 10 | 45 | 120 | | 5G | 10 | 45 | 120 | | 3G | 30 | 90 | 300 | # Phase 1: Connexion instable Scénario: Connexion instable avec latence élevée - aucun message immédiat Étant donné que je suis connecté en 4G Et que le buffer contient 45 secondes de contenu Quand la latence réseau dépasse 500ms Alors aucun message n'est affiché immédiatement Et la lecture continue normalement sur le buffer Et le système tente de continuer le téléchargement en arrière-plan Scénario: Connexion instable pendant plus de 10 secondes - toast discret Étant donné que je suis connecté en 4G Et que la latence réseau dépasse 500ms depuis 10 secondes Quand le système détecte la latence prolongée Alors un toast discret s'affiche: "Connexion instable" Et le toast disparaît automatiquement après 3 secondes Et la lecture continue normalement # Phase 2: Perte totale réseau Scénario: Perte totale de réseau - lecture sur buffer Étant donné que je suis connecté en WiFi Et que le buffer contient 30 secondes de contenu Quand je perds totalement la connexion réseau Alors la lecture continue sur le buffer disponible Et un toast s'affiche: "Hors ligne, lecture sur buffer (30s restantes)" Et un compte à rebours du temps de buffer restant est visible Scénario: Buffer qui s'épuise pendant la perte réseau Étant donné que je suis hors ligne Et que le buffer contient 30 secondes de contenu Quand le contenu continue de jouer Alors le compte à rebours diminue en temps réel Et le toast affiche "Hors ligne, lecture sur buffer (15s restantes)" après 15 secondes Et le toast affiche "Hors ligne, lecture sur buffer (5s restantes)" après 25 secondes # Phase 3: Buffer épuisé sans reconnexion Scénario: Pause automatique après épuisement du buffer Étant donné que je suis hors ligne depuis 30 secondes Et que le buffer est complètement épuisé Quand il n'y a plus de contenu audio à lire Alors la lecture se met en pause automatiquement Et un overlay s'affiche: "Connexion perdue. Reconnexion en cours..." Et le système tente de se reconnecter automatiquement Scénario: Tentatives de reconnexion automatique Étant donné que la lecture est en pause suite à l'épuisement du buffer Quand le système tente de se reconnecter Alors une tentative de reconnexion est effectuée toutes les 5 secondes Et un maximum de 6 tentatives sont effectuées (30 secondes au total) Et l'overlay affiche "Tentative de reconnexion... (X/6)" # Phase 4: Basculement mode offline après échec reconnexion Scénario: Proposition du mode offline après 30 secondes d'échec Étant donné que 6 tentatives de reconnexion ont échoué Et que cela fait 30 secondes que je suis déconnecté Quand la 6ème tentative échoue Alors une popup s'affiche: "Voulez-vous continuer avec vos contenus téléchargés ?" Et la popup contient deux boutons: | bouton | action | | Réessayer | Nouvelle série de 6 tentatives | | Mode offline | Bascule sur contenus téléchargés | Scénario: Basculement réussi vers le mode offline Étant donné que la popup de mode offline est affichée Et que j'ai téléchargé 20 contenus dans ma zone géographique Quand je clique sur "Mode offline" Alors le système bascule sur les contenus téléchargés Et un nouveau contenu téléchargé démarre automatiquement Et un bandeau permanent indique "Mode hors ligne - Contenus téléchargés" Scénario: Aucun contenu téléchargé disponible Étant donné que la popup de mode offline est affichée Et que je n'ai aucun contenu téléchargé Quand je clique sur "Mode offline" Alors un message s'affiche: "Aucun contenu téléchargé disponible" Et je suis invité à me connecter en WiFi pour télécharger du contenu Et le bouton "Réessayer" reste la seule option # Reconnexion réussie Scénario: Reprise automatique après reconnexion Étant donné que la lecture est en pause depuis 15 secondes Et que j'étais à 02:35 du contenu en cours Quand la connexion réseau est rétablie Alors la lecture reprend automatiquement au point d'arrêt exact (02:35) Et un toast s'affiche: "Connexion rétablie" Et le toast disparaît après 3 secondes Et le buffer se remplit progressivement selon le type de réseau Scénario: Reconnexion avec changement de type de réseau Étant donné que j'étais connecté en WiFi Et que j'ai perdu la connexion Quand je me reconnecte en 4G Alors le système ajuste automatiquement les paramètres de buffer Et le buffer minimum passe de 5s à 10s Et le buffer cible passe de 30s à 45s Et la lecture reprend normalement # Cas spécifique: tunnel routier Scénario: Passage dans un tunnel avec perte de signal Étant donné que je conduis à 90 km/h sur autoroute Et que je suis connecté en 4G avec un buffer de 45 secondes Quand j'entre dans un tunnel et perds le signal Alors la lecture continue sur le buffer pendant 45 secondes maximum Et aucune notification n'est affichée pendant les 10 premières secondes Et un toast discret s'affiche après 10 secondes: "Connexion instable" Scénario: Sortie du tunnel avant épuisement du buffer Étant donné que je suis dans un tunnel depuis 30 secondes Et qu'il reste 15 secondes de buffer Quand je sors du tunnel et récupère le signal 4G Alors la lecture continue sans interruption Et le buffer se remplit à nouveau Et un toast s'affiche: "Connexion rétablie" # Handoff réseau (changement de cellule mobile) Scénario: Changement de cellule 4G pendant la lecture Étant donné que je conduis et change de cellule mobile toutes les 5-10 minutes Et que le buffer contient 45 secondes de contenu Quand un handoff de cellule se produit Alors la lecture continue sans interruption grâce au buffer Et la connexion à la nouvelle cellule se fait de manière transparente Et aucune notification n'est affichée si le handoff réussit en moins de 5 secondes # Mode offline préventif avant perte réseau Scénario: Téléchargement préventif en WiFi avant trajet Étant donné que je suis connecté en WiFi Et que j'ai activé le téléchargement automatique Quand le système détecte que je suis à l'arrêt en WiFi Alors le système me propose de télécharger du contenu pour mon trajet Et je peux sélectionner une zone géographique à télécharger Et le téléchargement se fait en arrière-plan # Métriques et monitoring Scénario: Tracking des événements de perte réseau pour amélioration Étant donné que je perds la connexion réseau Quand l'événement de perte est détecté Alors le système enregistre les métriques suivantes: | métrique | | Type de réseau avant perte | | Durée de la coupure | | Buffer disponible | | Position GPS approximative | | Heure de la journée | Et ces métriques sont anonymisées et envoyées en batch lors de la prochaine connexion WiFi Et les données servent à améliorer les paramètres de buffer