# language: fr

@api @audio-guides @navigation @ui @mvp
Fonctionnalité: Affichage avancé distance, direction et ETA

  En tant qu'utilisateur
  Je veux voir la distance, la direction et le temps d'arrivée estimé vers les points d'intérêt
  Afin de planifier mon déplacement et anticiper les prochaines séquences

  Contexte:
    Étant donné que le système affiche les informations suivantes:
      | Information          | Format                    | Mise à jour    |
      | Distance             | Mètres / Kilomètres       | Temps réel     |
      | Direction            | Boussole + Flèche         | Temps réel     |
      | ETA                  | Minutes / Heures          | Dynamique      |
      | Vitesse utilisateur  | km/h (mode voiture)       | Temps réel     |

  Scénario: Affichage de la distance en mètres pour proximité < 1km
    Étant donné un utilisateur "alice@roadwave.fr" en mode piéton
    Et elle se trouve à 450m du Panthéon
    Quand elle consulte l'écran de l'audio-guide
    Alors la distance affichée est: "450 m"
    Et la précision de la distance est de ±10m
    Et un événement "DISTANCE_DISPLAYED" est enregistré avec unité: "meters", valeur: 450
    Et la métrique "distance.displayed.meters" est incrémentée

  Scénario: Affichage de la distance en kilomètres pour distance > 1km
    Étant donné un utilisateur "bob@roadwave.fr" en mode voiture
    Et il se trouve à 12.5 km du Château de Chambord
    Quand il consulte l'écran de l'audio-guide
    Alors la distance affichée est: "12.5 km"
    Et la précision de la distance est de ±100m
    Et un événement "DISTANCE_DISPLAYED" est enregistré avec unité: "kilometers", valeur: 12.5
    Et la métrique "distance.displayed.kilometers" est incrémentée

  Scénario: Mise à jour en temps réel de la distance pendant le déplacement
    Étant donné un utilisateur "charlie@roadwave.fr" en mode piéton
    Et il marche vers la Sainte-Chapelle initialement à 800m
    Quand il marche à une vitesse de 5 km/h
    Alors la distance est mise à jour toutes les 2 secondes:
      | Temps   | Distance affichée |
      | T+0s    | 800 m             |
      | T+30s   | 760 m             |
      | T+60s   | 720 m             |
      | T+90s   | 680 m             |
    Et la barre de progression visuelle se remplit progressivement
    Et un événement "DISTANCE_UPDATED" est enregistré toutes les 10 secondes
    Et la métrique "distance.real_time_updates" est incrémentée

  Scénario: Affichage de la direction avec boussole et flèche
    Étant donné un utilisateur "david@roadwave.fr" en mode piéton
    Et il se trouve face au nord
    Et le Panthéon est au sud-est de sa position
    Quand il consulte l'écran de l'audio-guide
    Alors une boussole s'affiche avec:
      | Élément              | Affichage                    |
      | Orientation boussole | Nord en haut                 |
      | Flèche vers POI      | Pointe vers 135° (sud-est)   |
      | Angle cardinal       | "SE" (sud-est)               |
      | Rotation dynamique   | Suit l'orientation du téléphone|
    Et la flèche est colorée selon la distance:
      | Distance       | Couleur |
      | < 100m         | Vert    |
      | 100m - 500m    | Orange  |
      | > 500m         | Bleu    |
    Et un événement "DIRECTION_DISPLAYED" est enregistré avec angle: 135
    Et la métrique "direction.displayed" est incrémentée

  Scénario: Mise à jour de la direction en temps réel lors de la rotation
    Étant donné un utilisateur "eve@roadwave.fr" en mode piéton
    Et elle se trouve face au nord avec le Panthéon au sud-est
    Quand elle tourne son téléphone vers l'est
    Alors la boussole pivote dynamiquement
    Et la flèche vers le POI reste fixée sur la direction réelle (135°)
    Et l'affichage est fluide à 60 FPS
    Et un événement "COMPASS_ROTATED" est enregistré
    Et la métrique "compass.rotations" est incrémentée

  Scénario: Calcul de l'ETA en mode piéton (vitesse moyenne 5 km/h)
    Étant donné un utilisateur "frank@roadwave.fr" en mode piéton
    Et il se trouve à 600m du Jardin du Luxembourg
    Quand le système calcule l'ETA avec vitesse piéton moyenne: 5 km/h
    Alors l'ETA affiché est: "7 min"
    Et le calcul utilise la formule: temps = distance / vitesse_moyenne_pieton
    Et un événement "ETA_CALCULATED" est enregistré avec mode: "pedestrian", eta: 7
    Et la métrique "eta.calculated.pedestrian" est incrémentée

  Scénario: Calcul de l'ETA en mode voiture avec vitesse réelle
    Étant donné un utilisateur "grace@roadwave.fr" en mode voiture
    Et elle se trouve à 15 km du Château de Chenonceau
    Et elle roule actuellement à 80 km/h
    Quand le système calcule l'ETA
    Alors l'ETA affiché est: "11 min"
    Et le calcul utilise la vitesse réelle actuelle
    Et un événement "ETA_CALCULATED" est enregistré avec mode: "car", vitesse: 80, eta: 11
    Et la métrique "eta.calculated.car" est incrémentée

  Scénario: Recalcul dynamique de l'ETA en fonction des changements de vitesse
    Étant donné un utilisateur "henry@roadwave.fr" en mode voiture
    Et l'ETA initial vers le Château d'Amboise est: "15 min" (vitesse: 70 km/h)
    Quand il ralentit à 40 km/h à cause d'un bouchon
    Alors l'ETA est recalculé et mis à jour: "22 min"
    Et une notification discrète s'affiche: "ETA mis à jour : +7 min"
    Quand il accélère à nouveau à 90 km/h
    Alors l'ETA est recalculé: "12 min"
    Et un événement "ETA_UPDATED" est enregistré avec ancienETA: 22, nouveauETA: 12
    Et la métrique "eta.recalculated" est incrémentée

  Scénario: Affichage du temps d'arrivée absolu en mode voiture
    Étant donné un utilisateur "iris@roadwave.fr" en mode voiture
    Et il est 14h30
    Et l'ETA vers le prochain point est: "25 min"
    Quand elle active l'option "Afficher l'heure d'arrivée"
    Alors l'affichage change de "25 min" à "Arrivée à 14h55"
    Et les deux formats peuvent être basculés par un tap sur l'ETA
    Et un événement "ETA_FORMAT_CHANGED" est enregistré avec format: "absolute_time"
    Et la métrique "eta.format.absolute" est incrémentée

  Scénario: Affichage groupé distance + direction + ETA sur une carte compacte
    Étant donné un utilisateur "jack@roadwave.fr" en mode piéton
    Et il se trouve à 450m du Panthéon au sud-est
    Quand il consulte la carte de l'audio-guide
    Alors une carte compacte s'affiche pour chaque point d'intérêt:
      | Point d'intérêt | Distance | Direction | ETA     |
      | Panthéon        | 450 m    | SE ↗      | 5 min   |
      | Jardin Lux.     | 1.2 km   | SO ↙      | 14 min  |
      | Sorbonne        | 320 m    | E →       | 4 min   |
    Et les points sont triés par distance (plus proche en premier)
    Et un événement "POI_LIST_DISPLAYED" est enregistré
    Et la métrique "poi_list.displayed" est incrémentée

  Scénario: Indication visuelle "Vous y êtes !" à l'arrivée
    Étant donné un utilisateur "kate@roadwave.fr" en mode piéton
    Et elle approche du Panthéon
    Quand elle entre dans un rayon de 10m du point d'intérêt
    Alors l'affichage change de "15 m" à "🎯 Vous y êtes !"
    Et une animation de succès est jouée
    Et une notification sonore subtile est jouée
    Et l'audio de la séquence démarre automatiquement
    Et un événement "POI_ARRIVED" est enregistré avec précision: 8m
    Et la métrique "poi.arrived" est incrémentée

  Scénario: Affichage du trajet à vol d'oiseau vs trajet routier
    Étant donné un utilisateur "luke@roadwave.fr" en mode voiture
    Et il se trouve à 12 km à vol d'oiseau du Château de Chambord
    Mais le trajet routier est de 18 km (détours)
    Quand il consulte l'ETA
    Alors la distance affichée est celle du trajet routier: "18 km"
    Et l'ETA est calculé sur le trajet routier: "15 min"
    Et un bouton "Itinéraire" permet de voir le trajet détaillé
    Et un événement "ROUTE_DISPLAYED" est enregistré avec routeDistance: 18, airDistance: 12
    Et la métrique "route.displayed" est incrémentée

  Scénario: Mode d'économie de batterie avec mise à jour moins fréquente
    Étant donné un utilisateur "mary@roadwave.fr" avec batterie < 20%
    Et le mode économie d'énergie est activé
    Quand elle utilise l'audio-guide
    Alors la fréquence de mise à jour des distances est réduite:
      | Mode normal     | Mode économie |
      | Toutes les 2s   | Toutes les 10s|
    Et la précision GPS est réduite (précision: ±30m au lieu de ±10m)
    Et un événement "BATTERY_SAVER_ENABLED" est enregistré
    Et la métrique "battery_saver.enabled" est incrémentée

  Scénario: Affichage de la vitesse actuelle en mode voiture
    Étant donné un utilisateur "nathan@roadwave.fr" en mode voiture
    Et il roule à 75 km/h
    Quand il consulte l'écran de l'audio-guide
    Alors sa vitesse actuelle est affichée: "75 km/h"
    Et la vitesse est mise à jour en temps réel
    Et un événement "SPEED_DISPLAYED" est enregistré avec vitesse: 75
    Et la métrique "speed.displayed" est incrémentée

  Scénario: Alerte de dépassement de limite de vitesse (optionnel)
    Étant donné un utilisateur "olive@roadwave.fr" en mode voiture
    Et elle a activé l'option "Alertes de vitesse"
    Et la limite de vitesse sur sa route est 80 km/h
    Quand elle roule à 95 km/h
    Alors une alerte visuelle discrète s'affiche: "⚠️ 95 km/h (limite: 80)"
    Et l'alerte disparaît quand elle ralentit en dessous de 85 km/h
    Et un événement "SPEED_LIMIT_EXCEEDED" est enregistré avec vitesse: 95, limite: 80
    Et la métrique "speed.limit_exceeded" est incrémentée

  Scénario: Indication de zones à forte densité de points d'intérêt
    Étant donné un utilisateur "paul@roadwave.fr" en mode piéton
    Et il se trouve dans une zone avec 5 points d'intérêt dans un rayon de 200m
    Quand il consulte la carte
    Alors une indication s'affiche: "Zone dense : 5 points à proximité"
    Et les marqueurs sont regroupés en cluster pour éviter la surcharge visuelle
    Et en zoomant, le cluster se décompose en marqueurs individuels
    Et un événement "HIGH_DENSITY_ZONE_DETECTED" est enregistré avec count: 5
    Et la métrique "zones.high_density" est incrémentée

  Scénario: Métriques de précision de la localisation GPS
    Étant donné un utilisateur "quinn@roadwave.fr" utilisant l'audio-guide
    Quand les métriques de précision GPS sont collectées
    Alors les indicateurs suivants sont disponibles:
      | Métrique                          | Valeur cible |
      | Précision GPS moyenne             | ±10m         |
      | Précision GPS en mode économie    | ±30m         |
      | Fréquence de mise à jour GPS      | 1-2 Hz       |
      | Taux d'erreur de positionnement   | < 5%         |
      | Latence de calcul ETA             | < 100ms      |
    Et les métriques sont exportées vers le système de monitoring
    Et des alertes sont déclenchées si précision > ±50m
