# language: fr @api @navigation @mode-detection @mvp Fonctionnalité: Basculement automatique entre modes voiture et piéton En tant que système de navigation Je veux détecter automatiquement le mode de déplacement de l'utilisateur Et basculer entre mode voiture et mode piéton selon la vitesse GPS Afin d'optimiser l'expérience utilisateur sans action manuelle Contexte: Étant donné un utilisateur authentifié avec l'application active Et la géolocalisation est activée et autorisée Et les permissions de géolocalisation en arrière-plan sont accordées # ============================================================================ # DÉTECTION INITIALE DU MODE AU DÉMARRAGE # ============================================================================ Scénario: Démarrage application à vitesse piéton (0-4 km/h) Étant donné l'utilisateur ouvre l'application Et les 3 premières lectures GPS montrent des vitesses de [0, 2, 3] km/h Quand le système détermine le mode initial Alors le mode "piéton" doit être activé par défaut Et les notifications push géolocalisées doivent être activées Et un rayon de détection de 200m doit être appliqué Scénario: Démarrage application en mouvement (≥5 km/h) Étant donné l'utilisateur ouvre l'application Et les 3 premières lectures GPS montrent des vitesses de [30, 35, 32] km/h Quand le système détermine le mode initial Alors le mode "voiture" doit être activé par défaut Et les notifications in-app avec compteur 7s doivent être activées Et l'ETA doit être calculé pour les contenus géolocalisés Scénario: Démarrage avec GPS instable - mode par défaut Étant donné l'utilisateur ouvre l'application Et les lectures GPS sont erratiques : [0, 45, 2, 60, 1] km/h Quand le système ne peut pas déterminer le mode avec confiance Alors le mode "piéton" doit être activé par défaut (mode le plus sûr) Et une modal doit demander à l'utilisateur de confirmer son mode Et le choix utilisateur doit être mémorisé pour la session # ============================================================================ # BASCULEMENT VOITURE → PIÉTON (vitesse <5 km/h soutenue) # ============================================================================ Scénario: Arrêt prolongé déclenche basculement piéton Étant donné l'utilisateur est en mode voiture Et la vitesse moyenne sur 2 minutes est de 2 km/h (embouteillage ou arrêt) Quand le système détecte cette condition pendant 2 minutes consécutives Alors le mode doit basculer automatiquement vers "piéton" Et une notification toast doit informer : "Mode piéton activé" Et les notifications push géolocalisées doivent être activées Et le cooldown voiture actif doit être annulé Scénario: Stationnement confirmé (vitesse = 0 pendant 2 minutes) Étant donné l'utilisateur est en mode voiture Et la vitesse GPS est de 0 km/h pendant 2 minutes consécutives Et la précision GPS est <20m (pas de perte signal) Quand le système détecte l'arrêt prolongé Alors le mode doit basculer vers "piéton" Et une notification doit proposer : "Voulez-vous activer le mode piéton ?" Et si l'utilisateur ne répond pas, le basculement doit être automatique après 30 secondes Scénario: Embouteillage prolongé (vitesse <5 km/h mais en mouvement) Étant donné l'utilisateur est en mode voiture à 35 km/h Et la vitesse chute à 3 km/h et oscille entre 0-4 km/h Et cette condition dure 3 minutes Quand le système détecte un mouvement résiduel (pas totalement arrêté) Alors le mode "voiture" doit être maintenu temporairement Mais le calcul ETA doit passer en mode "vitesse lente" Et après 5 minutes <5 km/h, le mode piéton doit être proposé Scénario: Feu rouge ou arrêt temporaire ne déclenche PAS de basculement Étant donné l'utilisateur est en mode voiture à 50 km/h Et la vitesse chute à 0 km/h pendant 45 secondes (feu rouge) Quand le système évalue les conditions Alors le mode "voiture" doit être maintenu Car la durée <2 minutes (seuil de basculement) Et aucune notification ne doit être affichée # ============================================================================ # BASCULEMENT PIÉTON → VOITURE (vitesse ≥5 km/h soutenue) # ============================================================================ Scénario: Démarrage voiture déclenche basculement automatique Étant donné l'utilisateur est en mode piéton Et la vitesse passe de 0 km/h à 15 km/h en 10 secondes Et la vitesse reste ≥10 km/h pendant 30 secondes Quand le système détecte une accélération soutenue Alors le mode doit basculer automatiquement vers "voiture" Et une notification toast doit informer : "Mode voiture activé" Et les notifications in-app avec ETA doivent être activées Et les notifications push piéton doivent être désactivées Scénario: Course à pied ou vélo lent ne déclenche PAS de basculement voiture Étant donné l'utilisateur est en mode piéton Et la vitesse monte à 8 km/h et oscille entre 6-10 km/h Quand le système évalue les conditions Alors le mode "piéton" doit être maintenu Car la vitesse reste <15 km/h (seuil de confiance pour voiture) Et l'utilisateur peut basculer manuellement si nécessaire Scénario: Trajet en bus ou vélo rapide (15-25 km/h) Étant donné l'utilisateur est en mode piéton Et la vitesse passe à 20 km/h et reste stable Quand le système détecte une vitesse ≥15 km/h pendant 1 minute Alors une notification doit proposer : "Passer en mode véhicule ?" Et si l'utilisateur accepte, basculer en mode "voiture" Et si l'utilisateur refuse, mémoriser le choix pour 30 minutes Scénario: Sortie de transport en commun Étant donné l'utilisateur est en mode piéton Et la vitesse était de 0 km/h (dans le bus) Et la vitesse monte soudainement à 40 km/h (bus démarre) Puis retombe à 2 km/h après 5 minutes (descente du bus) Quand le système détecte ce pattern Alors le mode "piéton" doit être maintenu Et aucun basculement automatique ne doit être déclenché Car les transports en commun sont ambigus # ============================================================================ # BASCULEMENT AVEC AUDIO-GUIDE EN COURS # ============================================================================ Scénario: Basculement voiture → piéton pendant audio-guide voiture Étant donné l'utilisateur écoute un audio-guide en mode voiture Et l'utilisateur se gare (vitesse = 0 km/h pendant 2 minutes) Quand le système bascule en mode piéton Alors l'audio-guide doit continuer en mode piéton Et les séquences restantes doivent s'adapter au mode piéton : | voiture | piéton | | Déclenchement automatique GPS | Navigation manuelle | | Distance affichée en mètres | Distance masquée | | Flèche direction | Pas de flèche | Et une notification doit informer : "Audio-guide adapté au mode piéton" Scénario: Basculement piéton → voiture pendant audio-guide piéton Étant donné l'utilisateur écoute un audio-guide en mode piéton Et l'audio-guide est configuré pour "piéton uniquement" Et l'utilisateur monte en voiture (vitesse passe à 30 km/h) Quand le système bascule en mode voiture Alors l'audio-guide doit être mis en pause automatiquement Et une notification doit proposer : "Mettre l'audio-guide en pause ?" Et si confirmé, sauvegarder la progression pour reprise ultérieure # ============================================================================ # GESTION DES TRANSITIONS ET EDGE CASES # ============================================================================ Scénario: Basculement rapide voiture → piéton → voiture (indécision) Étant donné l'utilisateur est en mode voiture Et la vitesse oscille : 40 km/h → 0 km/h (1 min) → 35 km/h → 0 km/h (1 min) Quand le système détecte une instabilité de mode Alors le mode "voiture" doit être maintenu par défaut Et un délai de stabilisation de 3 minutes doit être appliqué Et aucune notification de basculement ne doit être envoyée Scénario: Tunnel ou perte GPS ne déclenche PAS de basculement Étant donné l'utilisateur est en mode voiture à 90 km/h Et le signal GPS est perdu pendant 2 minutes (tunnel) Quand le système détecte l'absence de signal GPS Alors le mode "voiture" doit être maintenu Et la dernière vitesse connue doit être utilisée Et aucun basculement ne doit être déclenché Scénario: Utilisateur force le mode manuellement Étant donné l'utilisateur est en mode voiture automatique Et l'utilisateur bascule manuellement en mode piéton via l'interface Quand le basculement manuel est effectué Alors le mode manuel doit être prioritaire pendant 30 minutes Et les basculements automatiques doivent être désactivés pendant cette période Et un flag "manual_override" doit être loggé Scénario: Reprise après override manuel Étant donné l'utilisateur a forcé le mode piéton il y a 35 minutes Et la vitesse actuelle est de 60 km/h depuis 5 minutes Quand la période d'override (30 min) expire Alors le système doit reprendre la détection automatique Et basculer en mode voiture car vitesse ≥5 km/h Et notifier l'utilisateur du basculement # ============================================================================ # IMPACT SUR LES AUTRES FONCTIONNALITÉS # ============================================================================ Scénario: Basculement annule le cooldown notification voiture Étant donné l'utilisateur est en mode voiture Et un cooldown de 10 minutes est actif (notification ignorée) Quand le mode bascule vers piéton Alors le cooldown doit être immédiatement annulé Et les notifications piéton doivent être activées Car les mécanismes de notification sont différents entre modes Scénario: Basculement adapte le rayon de détection géolocalisée Étant donné l'utilisateur est en mode voiture Et le rayon de détection pour contenus géolocalisés est adaptatif (basé sur vitesse) Quand le mode bascule vers piéton Alors le rayon de détection doit être fixé à 200m Et les contenus hors rayon doivent être retirés de la file d'attente Et une nouvelle recherche géospatiale doit être effectuée Scénario: Quota notifications indépendant du mode Étant donné l'utilisateur a reçu 4 notifications en mode voiture (quota 4/6) Quand le mode bascule vers piéton Alors le compteur de quota doit être conservé (toujours 4/6) Car le quota de 6/heure s'applique globalement (tous modes confondus) # ============================================================================ # MÉTRIQUES & ANALYTICS # ============================================================================ Scénario: Logging des basculements de mode pour analytics Étant donné l'utilisateur bascule de voiture à piéton Quand le basculement est effectué Alors un événement analytics doit être loggé : | event_type | mode_switch | | from_mode | car | | to_mode | pedestrian | | trigger | speed_threshold | | speed_kmh | 1.5 | | duration_previous_mode | 1800 | | manual_override | false | | timestamp | 2026-02-03 14:30:00 | Et ces métriques doivent alimenter le dashboard de monitoring Scénario: Détection pattern utilisateur (majoritairement piéton vs voiture) Étant donné l'utilisateur utilise l'application depuis 30 jours Et 80% du temps d'écoute est en mode piéton Quand le système analyse le comportement Alors un flag "primary_mode: pedestrian" doit être défini Et le mode par défaut au démarrage doit être "piéton" Et l'algorithme de recommandation doit favoriser les audio-guides piétons