# 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 à <frequence>
    Quand il termine la séquence <numero_sequence>
    Alors une publicité est insérée : <pub_inseree>

    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)
