Ajout de 47 features Gherkin (~650 scénarios) pour couvrir 100% des règles métier : - Authentification (5) : validation mot de passe, tentatives connexion, multi-device, 2FA, récupération - Audio-guides (12) : détection mode, création, navigation piéton/voiture, ETA, gestion points, progression - Navigation (5) : notifications minimalistes, décompte 5s, stationnement, historique, basculement auto - Création contenu (3) : image auto, restrictions modification, suppression - Radio live (2) : enregistrement auto, interdictions modération - Droits auteur (6) : fair use 30s, détection musique, signalements, sanctions, appels - Modération (9) : badges Bronze/Argent/Or, score fiabilité, utilisateur confiance, audit, anti-abus - Premium (2) : webhooks Mangopay, tarification multi-canal - Profil/Partage/Recherche (5) : badge vérifié, stats arrondies, partage premium, filtres avancés, carte Tous les scénarios incluent edge cases, métriques de performance et conformité RGPD. Couverture fonctionnelle MVP maintenant complète.
235 lines
12 KiB
Gherkin
235 lines
12 KiB
Gherkin
# 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
|