Ajout de 47 features Gherkin (~650 scénarios) pour couvrir 100% des règles métier : - Authentification (5) : validation mot de passe, tentatives connexion, multi-device, 2FA, récupération - Audio-guides (12) : détection mode, création, navigation piéton/voiture, ETA, gestion points, progression - Navigation (5) : notifications minimalistes, décompte 5s, stationnement, historique, basculement auto - Création contenu (3) : image auto, restrictions modification, suppression - Radio live (2) : enregistrement auto, interdictions modération - Droits auteur (6) : fair use 30s, détection musique, signalements, sanctions, appels - Modération (9) : badges Bronze/Argent/Or, score fiabilité, utilisateur confiance, audit, anti-abus - Premium (2) : webhooks Mangopay, tarification multi-canal - Profil/Partage/Recherche (5) : badge vérifié, stats arrondies, partage premium, filtres avancés, carte Tous les scénarios incluent edge cases, métriques de performance et conformité RGPD. Couverture fonctionnelle MVP maintenant complète.
248 lines
15 KiB
Gherkin
248 lines
15 KiB
Gherkin
# language: fr
|
|
|
|
@api @audio-guides @content-creation @mvp
|
|
Fonctionnalité: Wizard complet de création d'audio-guide multi-séquences
|
|
|
|
En tant que créateur de contenu
|
|
Je veux créer un audio-guide avec plusieurs séquences géolocalisées
|
|
Afin de proposer une expérience guidée immersive aux utilisateurs
|
|
|
|
Contexte:
|
|
Étant donné que le système supporte les limites suivantes:
|
|
| Paramètre | Valeur |
|
|
| Nombre max de séquences par guide | 50 |
|
|
| Taille max fichier audio | 100 MB |
|
|
| Formats audio acceptés | MP3, M4A, WAV |
|
|
| Durée max par séquence | 15 minutes |
|
|
| Rayon min d'un point d'intérêt | 10 mètres |
|
|
| Rayon max d'un point d'intérêt | 500 mètres |
|
|
|
|
Scénario: Création d'un audio-guide - Étape 1: Informations générales
|
|
Étant donné un créateur "alice@roadwave.fr" connecté
|
|
Quand le créateur clique sur "Créer un audio-guide"
|
|
Alors le wizard s'ouvre sur l'étape 1 "Informations générales"
|
|
Et le créateur remplit le formulaire:
|
|
| Champ | Valeur |
|
|
| Titre | Visite guidée du Quartier Latin |
|
|
| Description courte | Découvrez l'histoire du quartier étudiant |
|
|
| Description longue | Plongez dans 2000 ans d'histoire... |
|
|
| Catégorie | Tourisme |
|
|
| Langues disponibles | Français, Anglais |
|
|
| Durée estimée | 2 heures |
|
|
| Difficulté | Facile |
|
|
| Accessibilité PMR | Oui |
|
|
Et le créateur clique sur "Suivant"
|
|
Alors les données sont validées et enregistrées en brouillon
|
|
Et un événement "AUDIO_GUIDE_CREATION_STARTED" est enregistré
|
|
Et la métrique "audio_guide.creation.step1_completed" est incrémentée
|
|
|
|
Scénario: Création d'un audio-guide - Étape 2: Image de couverture
|
|
Étant donné un créateur "bob@roadwave.fr" à l'étape 2 du wizard
|
|
Quand le créateur upload une image de couverture:
|
|
| Propriété | Valeur |
|
|
| Fichier | quartier-latin-cover.jpg |
|
|
| Taille | 1920x1080 px |
|
|
| Format | JPEG |
|
|
| Poids | 2.5 MB |
|
|
Alors l'image est uploadée vers le stockage S3
|
|
Et une miniature est générée automatiquement (300x200 px)
|
|
Et un aperçu de l'image est affiché
|
|
Et le créateur peut recadrer l'image via un éditeur intégré
|
|
Et le créateur clique sur "Suivant"
|
|
Alors l'image est associée au brouillon
|
|
Et un événement "AUDIO_GUIDE_COVER_UPLOADED" est enregistré
|
|
Et la métrique "audio_guide.creation.step2_completed" est incrémentée
|
|
|
|
Scénario: Création d'un audio-guide - Étape 3: Ajout de séquences via carte
|
|
Étant donné un créateur "charlie@roadwave.fr" à l'étape 3 du wizard
|
|
Quand le créateur voit une carte interactive centrée sur Paris
|
|
Et clique sur "Ajouter un point d'intérêt" sur la carte
|
|
Et place un marqueur à la position: 48.8534, 2.3488 (Notre-Dame)
|
|
Alors un formulaire de séquence s'ouvre:
|
|
| Champ | Valeur par défaut |
|
|
| Nom du point | [Vide] |
|
|
| Position GPS | 48.8534, 2.3488 |
|
|
| Rayon de déclenchement| 50 mètres |
|
|
| Ordre dans le parcours| 1 |
|
|
| Fichier audio | [Non uploadé] |
|
|
Et le créateur remplit les informations:
|
|
| Champ | Valeur |
|
|
| Nom du point | Cathédrale Notre-Dame de Paris |
|
|
| Rayon de déclenchement| 100 mètres |
|
|
| Ordre dans le parcours| 1 |
|
|
Et le créateur upload un fichier audio "notre-dame.mp3" (12 MB, 8min 30s)
|
|
Et le créateur clique sur "Enregistrer le point"
|
|
Alors la séquence 1 est créée et affichée sur la carte
|
|
Et un événement "AUDIO_GUIDE_SEQUENCE_ADDED" est enregistré
|
|
Et la métrique "audio_guide.sequences.added" est incrémentée
|
|
|
|
Scénario: Ajout de plusieurs séquences consécutives
|
|
Étant donné un créateur "david@roadwave.fr" avec 1 séquence créée
|
|
Quand le créateur ajoute 4 nouvelles séquences:
|
|
| Ordre | Nom | Position GPS | Rayon | Audio |
|
|
| 2 | Sainte-Chapelle | 48.8555, 2.3450 | 80m | chapelle.mp3 |
|
|
| 3 | Panthéon | 48.8462, 2.3464 | 100m | pantheon.mp3 |
|
|
| 4 | Jardin du Luxembourg | 48.8462, 2.3371 | 150m | jardin.mp3 |
|
|
| 5 | Sorbonne | 48.8487, 2.3431 | 70m | sorbonne.mp3 |
|
|
Alors les 5 séquences sont affichées sur la carte avec des marqueurs numérotés
|
|
Et une ligne de parcours relie les points dans l'ordre
|
|
Et la distance totale du parcours est calculée: 3.2 km
|
|
Et la durée totale des audios est calculée: 42 minutes
|
|
Et un panneau latéral liste les séquences avec possibilité de réorganiser
|
|
Et un événement "AUDIO_GUIDE_SEQUENCES_BATCH_ADDED" est enregistré
|
|
Et la métrique "audio_guide.sequences.count" est mise à jour: 5
|
|
|
|
Scénario: Réorganisation de l'ordre des séquences par drag & drop
|
|
Étant donné un créateur "eve@roadwave.fr" avec 5 séquences créées
|
|
Quand le créateur utilise le panneau latéral
|
|
Et fait glisser la séquence #3 "Panthéon" vers la position #2
|
|
Alors l'ordre des séquences est mis à jour:
|
|
| Nouvel ordre | Nom |
|
|
| 1 | Cathédrale Notre-Dame |
|
|
| 2 | Panthéon |
|
|
| 3 | Sainte-Chapelle |
|
|
| 4 | Jardin du Luxembourg |
|
|
| 5 | Sorbonne |
|
|
Et la ligne de parcours sur la carte est recalculée
|
|
Et la distance totale est recalculée: 3.5 km
|
|
Et un événement "AUDIO_GUIDE_SEQUENCES_REORDERED" est enregistré
|
|
Et la métrique "audio_guide.sequences.reordered" est incrémentée
|
|
|
|
Scénario: Modification d'une séquence existante
|
|
Étant donné un créateur "frank@roadwave.fr" avec 5 séquences créées
|
|
Quand le créateur clique sur le marqueur #2 "Panthéon" sur la carte
|
|
Alors le formulaire d'édition s'ouvre avec les données actuelles
|
|
Et le créateur modifie:
|
|
| Champ | Ancienne valeur | Nouvelle valeur |
|
|
| Rayon de déclenchement| 100m | 120m |
|
|
| Fichier audio | pantheon.mp3 | pantheon-v2.mp3 |
|
|
Et le créateur clique sur "Enregistrer les modifications"
|
|
Alors la séquence est mise à jour
|
|
Et le nouveau fichier audio remplace l'ancien
|
|
Et l'ancien fichier est supprimé du stockage S3
|
|
Et un événement "AUDIO_GUIDE_SEQUENCE_UPDATED" est enregistré
|
|
Et la métrique "audio_guide.sequences.updated" est incrémentée
|
|
|
|
Scénario: Suppression d'une séquence
|
|
Étant donné un créateur "grace@roadwave.fr" avec 5 séquences créées
|
|
Quand le créateur clique sur l'icône de suppression de la séquence #3
|
|
Alors un dialogue de confirmation s'affiche: "Supprimer cette séquence ?"
|
|
Et le créateur confirme la suppression
|
|
Alors la séquence #3 est supprimée
|
|
Et le fichier audio associé est marqué pour suppression différée (30 jours)
|
|
Et les séquences suivantes sont renumérotées automatiquement:
|
|
| Ancien ordre | Nouveau ordre | Nom |
|
|
| 4 | 3 | Jardin du Luxembourg |
|
|
| 5 | 4 | Sorbonne |
|
|
Et la ligne de parcours est recalculée
|
|
Et un événement "AUDIO_GUIDE_SEQUENCE_DELETED" est enregistré
|
|
Et la métrique "audio_guide.sequences.deleted" est incrémentée
|
|
|
|
Scénario: Validation de la distance minimale entre séquences
|
|
Étant donné un créateur "henry@roadwave.fr" avec 2 séquences créées
|
|
Quand le créateur tente d'ajouter une 3ème séquence à 5 mètres de la séquence #1
|
|
Alors un message d'erreur s'affiche: "Ce point est trop proche d'un point existant (min: 20m)"
|
|
Et le marqueur est affiché en rouge sur la carte
|
|
Et la séquence n'est pas enregistrée tant que le créateur ne déplace pas le marqueur
|
|
Et un événement "AUDIO_GUIDE_SEQUENCE_TOO_CLOSE" est enregistré
|
|
Et la métrique "audio_guide.validation.sequence_too_close" est incrémentée
|
|
|
|
Scénario: Création d'un audio-guide - Étape 4: Configuration avancée
|
|
Étant donné un créateur "iris@roadwave.fr" à l'étape 4 du wizard
|
|
Quand le créateur configure les options avancées:
|
|
| Option | Valeur |
|
|
| Prix (gratuit ou payant) | Gratuit |
|
|
| Visibilité | Publique |
|
|
| Mode de lecture | Séquentiel obligatoire |
|
|
| Autoriser les avis utilisateurs | Oui |
|
|
| Autoriser le téléchargement | Non |
|
|
| Activer les sous-titres | Oui |
|
|
Et clique sur "Suivant"
|
|
Alors les options sont enregistrées
|
|
Et un événement "AUDIO_GUIDE_CONFIG_COMPLETED" est enregistré
|
|
Et la métrique "audio_guide.creation.step4_completed" est incrémentée
|
|
|
|
Scénario: Création d'un audio-guide - Étape 5: Prévisualisation et publication
|
|
Étant donné un créateur "jack@roadwave.fr" à l'étape 5 du wizard
|
|
Quand le créateur voit la prévisualisation complète:
|
|
| Section | Contenu |
|
|
| Informations | Titre, description, durée |
|
|
| Image | Aperçu de la couverture |
|
|
| Parcours | Carte avec 5 séquences |
|
|
| Audio | Liste des 5 fichiers audio |
|
|
| Configuration | Prix, visibilité, options |
|
|
Et clique sur "Tester le parcours en simulation"
|
|
Alors une simulation GPS est lancée avec lecture des audios
|
|
Et le créateur peut naviguer dans le parcours virtuel
|
|
Et après validation, le créateur clique sur "Publier l'audio-guide"
|
|
Alors l'audio-guide passe du statut "brouillon" à "publié"
|
|
Et l'audio-guide devient visible dans les recherches et recommandations
|
|
Et un événement "AUDIO_GUIDE_PUBLISHED" est enregistré
|
|
Et la métrique "audio_guide.published" est incrémentée
|
|
Et un email de confirmation est envoyé au créateur
|
|
|
|
Scénario: Sauvegarde automatique du brouillon pendant la création
|
|
Étant donné un créateur "kate@roadwave.fr" en train de créer un audio-guide
|
|
Quand le créateur remplit des informations à chaque étape
|
|
Alors le brouillon est automatiquement sauvegardé toutes les 30 secondes
|
|
Et un indicateur "Sauvegardé automatiquement à 14:32" s'affiche
|
|
Et en cas de fermeture accidentelle, le créateur peut reprendre la création
|
|
Et un événement "AUDIO_GUIDE_DRAFT_AUTOSAVED" est enregistré toutes les 30s
|
|
Et la métrique "audio_guide.drafts.autosaved" est incrémentée
|
|
|
|
Scénario: Récupération d'un brouillon après interruption
|
|
Étant donné un créateur "luke@roadwave.fr" qui a commencé un audio-guide hier
|
|
Et le brouillon a été sauvegardé automatiquement à l'étape 3
|
|
Quand le créateur clique sur "Créer un audio-guide"
|
|
Alors un message s'affiche: "Vous avez un brouillon en cours. Reprendre la création ?"
|
|
Et le créateur clique sur "Reprendre"
|
|
Alors le wizard s'ouvre directement à l'étape 3
|
|
Et toutes les données saisies sont restaurées
|
|
Et un événement "AUDIO_GUIDE_DRAFT_RESUMED" est enregistré
|
|
Et la métrique "audio_guide.drafts.resumed" est incrémentée
|
|
|
|
Scénario: Import d'un parcours GPX pour créer automatiquement les séquences
|
|
Étant donné un créateur "mary@roadwave.fr" à l'étape 3 du wizard
|
|
Quand le créateur clique sur "Importer un parcours GPX"
|
|
Et upload un fichier "parcours-paris.gpx" avec 10 waypoints
|
|
Alors le système extrait les coordonnées GPS de chaque waypoint
|
|
Et crée automatiquement 10 séquences avec positions GPS pré-remplies
|
|
Et les marqueurs sont affichés sur la carte
|
|
Et le créateur doit ensuite ajouter les fichiers audio et noms pour chaque séquence
|
|
Et un événement "AUDIO_GUIDE_GPX_IMPORTED" est enregistré
|
|
Et la métrique "audio_guide.gpx.imported" est incrémentée
|
|
|
|
Scénario: Validation de la qualité audio avant publication
|
|
Étant donné un créateur "nathan@roadwave.fr" qui tente de publier un audio-guide
|
|
Quand le système analyse les fichiers audio uploadés
|
|
Et détecte que le fichier "sequence-3.mp3" a un bitrate de 32 kbps (trop faible)
|
|
Alors un avertissement s'affiche: "Le fichier 'sequence-3.mp3' a une qualité audio faible. Recommandé: 128 kbps minimum"
|
|
Et le créateur peut choisir de:
|
|
| Action | Conséquence |
|
|
| Ignorer et publier quand même | Publication autorisée |
|
|
| Remplacer le fichier | Retour à l'édition |
|
|
Et un événement "AUDIO_GUIDE_LOW_QUALITY_WARNING" est enregistré
|
|
Et la métrique "audio_guide.quality.warnings" est incrémentée
|
|
|
|
Scénario: Limitation du nombre de brouillons par créateur
|
|
Étant donné un créateur "olive@roadwave.fr" avec 10 brouillons en cours
|
|
Quand le créateur tente de créer un 11ème audio-guide
|
|
Alors un message s'affiche: "Vous avez atteint la limite de 10 brouillons. Veuillez publier ou supprimer des brouillons existants."
|
|
Et un lien vers la liste des brouillons est affiché
|
|
Et la création est bloquée jusqu'à suppression d'un brouillon
|
|
Et un événement "AUDIO_GUIDE_DRAFT_LIMIT_REACHED" est enregistré
|
|
Et la métrique "audio_guide.drafts.limit_reached" est incrémentée
|
|
|
|
Scénario: Métriques de performance du wizard de création
|
|
Étant donné que 1000 audio-guides sont créés par mois
|
|
Quand les métriques de création sont collectées
|
|
Alors les indicateurs suivants sont disponibles:
|
|
| Métrique | Valeur cible |
|
|
| Taux de complétion du wizard | > 65% |
|
|
| Temps moyen de création | < 45 min |
|
|
| Nombre moyen de séquences par guide | 5-8 |
|
|
| Taux d'abandon à chaque étape | < 15% |
|
|
| Taux d'utilisation de l'autosave | 100% |
|
|
Et les métriques sont exportées vers le système de monitoring
|
|
Et des optimisations UX sont proposées si taux d'abandon > 20%
|