# language: fr Fonctionnalité: Audio-guide mode piéton (navigation manuelle) En tant qu'utilisateur à pied Je veux naviguer manuellement entre les séquences d'un audio-guide Afin de contrôler mon rythme de visite Contexte: Étant donné que l'application RoadWave est démarrée Et que l'utilisateur "jean@example.com" est connecté (gratuit) Et qu'un audio-guide piéton "Visite du Louvre" est disponible avec 12 séquences # 16.2.1 - Passage entre séquences Scénario: Fin de séquence normale avec pause automatique Étant donné que la séquence 1 "Introduction" est en cours de lecture Quand la séquence se termine à 2:15 Alors le player se met en pause automatiquement Et le message suivant s'affiche: "Séquence 1 terminée. Appuyez sur Suivant quand vous êtes prêt." Et la barre de progression indique "1/12 complétée" Scénario: Passage manuel à la séquence suivante Étant donné que la séquence 1 est terminée et le player en pause Quand l'utilisateur appuie sur le bouton [▶|] "Suivant" Alors la séquence 2 "Pyramide du Louvre" démarre immédiatement Et aucune latence n'est observée Scénario: Séquence avec publicité (1/5 séquences) Étant donné que la séquence 5 se termine Et que c'est la 5ème séquence (1 pub toutes les 5) Quand la séquence se termine Alors la publicité s'enchaîne automatiquement (sans attente bouton) Et la publicité se lit normalement Et elle est skippable après 5 secondes Scénario: Fin de publicité avec pause automatique Étant donné qu'une publicité est en cours de lecture Quand la publicité se termine Alors le player se met en pause automatiquement Et le message suivant s'affiche: "Séquence 6 prête. Appuyez sur Suivant." Et l'utilisateur doit cliquer sur [▶|] pour continuer Scénario: Flux complet séquence → pub → séquence Étant donné que la séquence 5 démarre Quand la séquence 5 se termine Alors la publicité démarre automatiquement Quand la publicité se termine Alors le player se met en pause Quand l'utilisateur clique sur [▶|] Alors la séquence 6 démarre Plan du Scénario: Fréquence de publicité configurable Étant donné que l'utilisateur gratuit écoute un audio-guide Et que la fréquence pub est configurée à Quand il termine la séquence Alors une publicité est insérée : Exemples: | frequence | numero_sequence | pub_inseree | | 1/5 | 5 | Oui | | 1/5 | 10 | Oui | | 1/5 | 4 | Non | | 1/3 | 3 | Oui | | 1/3 | 6 | Oui | Scénario: Utilisateur Premium sans publicités Étant donné que l'utilisateur "premium@example.com" est abonné Premium Et qu'il écoute un audio-guide piéton Quand il termine la séquence 5 Alors aucune publicité n'est insérée Et le player se met en pause immédiatement Et le message "Séquence 6 prête. Appuyez sur Suivant." s'affiche # 16.2.2 - Navigation et contrôles Scénario: Boutons de contrôle disponibles en mode piéton Étant donné qu'un audio-guide piéton est en lecture Quand l'utilisateur consulte les contrôles Alors les boutons suivants sont visibles: | bouton | fonction | | [▶\|] Suivant | Passe à la séquence suivante | | [\|◀] Précédent | Retour à la séquence précédente | | [⏸️] Pause | Pause temporaire | | [▶️] Play | Reprend la lecture | | [📋] Liste | Affiche toutes les séquences | Scénario: Passage à la séquence suivante pendant la lecture Étant donné que la séquence 3 "La Joconde" est en cours à 1:42/3:42 Quand l'utilisateur clique sur [▶|] "Suivant" Alors la séquence 4 "Vénus de Milo" démarre immédiatement Et la séquence 3 n'est pas marquée comme écoutée (car <80%) Scénario: Retour à la séquence précédente (saut direct) Étant donné que la séquence 5 est en cours de lecture Quand l'utilisateur clique sur [|◀] "Précédent" Alors la séquence 4 démarre depuis le début (0:00) Et il n'y a pas de logique "replay si >10s" (contrairement au contenu classique) Scénario: Pause et reprise pendant une séquence Étant donné que la séquence 2 est en cours à 1:15/1:48 Quand l'utilisateur clique sur [⏸️] "Pause" Alors la lecture se met en pause Et la position 1:15 est conservée Quand l'utilisateur clique sur [▶️] "Play" Alors la lecture reprend exactement à 1:15 Scénario: Interface liste des séquences Étant donné qu'un audio-guide de 12 séquences est en cours Quand l'utilisateur clique sur [📋] "Liste séquences" Alors une liste complète s'affiche avec: | élément | exemple | | Numéro et titre | "3. La Joconde" | | Durée | (3:42) | | État | ✅ Écouté / ▶️ En cours / ⭕ À écouter | | Date écoute (si écouté) | "Écouté le 15/01/2026" | Scénario: Séquence en cours dans la liste Étant donné que la séquence 3 est en cours à 1:22/3:42 Quand la liste des séquences est affichée Alors la séquence 3 affiche: """ ▶️ 3. La Joconde (3:42) - EN COURS ──●──────────── 1:22/3:42 """ Scénario: Navigation libre vers séquence non encore écoutée Étant donné que l'utilisateur est sur la séquence 3 Et que les séquences 4 à 12 n'ont pas été écoutées Quand l'utilisateur clique sur "8. Les Appartements de Napoléon" Alors la séquence 8 démarre immédiatement depuis 0:00 Et les séquences 4 à 7 restent marquées ⭕ "À écouter" Scénario: Retour à une séquence déjà écoutée Étant donné que la séquence 2 "Pyramide du Louvre" a été écoutée à 100% Et qu'elle est marquée ✅ "Écouté" Quand l'utilisateur clique dessus dans la liste Alors la séquence 2 démarre depuis 0:00 Et le statut ✅ est conservé Scénario: Checkmarks sur séquences écoutées >80% Étant donné que l'utilisateur écoute la séquence 2 de durée 1:48 Quand il écoute jusqu'à 1:30 (83% de complétion) Et qu'il passe à la séquence suivante Alors la séquence 2 est marquée ✅ "Écouté" Et la date d'écoute est enregistrée Scénario: Pas de checkmark si séquence écoutée <80% Étant donné que l'utilisateur écoute la séquence 3 de durée 3:42 Quand il écoute jusqu'à 1:30 (40% de complétion) Et qu'il passe à la séquence suivante Alors la séquence 3 reste marquée ⭕ "À écouter" Scénario: Bouton "Tout afficher" si plus de 6 séquences Étant donné un audio-guide avec 12 séquences Quand la liste est affichée Alors seules les 6 premières séquences sont visibles initialement Et un bouton "Tout afficher ▼" est présent Quand l'utilisateur clique sur "Tout afficher ▼" Alors les 6 séquences restantes sont affichées Scénario: Saut vers séquence spécifique depuis la barre de progression Étant donné qu'un audio-guide est en cours Quand l'utilisateur clique sur "3/12" dans la barre de progression Alors la liste des séquences s'ouvre Et la séquence en cours (3) est mise en surbrillance # Sauvegarde progression Scénario: Position exacte sauvegardée automatiquement Étant donné que la séquence 5 est en cours à 2:34/4:10 Quand l'utilisateur quitte l'application Alors la position 2:34 dans la séquence 5 est sauvegardée Et la sauvegarde est effectuée localement (SQLite) Et la sauvegarde est synchronisée sur le cloud (PostgreSQL) Scénario: Reprise après fermeture de l'application Étant donné que l'utilisateur a quitté l'app à la séquence 5 position 2:34 Quand il rouvre l'audio-guide Alors une popup de reprise s'affiche Quand il clique sur "▶️ Reprendre" Alors la lecture reprend à la séquence 5 position 2:34 exacte # Cas d'usage réels Scénario: Visiteur qui connaît déjà certaines œuvres Étant donné qu'un visiteur du Louvre démarre l'audio-guide Et qu'il connaît déjà "La Joconde" (séquence 3) Quand il arrive à la séquence 3 Et qu'il clique sur [▶|] "Suivant" après 10 secondes Alors la séquence 4 démarre immédiatement Et la séquence 3 n'est pas marquée comme écoutée Scénario: Visiteur qui veut voir une œuvre éloignée Étant donné qu'un visiteur est à la séquence 2 Et qu'il aperçoit "La Victoire de Samothrace" (séquence 8) physiquement Quand il ouvre la liste et clique sur la séquence 8 Alors la séquence 8 démarre immédiatement Et il peut écouter la description même si les séquences 3-7 ne sont pas écoutées Scénario: Visiteur qui prend une pause café Étant donné qu'un visiteur écoute la séquence 6 Quand il clique sur [⏸️] "Pause" Et qu'il ferme l'application pendant 30 minutes Quand il rouvre l'application Alors la séquence 6 reprend à la position exacte où il s'était arrêté Scénario: Visiteur qui revient le lendemain Étant donné qu'un visiteur a écouté les séquences 1-5 hier Et qu'il revient au musée aujourd'hui Quand il ouvre l'audio-guide Alors une popup propose "▶️ Reprendre" (séquence 6) Et les séquences 1-5 sont marquées ✅ "Écouté" # Cas d'erreur Scénario: Séquence audio corrompue ou indisponible Étant donné que la séquence 7 a un fichier audio corrompu Quand l'utilisateur tente de la lire Alors un message d'erreur s'affiche: """ ⚠️ Cette séquence est temporairement indisponible. [⏭️ Passer à la suivante] [🔄 Réessayer] """ Scénario: Perte de connexion pendant le chargement Étant donné que l'utilisateur lance la séquence 4 Et que la connexion réseau est perdue Quand le chargement échoue Alors un message s'affiche: "Connexion perdue. Vérifiez votre réseau." Et un bouton "🔄 Réessayer" est disponible Scénario: Batterie faible en cours de visite Étant donné que la batterie de l'appareil est à 5% Quand l'utilisateur écoute une séquence Alors une notification système s'affiche: "Batterie faible. Progression sauvegardée." Et la position est sauvegardée localement toutes les 10 secondes Scénario: Mode piéton sans points GPS (pas d'alerte localisation) Étant donné un audio-guide en mode piéton Et que le GPS est désactivé Quand l'utilisateur démarre l'audio-guide Alors aucune alerte GPS ne s'affiche Et l'audio-guide fonctionne normalement (navigation 100% manuelle)