# language: fr

@ui @search @map @mvp
Fonctionnalité: Page de résultats avec carte interactive

  En tant qu'utilisateur
  Je veux visualiser les résultats sur une carte
  Afin de choisir des contenus proches de ma position ou d'une zone

  Scénario: Affichage par défaut en mode liste + carte
    Étant donné un utilisateur qui effectue une recherche
    Quand les résultats s'affichent
    Alors l'écran est divisé en 2 parties:
      | Section     | Largeur | Contenu                        |
      | Liste       | 40%     | Résultats scrollables          |
      | Carte       | 60%     | Marqueurs des résultats        |
    Et la carte est synchronisée avec la liste
    Et un événement "SEARCH_RESULTS_MAP_VIEW" est enregistré

  Scénario: Bascule entre vue liste, carte, et mixte
    Étant donné un utilisateur sur la page de résultats
    Quand il clique sur les boutons de vue:
      | Bouton      | Vue résultante                |
      | [Liste]     | Liste 100%, carte masquée     |
      | [Carte]     | Carte 100%, liste masquée     |
      | [Mixte]     | Liste 40% + Carte 60%         |
    Alors la vue change instantanément
    Et la préférence est sauvegardée
    Et un événement "SEARCH_VIEW_MODE_CHANGED" est enregistré

  Scénario: Marqueurs groupés par zone (clustering)
    Étant donné 50 résultats dans une zone de 10km
    Quand la carte est affichée en zoom large
    Alors les marqueurs sont regroupés en clusters:
      | Cluster  | Nombre de contenus |
      | Paris 1  | 15                 |
      | Paris 2  | 12                 |
      | Paris 5  | 23                 |
    Et un clic sur un cluster zoome sur la zone
    Et un événement "MAP_CLUSTERING_DISPLAYED" est enregistré

  Scénario: Survol d'un marqueur affiche une preview
    Étant donné un utilisateur qui survole un marqueur sur la carte
    Alors une popup s'affiche avec:
      | Élément         | Contenu                    |
      | Image miniature | Photo de couverture        |
      | Titre           | Visite du Quartier Latin   |
      | Durée           | 2h 30min                   |
      | Note            | 4.8/5 (1,234 avis)         |
      | Prix            | Gratuit                    |
      | Bouton          | [Voir détails]             |
    Et un événement "MAP_MARKER_PREVIEW_SHOWN" est enregistré

  Scénario: Clic sur un marqueur ouvre la fiche
    Étant donné un utilisateur qui clique sur un marqueur
    Alors la fiche complète du contenu s'ouvre en modal
    Et la carte reste visible en arrière-plan
    Et un événement "MAP_MARKER_CLICKED" est enregistré

  Scénario: Synchronisation liste-carte bidirectionnelle
    Étant donné un utilisateur en vue mixte (liste + carte)
    Quand il scroll dans la liste
    Alors la carte se centre automatiquement sur les contenus visibles
    Et inversement, quand il déplace la carte
    Alors la liste affiche les contenus de la zone visible
    Et un événement "LIST_MAP_SYNC" est enregistré

  Scénario: Recherche par zone dessinée sur la carte
    Étant donné un utilisateur qui clique sur "Dessiner une zone"
    Quand il dessine un polygone sur la carte
    Alors seuls les contenus dans ce polygone sont affichés
    Et le filtre "Zone personnalisée" s'active
    Et un événement "MAP_CUSTOM_ZONE_DRAWN" est enregistré

  Scénario: Calcul d'itinéraire depuis la carte
    Étant donné un utilisateur qui clique sur un marqueur
    Quand il clique sur "Itinéraire"
    Alors un calcul d'itinéraire démarre depuis sa position
    Et s'affiche sur la carte avec:
      | Information     | Exemple            |
      | Distance        | 3.2 km             |
      | Temps piéton    | 40 min             |
      | Temps voiture   | 12 min             |
      | Temps vélo      | 18 min             |
    Et un événement "MAP_ROUTE_CALCULATED" est enregistré

  Scénario: Sauvegarde des contenus depuis la carte
    Étant donné un utilisateur qui consulte la carte
    Quand il clique sur l'icône "♡" d'un marqueur
    Alors le contenu est ajouté à ses favoris
    Et le marqueur change de couleur (rouge)
    Et un événement "CONTENT_SAVED_FROM_MAP" est enregistré

  Scénario: Affichage de la position utilisateur en temps réel
    Étant donné un utilisateur avec géolocalisation activée
    Quand il consulte la carte
    Alors sa position est affichée par un point bleu
    Et se met à jour en temps réel si il se déplace
    Et un cercle indique la précision GPS (±10m)
    Et un événement "USER_LOCATION_TRACKED_ON_MAP" est enregistré

  Scénario: Légende de la carte avec codes couleur
    Étant donné un utilisateur sur la carte
    Alors une légende affiche:
      | Couleur   | Signification          |
      | Vert      | Gratuit                |
      | Bleu      | Payant                 |
      | Or        | Créateur vérifié       |
      | Rouge     | Favoris                |
    Et un événement "MAP_LEGEND_DISPLAYED" est enregistré

  Scénario: Export de la carte en image
    Étant donné un utilisateur qui clique sur "Exporter la carte"
    Alors une image PNG de la carte actuelle est générée
    Et téléchargeable avec résultats visibles
    Et un événement "MAP_EXPORTED" est enregistré

  Scénario: Mode hors ligne de la carte
    Étant donné un utilisateur qui télécharge une zone
    Quand il active le mode hors ligne
    Alors les tuiles de carte sont disponibles localement
    Et les contenus téléchargés sont accessibles
    Et un événement "MAP_OFFLINE_MODE_ENABLED" est enregistré

  Scénario: Métriques d'utilisation de la carte
    Étant donné que 10 000 utilisateurs ont consulté la carte
    Alors les indicateurs suivants sont disponibles:
      | Métrique                          | Valeur  |
      | % d'utilisations en mode carte    | 42%     |
      | % d'utilisations en mode mixte    | 48%     |
      | % d'utilisations en mode liste    | 10%     |
      | Nombre moyen de clics sur marqueurs| 3.2    |
      | Taux de conversion depuis carte   | 18%     |
    Et les métriques sont exportées vers le monitoring
