feat(gherkin): ajouter features contenus géolocalisés mode voiture

Ajout et enrichissement des fichiers Gherkin pour les contenus
géolocalisés en mode voiture selon règles métier section 17:

API Backend (notifications-geolocalisees.feature):
- Edge cases haute vitesse (130 km/h, 180 km/h)
- Gestion multiples points géolocalisés proches (800m)
- Cooldown réduit après validations multiples
- Mode stationnement (vitesse < 1 km/h pendant 2 min)

UI Mobile (contenus-geolocalises-voiture.feature) - nouveau fichier:
- Notification visuelle minimaliste (icône + compteur, pas de texte)
- Validation "Suivant" et décompte 5 secondes
- Transitions audio fluides (fade in/out)
- Conformité CarPlay/Android Auto (sonore uniquement)
- Navigation avec contenus géolocalisés
- Annulation décompte et gestion historique

UI Navigation (commande-precedent.feature):
- Comportement "Précédent" avec contenus géolocalisés
- Historique mixte buffer et géolocalisés
- Règle 10s pour replay/retour
- Notification ignorée/annulée n'entre pas dans historique
This commit is contained in:
jpgiannetti
2026-02-02 22:53:13 +01:00
parent a19a901ed4
commit 7d3b32856e
3 changed files with 497 additions and 0 deletions

View File

@@ -388,3 +388,102 @@ Fonctionnalité: API - Notifications géolocalisées et quota anti-spam
| 5 | disponible |
| 6 | atteint |
| 7 | atteint |
# Edge cases : haute vitesse
Scénario: API calcule ETA correctement à 130 km/h
Étant donné qu'un contenu géolocalisé existe
Et que l'utilisateur roule à 130 km/h (36.1 m/s)
Et qu'il est à 252 mètres du point
Quand je POST /api/v1/geo-notifications/check-eta
"""json
{
"user_id": "user123",
"speed_kmh": 130,
"distance_meters": 252
}
"""
Alors le statut de réponse est 200
Et la réponse contient:
"""json
{
"eta_seconds": 7,
"speed_ms": 36.1,
"should_notify": true,
"notification_trigger": "eta_threshold"
}
"""
Et une notification est envoyée 252m avant le point
Scénario: API calcule distance notification selon vitesse
Étant donné qu'un contenu géolocalisé existe
Quand l'utilisateur roule à 180 km/h (50 m/s)
Alors la notification est déclenchée à 350 mètres avant le point
Et après décompte 5s, user a parcouru 250m
Et le contenu démarre 100m avant le point
Et le système fonctionne même à vitesse extrême
# Edge cases : multiples points proches
Scénario: API gère multiples points géolocalisés proches (800m chacun)
Étant donné que 3 châteaux existent espacés de 800m chacun
| contenu | position_km |
| Château A | 0 |
| Château B | 0.8 |
| Château C | 1.6 |
Et que l'utilisateur roule à 50 km/h
Quand une notification Château A est envoyée et acceptée
Alors le quota passe à 1/6
Et aucun cooldown n'est activé (notification acceptée)
Quand 57 secondes s'écoulent (temps pour parcourir 800m)
Et que l'utilisateur atteint Château B
Alors une notification Château B est envoyée
Car le quota n'est pas atteint (1/6)
Et il n'y a pas de cooldown actif
Scénario: API active cooldown réduit après validations multiples
Étant donné que l'utilisateur a validé 2 notifications consécutives
Et que les notifications ont toutes été acceptées (clic "Suivant")
Quand une 3ème notification est ignorée
Alors le cooldown activé est 5 minutes (réduit)
Et non 10 minutes (standard)
Car l'utilisateur a montré de l'engagement précédemment
Scénario: API ignore notifications si cooldown actif après ignorance
Étant donné qu'une notification a été ignorée à 10:00:00
Et qu'un cooldown de 10 minutes est actif
Et que 3 contenus géolocalisés existent à 10:05, 10:08, 10:11
Quand l'utilisateur passe devant le contenu à 10:05
Alors aucune notification n'est envoyée (cooldown actif, reste 5 min)
Quand l'utilisateur passe devant le contenu à 10:08
Alors aucune notification n'est envoyée (cooldown actif, reste 2 min)
Quand l'utilisateur passe devant le contenu à 10:11
Alors une notification est envoyée (cooldown expiré après 10 min)
# Edge cases : mode stationnement
Scénario: API détecte mode stationnement (vitesse < 1 km/h pendant 2 min)
Étant donné que l'utilisateur roule à 50 km/h
Quand la vitesse passe à 0.5 km/h (arrêt complet)
Et que la vitesse reste < 1 km/h pendant 2 minutes consécutives
Alors le mode "stationnement" est activé
Et aucune notification géolocalisée n'est envoyée
Et le système bascule automatiquement en mode piéton
Et un événement "mode_stationnement_detected" est enregistré
Scénario: API sort du mode stationnement quand vitesse > 5 km/h
Étant donné que le mode stationnement est actif depuis 30 minutes
Et que l'utilisateur était à l'arrêt près d'un château
Quand la vitesse passe à 20 km/h pendant 10 secondes
Alors le mode voiture est réactivé
Et les notifications géolocalisées reprennent
Et le quota horaire est vérifié avant nouvelle notification
Scénario: API refuse notification si user arrêté longtemps près d'un point
Étant donné qu'un contenu géolocalisé existe à 30 mètres
Et que l'utilisateur est à l'arrêt (vitesse 0 km/h) depuis 3 minutes
Quand le système détecte la proximité
Alors le mode stationnement est actif
Et aucune notification n'est envoyée
Car l'utilisateur est probablement stationné (parking)
Et pas en mode conduite