# language: fr

Fonctionnalité: Intégration audio-guides avec autres fonctionnalités
  En tant qu'utilisateur
  Je veux utiliser les audio-guides avec toutes les fonctionnalités de l'app
  Afin d'avoir une expérience complète et cohérente

  Contexte:
    Étant donné que l'application RoadWave est démarrée
    Et que l'utilisateur "jean@example.com" est connecté

  # 16.14 - Téléchargement offline

  Scénario: Téléchargement complet d'un audio-guide
    Étant donné un audio-guide "Visite du Louvre" avec 12 séquences
    Quand l'utilisateur clique sur "⬇️ Télécharger pour écouter hors ligne"
    Alors toutes les 12 séquences sont téléchargées
    Et les métadonnées (titres, descriptions, GPS) sont sauvegardées
    Et les images (cover, miniatures) sont mises en cache

  Scénario: Affichage de la progression du téléchargement
    Étant donné qu'un téléchargement d'audio-guide est en cours
    Quand l'utilisateur consulte l'état
    Alors la progression s'affiche:
      """
      ⬇️ Téléchargement en cours...
      Séquence 7/12 • 245 MB / 380 MB
      ──────●──────── 64%
      """

  Scénario: Téléchargement uniquement en WiFi (par défaut)
    Étant donné que l'option "Télécharger uniquement en WiFi" est activée
    Quand l'utilisateur lance un téléchargement sur réseau mobile
    Alors un avertissement s'affiche:
      """
      ⚠️ Téléchargement nécessite WiFi
      Cet audio-guide pèse 380 MB.
      [Attendre WiFi] [Télécharger quand même]
      """

  Scénario: Gestion de l'espace de stockage
    Étant donné que l'appareil a 500 MB d'espace libre
    Et qu'un audio-guide pèse 380 MB
    Quand l'utilisateur lance le téléchargement
    Alors un avertissement s'affiche:
      """
      ⚠️ Espace de stockage limité
      Après téléchargement : 120 MB restants
      [Continuer] [Gérer stockage] [Annuler]
      """

  Scénario: Liste des audio-guides téléchargés
    Étant donné que l'utilisateur a téléchargé 3 audio-guides
    Quand il accède à "Bibliothèque > Téléchargés"
    Alors il voit:
      | audio_guide             | taille | date_telechargement |
      | Visite du Louvre        | 380 MB | 2026-01-20          |
      | Safari du Paugre        | 245 MB | 2026-01-18          |
      | Circuit Loire à Vélo    | 520 MB | 2026-01-15          |

  Scénario: Lecture hors connexion complète
    Étant donné qu'un audio-guide est téléchargé
    Et que l'utilisateur active le mode avion
    Quand il lance l'audio-guide
    Alors toutes les séquences sont lisibles
    Et les métadonnées sont accessibles
    Et les images s'affichent normalement
    Et la progression est sauvegardée localement

  Scénario: GPS fonctionne en mode avion (mode voiture)
    Étant donné qu'un audio-guide voiture est téléchargé
    Et que le mode avion est activé (avec GPS actif)
    Quand l'utilisateur se déplace
    Alors les déclenchements GPS fonctionnent normalement
    Et la distance/ETA sont calculés
    Parce que le GPS ne nécessite pas de connexion internet

  Scénario: Suppression d'audio-guide téléchargé
    Étant donné qu'un audio-guide téléchargé pèse 380 MB
    Quand l'utilisateur clique sur "🗑️ Supprimer téléchargement"
    Alors une confirmation s'affiche
    Et si confirmé, les 380 MB sont libérés
    Et l'audio-guide reste accessible en streaming

  Scénario: Mise à jour automatique si nouvelle version
    Étant donné qu'un audio-guide téléchargé a été mis à jour par le créateur
    Quand l'utilisateur se connecte en WiFi
    Alors une notification s'affiche:
      """
      🔄 Mise à jour disponible
      "Visite du Louvre" - Nouvelle version
      [Mettre à jour] [Plus tard]
      """

  # 16.15 - Playlists et collections

  Scénario: Ajout d'audio-guide à une playlist
    Étant donné que l'utilisateur consulte un audio-guide
    Quand il clique sur "➕ Ajouter à une playlist"
    Alors ses playlists s'affichent:
      | playlist                |
      | 🗺️ Voyages en France   |
      | 🏛️ Musées parisiens    |
      | + Créer nouvelle playlist |

  Scénario: Comportement audio-guide dans une playlist
    Étant donné une playlist contenant 2 audio-guides et 1 podcast
    Quand la lecture atteint un audio-guide
    Alors l'audio-guide démarre à la séquence 1 (ou progression sauvegardée)
    Et les séquences se jouent normalement
    Quand l'audio-guide se termine (dernière séquence)
    Alors le contenu suivant de la playlist démarre

  Scénario: Audio-guide marqué comme "Favori"
    Étant donné qu'un utilisateur aime un audio-guide
    Quand il clique sur "⭐ Ajouter aux favoris"
    Alors l'audio-guide est ajouté à la section "Favoris"
    Et il est facilement accessible depuis le menu principal

  Scénario: Collections thématiques d'audio-guides
    Étant donné que RoadWave propose des collections éditoriales
    Quand l'utilisateur accède à "Collections"
    Alors il voit des collections comme:
      | collection                    | nombre_audio_guides |
      | 🏛️ Musées de France          | 12                  |
      | 🦁 Parcs animaliers           | 8                   |
      | 🚴 Circuits vélo              | 15                  |
      | 🚗 Routes touristiques        | 10                  |

  # 16.16 - Partage d'audio-guide

  Scénario: Bouton partager sur page audio-guide
    Étant donné qu'un utilisateur consulte un audio-guide
    Quand il clique sur "⬆️ Partager"
    Alors le menu de partage natif s'ouvre
    Et le lien généré est "https://roadwave.fr/share/ag/louvre_123"

  Scénario: Page web de partage pour audio-guide
    Étant donné qu'un lien d'audio-guide partagé est ouvert sur le web
    Quand la page se charge
    Alors elle affiche:
      | élément                  | exemple                              |
      | Cover image 16:9         | Photo du Louvre                      |
      | Titre                    | "Visite du Louvre"                   |
      | Créateur                 | "@art_guide ✓"                       |
      | Badge type               | "🎧 Audio-guide • 12 séquences"     |
      | Durée totale             | "45 minutes"                         |
      | Mode                     | "🚶 Piéton"                         |
      | Description              | Texte complet                        |
      | Preview séquence 1       | Player HTML5 (séquence intro)        |
      | Carte avec points GPS    | Leaflet avec 12 markers              |
      | CTA téléchargement       | Boutons App Store / Google Play      |

  Scénario: Deep link vers audio-guide spécifique
    Étant donné que l'app est installée
    Et qu'un lien "https://roadwave.fr/share/ag/louvre_123" est cliqué
    Quand le système détecte l'app
    Alors l'app s'ouvre directement sur l'audio-guide
    Et l'utilisateur peut démarrer immédiatement

  Scénario: Partage avec séquence spécifique
    Étant donné qu'un utilisateur est sur la séquence 5 "La Joconde"
    Quand il partage l'audio-guide
    Alors le lien généré est "https://roadwave.fr/share/ag/louvre_123?seq=5"
    Et le destinataire est dirigé vers la séquence 5 directement

  # 16.17 - Notations et commentaires

  Scénario: Note globale de l'audio-guide
    Étant donné qu'un utilisateur termine un audio-guide
    Quand la dernière séquence se termine
    Alors une popup de notation s'affiche:
      """
      Comment avez-vous trouvé cet audio-guide ?
      ⭐⭐⭐⭐⭐
      [Ajouter un commentaire (optionnel)]
      """

  Scénario: Note moyenne affichée sur la page
    Étant donné qu'un audio-guide a reçu 150 notes
    Et que la moyenne est 4.3/5
    Quand la page est affichée
    Alors la note "⭐ 4.3 (150 avis)" est visible

  Scénario: Commentaires triés par pertinence
    Étant donné qu'un audio-guide a 50 commentaires
    Quand l'utilisateur consulte les avis
    Alors les commentaires sont triés par défaut selon:
      | critère          | poids |
      | Note élevée      | 30%   |
      | Récent           | 30%   |
      | Likes reçus      | 40%   |

  Scénario: Réponse du créateur aux commentaires
    Étant donné qu'un utilisateur laisse un commentaire négatif
    Quand le créateur consulte son dashboard
    Alors il peut répondre au commentaire
    Et sa réponse apparaît en dessous avec badge "Créateur"

  # 16.18 - Recommandations intelligentes

  Scénario: Audio-guides similaires recommandés
    Étant donné qu'un utilisateur termine "Visite du Louvre"
    Quand il consulte les recommandations
    Alors l'algorithme suggère des audio-guides basés sur:
      | critère                    | exemple                           |
      | Tags similaires            | #Art #Histoire #Musée             |
      | Créateur identique         | Autres audio-guides de @art_guide |
      | Localisation proche        | Autres musées parisiens           |
      | Mode de déplacement        | Autres audio-guides piéton        |

  Scénario: Suggestion géographique contextuelle
    Étant donné qu'un utilisateur est à Paris (GPS détecté)
    Quand il ouvre l'onglet "Audio-guides"
    Alors les audio-guides parisiens sont mis en avant
    Et un filtre "🗺️ Autour de moi" est pré-appliqué

  Scénario: Badge "Populaire dans votre région"
    Étant donné qu'un audio-guide a >100 écoutes dans la région Île-de-France
    Et que l'utilisateur est en Île-de-France
    Quand l'audio-guide est affiché
    Alors un badge "🔥 Populaire près de chez vous" est visible

  # 16.19 - Optimisations techniques

  Scénario: Préchargement de la séquence suivante
    Étant donné que la séquence 3 est en cours à 2:30/3:42
    Quand il reste 60 secondes de lecture
    Alors la séquence 4 est préchargée en arrière-plan
    Et la transition est instantanée (0 latence)

  Scénario: Buffer adaptatif selon connexion
    Étant donné qu'un utilisateur est sur réseau 4G
    Quand la séquence démarre
    Alors 30 secondes d'audio sont bufferisées initialement
    Et le buffering continue en arrière-plan

  Plan du Scénario: Buffer selon qualité réseau
    Étant donné qu'un utilisateur est sur réseau <reseau>
    Quand une séquence démarre
    Alors <buffer_secondes> secondes sont bufferisées

    Exemples:
      | reseau | buffer_secondes |
      | WiFi   | 60              |
      | 5G     | 45              |
      | 4G     | 30              |
      | 3G     | 20              |

  Scénario: Compression audio adaptative
    Étant donné qu'un utilisateur est sur connexion lente (3G)
    Quand une séquence est streamée
    Alors le CDN sert la version 64 kbps (au lieu de 128 kbps)
    Et la qualité reste acceptable pour la voix

  Scénario: Cache intelligent des séquences jouées
    Étant donné qu'un utilisateur a écouté les séquences 1-5
    Quand il clique sur "Précédent" pour réécouter la séquence 4
    Alors la séquence 4 est chargée depuis le cache local
    Et le chargement est instantané (pas de stream)

  Scénario: Nettoyage automatique du cache
    Étant donné que le cache audio occupe 500 MB
    Et que la limite configurée est 300 MB
    Quand le nettoyage automatique s'exécute
    Alors les séquences les plus anciennes (non téléchargées) sont supprimées
    Et le cache revient à 280 MB

  # 16.20 - Analytics et tracking

  Scénario: Tracking des événements clés
    Étant donné qu'un utilisateur écoute un audio-guide
    Quand il interagit avec l'application
    Alors les événements suivants sont trackés:
      | événement              | données                                    |
      | audio_guide_started    | audio_guide_id, mode, user_id              |
      | sequence_completed     | sequence_id, completion_rate, duration     |
      | audio_guide_completed  | audio_guide_id, total_time, sequences_count|
      | point_gps_triggered    | point_id, distance, auto_or_manual         |
      | point_gps_missed       | point_id, distance, action_taken           |
      | paywall_displayed      | audio_guide_id, sequence_number            |
      | premium_conversion     | source: audio_guide_paywall                |

  Scénario: Heatmap des abandons par séquence
    Étant donné qu'un audio-guide a été écouté 1000 fois
    Quand le créateur consulte la heatmap
    Alors il voit pour chaque séquence:
      | sequence | starts | completions | abandon_rate |
      | 1        | 1000   | 950         | 5%           |
      | 2        | 950    | 920         | 3%           |
      | 3        | 920    | 850         | 8%           |
      | ...      | ...    | ...         | ...          |
      | 12       | 650    | 580         | 11%          |

  Scénario: Attribution GPS auto vs manuel
    Étant donné un audio-guide voiture avec 8 points GPS
    Quand les statistiques sont calculées
    Alors le créateur voit:
      | mode_declenchement | nombre |
      | GPS automatique    | 542    |
      | Manuel             | 123    |
      | Point manqué       | 89     |

  # Cas d'erreur et edge cases

  Scénario: Audio-guide avec une seule séquence (edge case)
    Étant donné un audio-guide avec seulement 1 séquence
    Quand il est publié
    Alors un avertissement s'affiche:
      """
      ⚠️ Un audio-guide doit contenir au minimum 2 séquences
      Ajoutez au moins 1 séquence supplémentaire avant publication
      """

  Scénario: Séquence manquante ou corrompue
    Étant donné qu'une séquence 5 a un fichier audio corrompu
    Quand l'utilisateur tente de la lire
    Alors un message d'erreur s'affiche
    Et un bouton "⏭️ Passer à la suivante" est disponible
    Et le créateur reçoit une notification de l'erreur

  Scénario: GPS désactivé puis réactivé en cours de route
    Étant donné un audio-guide voiture en cours
    Et que l'utilisateur désactive le GPS
    Quand il le réactive 10 minutes plus tard
    Alors le déclenchement automatique reprend
    Et les points GPS manqués entre-temps ne déclenchent pas de popup

  Scénario: Modification d'audio-guide avec utilisateurs en cours
    Étant donné qu'un audio-guide a 50 utilisateurs en cours d'écoute
    Quand le créateur modifie une séquence
    Alors les utilisateurs actuels conservent l'ancienne version
    Et les nouveaux utilisateurs obtiennent la nouvelle version
    Et un message informe les utilisateurs lors de la prochaine ouverture

  Scénario: Suppression d'audio-guide par le créateur
    Étant donné qu'un audio-guide a 20 utilisateurs avec progression
    Quand le créateur supprime l'audio-guide
    Alors une confirmation stricte est demandée
    Et si confirmé, les progressions utilisateurs sont archivées (30 jours)
    Et l'audio-guide devient inaccessible

  Scénario: Signalement d'audio-guide pour contenu inapproprié
    Étant donné qu'un utilisateur signale un audio-guide
    Quand le signalement est modéré
    Et jugé valide
    Alors l'audio-guide est dépublié temporairement
    Et le créateur reçoit une notification d'explication
    Et il peut corriger puis republier
