# 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