Initial commit

This commit is contained in:
jpgiannetti
2026-01-31 11:45:11 +01:00
commit f99fb3c614
166 changed files with 115155 additions and 0 deletions

View 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