# 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%
