Files
roadwave/features/recommendation/declenchement-geo.feature
2026-01-31 11:45:11 +01:00

328 lines
14 KiB
Gherkin
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# language: fr
Fonctionnalité: Contenus géolocalisés en mode voiture
En tant qu'utilisateur en voiture
Je veux recevoir des notifications de contenus géolocalisés au bon moment
Afin de découvrir du contenu contextuel sans distraction au volant
Contexte:
Étant donné que l'API RoadWave est disponible
Et que l'application est ouverte (premier plan)
Et que le GPS est activé
Et que l'utilisateur est en mode voiture (vitesse 5 km/h)
# 17.2 - Détection et notification (Calcul ETA)
Scénario: Calcul ETA et notification 7 secondes avant le point GPS
Étant donné qu'un contenu géolocalisé existe à la Tour Eiffel (48.8584, 2.2945)
Et que je me déplace à 50 km/h vers ce point
Et que je suis à 98 mètres du point (ETA = 7 secondes)
Quand le système calcule l'ETA
Alors une notification est déclenchée immédiatement
Et le compteur "7" s'affiche avec l'icône 🏛
Et une notification sonore (bip court) est jouée
Plan du Scénario: Calcul ETA à différentes vitesses
Étant donné qu'un contenu géolocalisé existe à un point GPS
Et que je me déplace à <vitesse> km/h
Quand je suis à <distance> mètres du point
Alors l'ETA calculé est <eta> secondes
Et la notification est déclenchée : <notification>
Exemples:
| vitesse | distance | eta | notification |
| 10 | 19 | 7 | Oui |
| 50 | 98 | 7 | Oui |
| 130 | 252 | 7 | Oui |
| 50 | 200 | 14 | Non |
| 10 | 50 | 18 | Non |
Scénario: Notification immédiate si vitesse <5 km/h ET distance <50m
Étant donné qu'un contenu géolocalisé existe à 30m de ma position
Et que ma vitesse est 3 km/h (arrêté à un feu rouge)
Quand le système détecte cette situation
Alors une notification est déclenchée immédiatement
Et je n'ai pas besoin d'attendre le calcul ETA
# 17.2.2 - Format de notification minimaliste
Scénario: Notification minimaliste sans texte (sécurité routière)
Étant donné qu'une notification géolocalisée est déclenchée
Quand la notification s'affiche
Alors les éléments suivants sont visibles:
| élément | présent |
| Icône du tag | |
| Compteur 71 | |
| Son bref (bip) | |
| Titre texte | |
| Description | |
| Cover image | |
| Bouton Annuler | |
Plan du Scénario: Icônes selon le tag du contenu
Étant donné qu'un contenu géolocalisé avec le tag <tag> est disponible
Quand la notification s'affiche
Alors l'icône <icone> est affichée
Exemples:
| tag | icone |
| Culture générale | 🏛 |
| Histoire | 📜 |
| Voyage | |
| Famille | 👨👩👧 |
| Musique | 🎵 |
| Sport | |
| Technologie | 💻 |
| Automobile | 🚗 |
Scénario: Compteur décrémentant de 7 à 1
Étant donné qu'une notification géolocalisée s'affiche
Quand le compteur démarre
Alors le compteur affiche "7"
Et après 1 seconde, il affiche "6"
Et après 2 secondes, il affiche "5"
Et après 3 secondes, il affiche "4"
Et après 4 secondes, il affiche "3"
Et après 5 secondes, il affiche "2"
Et après 6 secondes, il affiche "1"
Et après 7 secondes, la notification disparaît
# 17.2.2b - Conformité CarPlay / Android Auto
Scénario: Notification sonore uniquement en mode CarPlay
Étant donné que l'application est connectée à CarPlay
Et qu'un contenu géolocalisé est détecté (ETA 7s)
Quand la notification est déclenchée
Alors seule la notification sonore (bip) est jouée
Et aucun overlay visuel n'est affiché (icône, compteur)
Et l'utilisateur peut valider via le bouton "Suivant" au volant
Scénario: Notification sonore uniquement en mode Android Auto
Étant donné que l'application est connectée à Android Auto
Et qu'un contenu géolocalisé est détecté (ETA 7s)
Quand la notification est déclenchée
Alors seule la notification sonore (bip) est jouée
Et aucun overlay visuel n'est affiché
Et l'utilisateur peut valider via le bouton "Suivant" au volant
Scénario: Notification complète (sonore + visuelle) en mode normal
Étant donné que l'application n'est PAS connectée à CarPlay/Android Auto
Et qu'un contenu géolocalisé est détecté
Quand la notification est déclenchée
Alors la notification sonore (bip) est jouée
Et l'overlay visuel s'affiche (icône + compteur 71)
# 17.2.3 - Décompte après validation
Scénario: Validation via bouton "Suivant" et décompte 5 secondes
Étant donné qu'une notification géolocalisée est affichée (compteur à 5)
Et que j'écoute un podcast
Quand j'appuie sur le bouton "Suivant"
Alors le compteur bascule à "5" (décompte final)
Et le contenu actuel continue de jouer normalement
Et le compteur décrémente: 54321
Et après 5 secondes, le contenu géolocalisé démarre (fade in 0.3s)
Scénario: Transition fluide avec fade out/in
Étant donné que le décompte atteint "0"
Quand le contenu géolocalisé doit démarrer
Alors le contenu actuel fait un fade out de 0.3s
Et le contenu géolocalisé fait un fade in de 0.3s
Et il n'y a pas de silence entre les deux
Scénario: Contenu actuel se termine pendant le décompte
Étant donné que j'ai validé la notification (décompte 5s démarre)
Et que mon contenu actuel se termine après 2 secondes
Quand le contenu actuel se termine
Alors le contenu suivant du buffer démarre immédiatement
Et le décompte continue (321)
Et à la fin du décompte, le contenu géolocalisé remplace le buffer
Scénario: Ignorance de la notification (pas de clic pendant 7s)
Étant donné qu'une notification géolocalisée s'affiche (compteur 7)
Quand 7 secondes s'écoulent sans que j'appuie sur "Suivant"
Alors la notification disparaît automatiquement
Et le contenu géolocalisé est perdu (pas d'insertion dans la file)
Et un cooldown de 10 minutes est activé
# 17.3 - Limitation anti-spam
Scénario: Quota de 6 contenus géolocalisés par heure
Étant donné que j'ai validé 6 notifications géolocalisées dans la dernière heure
Quand un 7ème contenu géolocalisé est détecté
Alors aucune notification n'est envoyée
Et le contenu n'est pas inséré dans la file
Scénario: Fenêtre glissante de 60 minutes
Étant donné que j'ai validé 6 contenus géolocalisés
Et que le premier contenu a été validé il y a 61 minutes
Quand un nouveau contenu géolocalisé est détecté
Alors la notification est envoyée (quota libéré : 5/6)
Et le compteur horaire est mis à jour
Plan du Scénario: Gestion du quota horaire
Étant donné que <nb_valides> notifications ont été validées dans la dernière heure
Quand un nouveau contenu géolocalisé est détecté
Alors la notification est <action>
Exemples:
| nb_valides | action |
| 0 | envoyée |
| 3 | envoyée |
| 5 | envoyée |
| 6 | non envoyée |
| 7 | non envoyée |
Scénario: Exception audio-guides multi-séquences (comptent comme 1)
Étant donné que j'ai démarré un audio-guide avec 8 séquences
Et que cet audio-guide compte comme 1 contenu dans le quota
Quand toutes les séquences de l'audio-guide sont lues
Alors mon quota reste à 1/6
Et je peux encore valider 5 contenus géolocalisés simples
# 17.3.2 - Cooldown après ignorance
Scénario: Cooldown de 10 minutes après notification ignorée
Étant donné qu'une notification géolocalisée a été ignorée (pas de clic)
Et qu'un cooldown de 10 minutes est activé
Quand 5 minutes s'écoulent
Et qu'un nouveau contenu géolocalisé est détecté
Alors aucune notification n'est envoyée (cooldown actif)
Scénario: Cooldown expire après 10 minutes
Étant donné qu'un cooldown a été activé il y a 10 minutes
Quand un nouveau contenu géolocalisé est détecté
Alors la notification est envoyée (cooldown expiré)
Scénario: Pas de cooldown si notification validée
Étant donné qu'une notification géolocalisée est affichée
Quand j'appuie sur "Suivant" dans les 7 secondes
Alors aucun cooldown n'est activé
Et la prochaine notification pourra être envoyée normalement
# 17.4 - Navigation avec contenus géolocalisés
Scénario: Contenu géolocalisé dans l'historique de navigation
Étant donné que j'écoute un contenu du buffer
Et que j'ai validé un contenu géolocalisé "Tour Eiffel"
Et que j'ai écouté 42 secondes du contenu géolocalisé
Quand j'appuie sur "Suivant" (skip)
Et que j'appuie ensuite sur "Précédent"
Alors le contenu géolocalisé reprend à 42 secondes
Scénario: Contenu ignoré n'entre pas dans l'historique
Étant donné qu'une notification géolocalisée a été ignorée
Quand j'appuie sur "Précédent"
Alors le contenu géolocalisé ignoré n'apparaît PAS dans l'historique
Et je reviens au contenu d'avant
Scénario: Skip pendant le décompte annule l'insertion
Étant donné que j'ai validé une notification (décompte 5s en cours)
Et que le compteur affiche "3"
Quand j'appuie à nouveau sur "Suivant"
Alors le décompte est annulé
Et le contenu suivant du buffer démarre
Et le contenu géolocalisé n'entre PAS dans l'historique
# 17.5 - Basculement automatique voiture ↔ piéton
Scénario: Détection mode piéton (vitesse <5 km/h stable 10s)
Étant donné que je suis en mode voiture
Et que ma vitesse passe à 3 km/h
Quand cette vitesse reste stable pendant 10 secondes
Alors le mode piéton est activé automatiquement
Et les notifications passent en mode push arrière-plan (si permission accordée)
Scénario: Détection mode voiture (vitesse ≥5 km/h stable 10s)
Étant donné que je suis en mode piéton
Et que ma vitesse passe à 15 km/h
Quand cette vitesse reste stable pendant 10 secondes
Alors le mode voiture est activé automatiquement
Et les notifications passent en mode sonore + icône (app premier plan requise)
Scénario: Hysteresis pour éviter basculements intempestifs
Étant donné que ma vitesse passe de 20 km/h à 3 km/h (arrêt feu rouge)
Et que ma vitesse remonte à 20 km/h après 8 secondes
Quand le système vérifie le mode
Alors aucun basculement n'a lieu (hysteresis de 10s non atteinte)
Et je reste en mode voiture
Plan du Scénario: Effets du basculement voiture → piéton
Étant donné que je bascule de voiture à piéton
Quand le basculement est effectué
Alors les paramètres suivants changent:
| paramètre | voiture | piéton |
| App requise | Premier plan | Arrière-plan OK |
| Notification | Sonore + icône + compteur| Push système |
| Rayon détection | ETA 7s (variable) | 200m fixes |
| Type contenu | Tous géolocalisés | Audio-guides uniquement |
# 17.6 - Edge cases
Scénario: Haute vitesse (130 km/h sur autoroute)
Étant donné que je roule à 130 km/h (36.1 m/s)
Et qu'un contenu géolocalisé est à 252 mètres
Quand l'ETA de 7s est atteint
Et que je valide la notification
Alors le décompte 5s démarre
Et le contenu géolocalisé démarre encore avant le point GPS (72m avant)
Scénario: Multiples points géolocalisés proches (route touristique)
Étant donné que 3 châteaux sont espacés de 800m chacun
Et que je valide la notification du Château A
Quand j'arrive près du Château B (57s plus tard à 50 km/h)
Alors la notification du Château B est envoyée (quota 2/6, pas de cooldown)
Scénario: Mode stationnement (vitesse <1 km/h pendant 2 min)
Étant donné que je me gare à 30m d'un château
Et que ma vitesse est <1 km/h pendant 2 minutes
Quand le mode stationnement est détecté
Alors aucune notification de contenu géolocalisé n'est envoyée
Et le système bascule automatiquement en mode piéton
Scénario: Reprise conduite après stationnement
Étant donné que je suis en mode stationnement
Et que ma vitesse passe à 20 km/h pendant 10 secondes
Quand le système détecte la reprise de conduite
Alors le mode voiture est réactivé
Et les notifications géolocalisées reprennent (si quota non atteint)
# Distinction contenus géolocalisés simples vs audio-guides
Scénario: Contenu géolocalisé simple (1 séquence unique)
Étant donné qu'un contenu géolocalisé simple existe à un point GPS
Quand la notification est déclenchée (ETA 7s)
Et que je valide
Alors le contenu démarre après décompte 5s
Et à la fin du contenu, le buffer normal reprend
Et ce contenu compte 1/6 dans le quota
Scénario: Audio-guide multi-séquences (2+ séquences enchaînées)
Étant donné qu'un audio-guide avec 8 séquences existe
Quand je démarre l'audio-guide
Et que les séquences s'enchaînent automatiquement (GPS ou manuel)
Alors l'audio-guide entier compte 1/6 dans le quota
Et les séquences ne déclenchent PAS de notification avec compteur 7s
Et elles se déclenchent au point GPS exact (rayon 30m)
# Gestion erreurs
Scénario: GPS désactivé en mode voiture
Étant donné que je suis en mode voiture
Quand le GPS est désactivé
Alors aucune notification géolocalisée ne peut être envoyée
Et un message d'erreur s'affiche: "GPS requis pour les contenus géolocalisés"
Scénario: App en arrière-plan en mode voiture
Étant donné que je suis en mode voiture
Et que l'app passe en arrière-plan
Quand un contenu géolocalisé est détecté
Alors aucune notification n'est envoyée (app premier plan requise)
Et le contenu n'est pas perdu (sera proposé si app rouverte dans le rayon)
Scénario: Permission "Always Location" refusée (mode piéton indisponible)
Étant donné que je refuse la permission "Always Location"
Quand ma vitesse passe <5 km/h
Alors le mode piéton n'est PAS activé
Et le mode voiture reste actif (avec permission "When In Use")
Et aucune notification arrière-plan n'est envoyée