Initial commit
This commit is contained in:
263
features/abonnements/audio-guides-pieton.feature
Normal file
263
features/abonnements/audio-guides-pieton.feature
Normal file
@@ -0,0 +1,263 @@
|
||||
# language: fr
|
||||
Fonctionnalité: Audio-guides multi-séquences pour piétons
|
||||
En tant qu'auditeur à pied
|
||||
Je veux profiter d'audio-guides structurés lors de mes visites
|
||||
Afin de découvrir des lieux de manière autonome et à mon rythme
|
||||
|
||||
Contexte:
|
||||
Étant donné que l'API RoadWave est disponible
|
||||
Et que je suis connecté en tant qu'auditeur
|
||||
Et que je suis en mode piéton (vitesse <5 km/h)
|
||||
|
||||
Scénario: Détection d'audio-guide à proximité
|
||||
Étant donné que je me trouve à 80 mètres du Musée du Louvre
|
||||
Et que 3 audio-guides sont disponibles pour ce lieu
|
||||
Quand le système détecte ma position
|
||||
Alors je reçois une notification push:
|
||||
"""
|
||||
📍 Audio-guide disponible : Musée du Louvre
|
||||
Choisissez parmi 3 guides pour Musée du Louvre
|
||||
Tap pour explorer
|
||||
"""
|
||||
|
||||
Scénario: Rayon de détection de 100m
|
||||
Étant donné qu'un audio-guide est centré aux coordonnées GPS du Louvre
|
||||
Quand je suis à exactement 100m du centre
|
||||
Alors la notification est déclenchée
|
||||
Et quand je suis à 101m, aucune notification n'est envoyée
|
||||
|
||||
Scénario: Page de sélection des audio-guides
|
||||
Étant donné que j'ai tapé sur la notification audio-guide
|
||||
Quand la page de sélection s'affiche
|
||||
Alors je vois une liste de guides disponibles:
|
||||
| titre | créateur | nb_sequences | durée | note | écoutes |
|
||||
| Visite complète | Créateur A | 12 | 45 min | 4.8 | 1.2K |
|
||||
| Œuvres majeures | Créateur B | 5 | 20 min | 4.9 | 3.5K |
|
||||
| Visite famille | Créateur C | 8 | 30 min | 4.7 | 850 |
|
||||
|
||||
Scénario: Sélection d'un audio-guide
|
||||
Étant donné que je suis sur la page de sélection
|
||||
Quand je tape sur "Visite complète (45 min)"
|
||||
Alors l'interface de lecture d'audio-guide s'ouvre
|
||||
Et la séquence 1 commence automatiquement
|
||||
Et je vois la liste complète des 12 séquences
|
||||
|
||||
Scénario: Interface de lecture audio-guide
|
||||
Étant donné que j'ai sélectionné un audio-guide de 12 séquences
|
||||
Quand l'interface s'affiche
|
||||
Alors je vois:
|
||||
| élément | exemple |
|
||||
| Titre guide | 🎨 Visite complète • Musée du Louvre |
|
||||
| Piste actuelle | Piste 2/12 |
|
||||
| Titre séquence | "La Joconde - Histoire et mystères" |
|
||||
| Barre de progression | 3:24 / 6:50 |
|
||||
| Liste séquences | ✅ 1. Intro, ▶️ 2. Joconde, ⏸️ 3. Vénus... |
|
||||
| Boutons navigation | Précédent, Play/Pause, Suivant |
|
||||
|
||||
Scénario: Navigation vers séquence suivante
|
||||
Étant donné que j'écoute la séquence 2
|
||||
Quand je tape sur "Suivant"
|
||||
Alors la séquence 3 commence immédiatement
|
||||
Et le titre de la séquence s'affiche: "Vénus de Milo"
|
||||
Et la barre de progression se réinitialise
|
||||
|
||||
Scénario: Navigation vers séquence précédente
|
||||
Étant donné que j'écoute la séquence 5
|
||||
Quand je tape sur "Précédent"
|
||||
Alors la séquence 4 recommence depuis le début
|
||||
Et je peux réécouter cette séquence
|
||||
|
||||
Scénario: Saut direct à une séquence spécifique
|
||||
Étant donné que j'écoute la séquence 2
|
||||
Et que la liste des séquences est affichée
|
||||
Quand je tape sur "7. Peintures Renaissance"
|
||||
Alors la séquence 7 démarre immédiatement
|
||||
Et je passe directement de la séquence 2 à la 7
|
||||
|
||||
Scénario: Commande vocale "Suivant"
|
||||
Étant donné que j'écoute la séquence 3
|
||||
Quand je dis "Suivant" via la commande vocale
|
||||
Alors la séquence 4 démarre
|
||||
Et la commande vocale fonctionne même si l'écran est verrouillé
|
||||
|
||||
Scénario: Commande vocale "Précédent"
|
||||
Étant donné que j'écoute la séquence 6
|
||||
Quand je dis "Précédent" via la commande vocale
|
||||
Alors la séquence 5 démarre depuis le début
|
||||
|
||||
Scénario: Pause et reprise à la position exacte
|
||||
Étant donné que j'écoute la séquence 4 à la position 2:30
|
||||
Quand je mets en pause
|
||||
Et que j'attends 5 minutes
|
||||
Et que je reprends la lecture
|
||||
Alors la séquence reprend exactement à 2:30
|
||||
Et aucune donnée n'est perdue
|
||||
|
||||
Scénario: Guidage vocal automatique entre séquences
|
||||
Étant donné que la séquence 2 se termine
|
||||
Quand la transition vers la séquence 3 se produit
|
||||
Alors j'entends un message vocal:
|
||||
"""
|
||||
Vous avez terminé la séquence 2. Dirigez-vous vers la Vénus de Milo pour la séquence 3.
|
||||
"""
|
||||
Et la séquence 3 ne démarre pas automatiquement (navigation manuelle)
|
||||
|
||||
Scénario: Avertissement si éloignement du point d'intérêt
|
||||
Étant donné que je suis dans le guide du Louvre
|
||||
Et que je devrais être devant la Vénus de Milo (séquence 3)
|
||||
Quand je m'éloigne de plus de 50m de ce point
|
||||
Alors j'entends un message vocal:
|
||||
"""
|
||||
Vous vous éloignez de la prochaine étape. Consultez le plan.
|
||||
"""
|
||||
Et un bouton "Voir le plan" apparaît dans l'interface
|
||||
|
||||
Scénario: Sauvegarde automatique de la progression
|
||||
Étant donné que j'écoute la séquence 5 à la position 1:45
|
||||
Quand je ferme l'application brutalement
|
||||
Et que je la rouvre 10 minutes plus tard
|
||||
Alors je vois une popup "Reprendre la visite du Musée du Louvre ?"
|
||||
Et si je choisis "Reprendre", je retourne à la séquence 5 à 1:45
|
||||
|
||||
Scénario: Option de recommencer depuis le début
|
||||
Étant donné que j'ai une progression sauvegardée à la séquence 7
|
||||
Quand je rouvre le guide
|
||||
Alors je vois 2 options:
|
||||
| option | action |
|
||||
| Reprendre à la séquence 7 | Reprend à la position exacte |
|
||||
| Recommencer depuis le début | Retourne à la séquence 1 |
|
||||
|
||||
Scénario: Expiration de la sauvegarde après 30 jours
|
||||
Étant donné que j'ai une progression sauvegardée depuis 30 jours
|
||||
Quand j'essaie de reprendre le guide
|
||||
Alors la sauvegarde est considérée comme expirée
|
||||
Et je recommence depuis la séquence 1
|
||||
Et je vois le message "Votre précédente visite date de plus de 30 jours. Recommençons depuis le début."
|
||||
|
||||
Scénario: Synchronisation multi-device de la progression
|
||||
Étant donné que j'écoute un guide sur mon iPhone à la séquence 4
|
||||
Quand je ferme l'app et ouvre sur mon iPad
|
||||
Alors je vois la progression synchronisée
|
||||
Et je peux reprendre à la séquence 4 sur l'iPad
|
||||
|
||||
Scénario: Marquage "Terminé" après toutes les séquences
|
||||
Étant donné que j'écoute la dernière séquence (12/12)
|
||||
Quand cette séquence se termine
|
||||
Alors le guide est marqué "✅ Terminé" dans mon historique
|
||||
Et je vois un message de félicitation:
|
||||
"""
|
||||
Félicitations ! Vous avez terminé la visite complète du Musée du Louvre.
|
||||
"""
|
||||
Et le créateur gagne les statistiques d'écoute complète
|
||||
|
||||
Scénario: Création d'audio-guide par un créateur
|
||||
Étant donné que je suis un créateur
|
||||
Quand je crée un nouvel audio-guide
|
||||
Alors je dois:
|
||||
| étape | détail |
|
||||
| Uploader plusieurs fichiers | 1 fichier MP3 par séquence |
|
||||
| Numéroter les séquences | Séquence 1, Séquence 2, etc. |
|
||||
| Titrer chaque séquence | "Introduction", "La Joconde", etc. |
|
||||
| Définir point GPS unique | Centre du lieu (ex: Louvre) |
|
||||
| Définir rayon de détection | Par défaut 100m |
|
||||
Et la durée totale est calculée automatiquement
|
||||
|
||||
Scénario: Structure JSON de stockage audio-guide
|
||||
Étant donné qu'un créateur publie un audio-guide du Louvre
|
||||
Quand les métadonnées sont stockées en base
|
||||
Alors le format JSON contient:
|
||||
```json
|
||||
{
|
||||
"guide_id": "abc123",
|
||||
"title": "Visite complète Musée du Louvre",
|
||||
"location": {"lat": 48.8606, "lon": 2.3376, "radius": 200},
|
||||
"sequences": [
|
||||
{
|
||||
"sequence_number": 1,
|
||||
"title": "Introduction et architecture",
|
||||
"audio_url": "https://cdn.../seq1.mp3",
|
||||
"duration_seconds": 180
|
||||
},
|
||||
{
|
||||
"sequence_number": 2,
|
||||
"title": "La Joconde",
|
||||
"audio_url": "https://cdn.../seq2.mp3",
|
||||
"duration_seconds": 410
|
||||
}
|
||||
],
|
||||
"total_duration_seconds": 2700,
|
||||
"creator_id": "creator_xyz"
|
||||
}
|
||||
```
|
||||
|
||||
Scénario: Limitation du nombre de séquences
|
||||
Étant donné que je crée un audio-guide
|
||||
Quand j'essaie d'ajouter plus de 50 séquences
|
||||
Alors je vois le message "Maximum 50 séquences par audio-guide"
|
||||
Et je dois structurer mon contenu différemment ou créer plusieurs guides
|
||||
|
||||
Scénario: Quitter le guide et sauvegarder
|
||||
Étant donné que j'écoute la séquence 6
|
||||
Quand je tape sur le bouton "×" (fermer)
|
||||
Alors je vois une confirmation:
|
||||
"""
|
||||
Voulez-vous quitter ce guide ?
|
||||
Votre progression sera sauvegardée.
|
||||
"""
|
||||
Et si je confirme, la progression est enregistrée
|
||||
Et je retourne à l'écran principal
|
||||
|
||||
Scénario: Statistiques créateur pour audio-guides
|
||||
Étant donné que je suis créateur d'un audio-guide
|
||||
Quand je consulte mes statistiques
|
||||
Alors je vois:
|
||||
| métrique | exemple valeur |
|
||||
| Nombre de démarrages | 1250 |
|
||||
| Nombre de complétions (100%) | 387 (31%) |
|
||||
| Séquence la plus skippée | Séquence 8 |
|
||||
| Durée moyenne d'écoute | 28 min (sur 45) |
|
||||
|
||||
Scénario: Audio-guide multilingue (post-MVP)
|
||||
Étant donné qu'un créateur peut publier plusieurs versions linguistiques
|
||||
Quand un touriste anglophone visite le Louvre
|
||||
Alors il voit les guides disponibles en anglais
|
||||
Et peut choisir parmi les guides traduits
|
||||
Mais cette fonctionnalité n'est pas disponible en MVP
|
||||
|
||||
Scénario: Publicité entre séquences d'audio-guide
|
||||
Étant donné que je suis un utilisateur gratuit
|
||||
Et que j'écoute un audio-guide
|
||||
Quand je passe de la séquence 5 à la séquence 6
|
||||
Alors une publicité peut être insérée (1 pub toutes les 5 séquences)
|
||||
Et la publicité est skippable après 5 secondes
|
||||
Et les utilisateurs Premium ne voient pas de publicité
|
||||
|
||||
Scénario: Audio-guide en mode offline
|
||||
Étant donné que j'ai téléchargé un audio-guide complet
|
||||
Quand je visite le lieu sans connexion internet
|
||||
Alors toutes les séquences sont disponibles hors ligne
|
||||
Et la navigation fonctionne normalement
|
||||
Et seule la sauvegarde cloud est différée jusqu'à reconnexion
|
||||
|
||||
Scénario: Notation d'un audio-guide après écoute
|
||||
Étant donné que j'ai terminé un audio-guide
|
||||
Quand je ferme l'interface
|
||||
Alors je vois une popup "Notez cette visite"
|
||||
Et je peux donner une note de 1 à 5 étoiles
|
||||
Et cette note contribue à la note globale visible par les autres utilisateurs
|
||||
|
||||
Scénario: Filtrage par langue dans la page de sélection
|
||||
Étant donné que plusieurs audio-guides sont disponibles en différentes langues
|
||||
Quand j'accède à la page de sélection
|
||||
Alors je peux filtrer par langue
|
||||
Et par défaut, les guides dans ma langue système sont affichés en premier
|
||||
|
||||
Scénario: Réutilisation de l'infrastructure existante
|
||||
Étant donné qu'un audio-guide est techniquement un contenu structuré
|
||||
Alors il réutilise:
|
||||
| composant | usage |
|
||||
| OVH Object Storage | Hébergement fichiers MP3 séquences |
|
||||
| Streaming HLS | Diffusion audio adaptative |
|
||||
| Cache Redis | Métadonnées guides + progressions |
|
||||
| PostgreSQL | Stockage structure JSON guides |
|
||||
Et aucune infrastructure dédiée n'est nécessaire
|
||||
Reference in New Issue
Block a user