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.
192 lines
11 KiB
Gherkin
192 lines
11 KiB
Gherkin
# language: fr
|
|
|
|
@api @audio-guides @navigation @mvp
|
|
Fonctionnalité: Gestion des points d'intérêt manqués
|
|
|
|
En tant qu'utilisateur
|
|
Je veux pouvoir gérer les points d'intérêt que j'ai manqués
|
|
Afin de compléter mon expérience audio-guide même après avoir dépassé certains points
|
|
|
|
Contexte:
|
|
Étant donné que le système de gestion des points manqués respecte:
|
|
| Paramètre | Valeur |
|
|
| Distance max pour considérer "manqué" | 1 km |
|
|
| Temps max pour considérer "manqué" | 10 minutes |
|
|
| Possibilité de retour arrière | Oui |
|
|
| Lecture différée autorisée | Oui |
|
|
|
|
Scénario: Détection automatique d'un point manqué en mode voiture
|
|
Étant donné un utilisateur "alice@roadwave.fr" en mode voiture à 90 km/h
|
|
Et elle suit l'audio-guide "Route des Châteaux de la Loire"
|
|
Et le prochain point d'intérêt est le Château de Chaumont
|
|
Quand elle dépasse le château sans entrer dans son rayon de déclenchement (400m)
|
|
Et elle s'éloigne à plus de 1 km du point
|
|
Alors le système marque le point comme "Manqué"
|
|
Et une notification discrète s'affiche: "Point manqué : Château de Chaumont"
|
|
Et le point apparaît dans la section "Points manqués" de la liste
|
|
Et un événement "POI_MARKED_AS_MISSED" est enregistré avec raison: "out_of_range"
|
|
Et la métrique "poi.missed.out_of_range" est incrémentée
|
|
|
|
Scénario: Affichage de la liste des points manqués
|
|
Étant donné un utilisateur "bob@roadwave.fr" qui a manqué 3 points sur 10
|
|
Quand il ouvre la liste des séquences
|
|
Alors il voit une section dédiée "Points manqués (3)":
|
|
| Point d'intérêt | Distance actuelle | Actions |
|
|
| Château de Chaumont | 15 km en arrière | [Écouter] [Y retourner] |
|
|
| Musée de Cluny | 8 km en arrière | [Écouter] [Y retourner] |
|
|
| Rue Mouffetard | 2 km en arrière | [Écouter] [Y retourner] |
|
|
Et un compteur global affiche: "7/10 points visités"
|
|
Et un événement "MISSED_POIS_LIST_VIEWED" est enregistré
|
|
Et la métrique "missed_pois.list_viewed" est incrémentée
|
|
|
|
Scénario: Écoute différée d'un point manqué sans retour physique
|
|
Étant donné un utilisateur "charlie@roadwave.fr" qui a manqué le Château de Chaumont
|
|
Et il est maintenant à 20 km du château
|
|
Quand il clique sur "Écouter" dans la liste des points manqués
|
|
Alors l'audio du Château de Chaumont démarre immédiatement
|
|
Et un bandeau indique: "Écoute différée - Vous n'êtes pas sur place"
|
|
Et le point reste marqué comme "Manqué mais écouté"
|
|
Et un événement "MISSED_POI_LISTENED_REMOTE" est enregistré
|
|
Et la métrique "missed_poi.listened.remote" est incrémentée
|
|
|
|
Scénario: Navigation de retour vers un point manqué
|
|
Étant donné un utilisateur "david@roadwave.fr" qui a manqué le Musée de Cluny
|
|
Et il est à 5 km du musée
|
|
Quand il clique sur "Y retourner" dans la liste des points manqués
|
|
Alors l'application lance la navigation GPS vers le Musée de Cluny
|
|
Et un itinéraire est calculé et affiché
|
|
Et l'ETA est affiché: "12 min en voiture"
|
|
Et un événement "NAVIGATION_TO_MISSED_POI_STARTED" est enregistré
|
|
Et la métrique "missed_poi.navigation_started" est incrémentée
|
|
|
|
Scénario: Retour physique et déclenchement automatique d'un point manqué
|
|
Étant donné un utilisateur "eve@roadwave.fr" qui a manqué le Château de Chaumont
|
|
Et elle a cliqué sur "Y retourner"
|
|
Quand elle arrive dans le rayon de déclenchement du château (400m)
|
|
Alors l'audio du château démarre automatiquement
|
|
Et le point passe du statut "Manqué" à "Visité"
|
|
Et une notification de succès s'affiche: "✓ Point complété : Château de Chaumont"
|
|
Et un événement "MISSED_POI_COMPLETED" est enregistré
|
|
Et la métrique "missed_poi.completed" est incrémentée
|
|
|
|
Scénario: Proposition automatique de retour pour points manqués à proximité
|
|
Étant donné un utilisateur "frank@roadwave.fr" qui a manqué la Rue Mouffetard
|
|
Et il continue son parcours et arrive près d'un autre point
|
|
Quand le système détecte qu'il est à 800m de la Rue Mouffetard
|
|
Alors une notification proactive s'affiche: "Point manqué à proximité : Rue Mouffetard (800m). Y aller ?"
|
|
Et deux boutons sont proposés: [Oui, y aller] [Non, continuer]
|
|
Et un événement "MISSED_POI_PROXIMITY_SUGGESTION" est enregistré
|
|
Et la métrique "missed_poi.proximity_suggestion" est incrémentée
|
|
|
|
Scénario: Ignorance volontaire d'un point manqué
|
|
Étant donné un utilisateur "grace@roadwave.fr" qui a manqué le Musée de Cluny
|
|
Et elle ne souhaite pas y retourner
|
|
Quand elle fait glisser le point vers la gauche dans la liste
|
|
Et clique sur "Ignorer définitivement"
|
|
Alors le point est retiré de la liste des points manqués
|
|
Et il passe au statut "Ignoré"
|
|
Et il ne sera plus proposé dans les suggestions
|
|
Et un événement "MISSED_POI_IGNORED" est enregistré
|
|
Et la métrique "missed_poi.ignored" est incrémentée
|
|
|
|
Scénario: Réinitialisation d'un point ignoré
|
|
Étant donné un utilisateur "henry@roadwave.fr" qui a ignoré le Musée de Cluny
|
|
Quand il accède aux paramètres de l'audio-guide
|
|
Et clique sur "Voir les points ignorés (1)"
|
|
Alors il voit la liste: "Musée de Cluny - Ignoré"
|
|
Quand il clique sur "Réactiver"
|
|
Alors le point repasse en statut "Manqué"
|
|
Et il réapparaît dans la liste des points manqués
|
|
Et un événement "MISSED_POI_REACTIVATED" est enregistré
|
|
Et la métrique "missed_poi.reactivated" est incrémentée
|
|
|
|
Scénario: Marquage automatique comme manqué après délai en mode piéton
|
|
Étant donné un utilisateur "iris@roadwave.fr" en mode piéton
|
|
Et elle est à 150m du Panthéon depuis 15 minutes (stationnaire)
|
|
Et elle n'a pas déclenché le point d'intérêt
|
|
Quand elle reprend sa marche et s'éloigne à plus de 500m
|
|
Alors le point est marqué comme "Manqué"
|
|
Et une notification s'affiche: "Point manqué : Panthéon. Voulez-vous y retourner ?"
|
|
Et un événement "POI_MARKED_AS_MISSED" est enregistré avec raison: "timeout_stationary"
|
|
Et la métrique "poi.missed.timeout" est incrémentée
|
|
|
|
Scénario: Statistiques des points manqués en fin de parcours
|
|
Étant donné un utilisateur "jack@roadwave.fr" qui a terminé un audio-guide
|
|
Et il a visité 7 points sur 10, manqué 2 points et ignoré 1 point
|
|
Quand il consulte l'écran de fin de parcours
|
|
Alors il voit les statistiques:
|
|
| Métrique | Valeur |
|
|
| Points visités | 7/10 (70%) |
|
|
| Points manqués | 2 (Chaumont, Cluny) |
|
|
| Points ignorés | 1 (Rue Mouffetard) |
|
|
| Taux de complétion | 70% |
|
|
| Badge obtenu | Explorateur Bronze |
|
|
Et un bouton "Compléter les points manqués" est proposé
|
|
Et un événement "AUDIO_GUIDE_STATS_VIEWED" est enregistré
|
|
|
|
Scénario: Reprise d'un audio-guide pour compléter les points manqués
|
|
Étant donné un utilisateur "kate@roadwave.fr" qui a terminé un audio-guide avec 2 points manqués
|
|
Quand elle clique sur "Compléter les points manqués"
|
|
Alors l'audio-guide est réactivé en mode "Rattrapage"
|
|
Et seuls les 2 points manqués sont actifs sur la carte
|
|
Et les points déjà visités sont grisés
|
|
Et la navigation se concentre uniquement sur les points manqués
|
|
Et un événement "AUDIO_GUIDE_CATCH_UP_MODE" est enregistré
|
|
Et la métrique "audio_guide.catch_up.started" est incrémentée
|
|
|
|
Scénario: Badge de complétion "Perfectionniste" pour 100% de complétion
|
|
Étant donné un utilisateur "luke@roadwave.fr" qui a visité 10/10 points
|
|
Et il a initialement manqué 2 points mais y est retourné
|
|
Quand il termine l'audio-guide avec 100% de complétion
|
|
Alors un badge spécial "Perfectionniste" est débloqué
|
|
Et une animation de célébration est affichée
|
|
Et un événement "BADGE_PERFECTIONIST_UNLOCKED" est enregistré
|
|
Et la métrique "badges.perfectionist.unlocked" est incrémentée
|
|
|
|
Scénario: Notification push après 24h pour rappel des points manqués
|
|
Étant donné un utilisateur "mary@roadwave.fr" qui a terminé un audio-guide hier
|
|
Et elle a manqué 3 points sur 10
|
|
Quand 24 heures se sont écoulées depuis la fin du parcours
|
|
Alors une notification push est envoyée:
|
|
"Vous avez manqué 3 points lors de votre visite du Quartier Latin. Voulez-vous les découvrir ?"
|
|
Et un lien direct vers la liste des points manqués est inclus
|
|
Et un événement "MISSED_POIS_REMINDER_SENT" est enregistré
|
|
Et la métrique "missed_pois.reminder_sent" est incrémentée
|
|
|
|
Scénario: Mode "Rattrapage intelligent" avec optimisation de l'itinéraire
|
|
Étant donné un utilisateur "nathan@roadwave.fr" avec 3 points manqués:
|
|
| Point | Position actuelle | Distance |
|
|
| Château de Chaumont | 48.8475, 2.3450 | 12 km |
|
|
| Musée de Cluny | 48.8505, 2.3434 | 8 km |
|
|
| Rue Mouffetard | 48.8429, 2.3498 | 5 km |
|
|
Quand il clique sur "Itinéraire optimisé pour rattrapage"
|
|
Alors le système calcule l'itinéraire le plus court pour visiter les 3 points:
|
|
| Ordre | Point | Distance cumulée |
|
|
| 1 | Rue Mouffetard | 5 km |
|
|
| 2 | Musée de Cluny | 8.5 km |
|
|
| 3 | Château de Chaumont | 20.5 km |
|
|
Et l'ETA total est affiché: "1h 15min en voiture"
|
|
Et un événement "OPTIMIZED_CATCH_UP_ROUTE_CALCULATED" est enregistré
|
|
Et la métrique "missed_pois.optimized_route" est incrémentée
|
|
|
|
Scénario: Désactivation de la détection automatique des points manqués
|
|
Étant donné un utilisateur "olive@roadwave.fr" qui préfère une expérience libre
|
|
Quand elle active l'option "Désactiver la détection des points manqués"
|
|
Alors les points ne sont jamais marqués comme "Manqués"
|
|
Et aucune notification de point manqué n'est affichée
|
|
Et l'utilisateur peut toujours écouter tous les points manuellement
|
|
Et un événement "MISSED_POIS_DETECTION_DISABLED" est enregistré
|
|
Et la métrique "missed_pois.detection_disabled" est incrémentée
|
|
|
|
Scénario: Métriques de performance de la gestion des points manqués
|
|
Étant donné que 10 000 utilisateurs ont terminé des audio-guides
|
|
Quand les métriques sont collectées
|
|
Alors les indicateurs suivants sont disponibles:
|
|
| Métrique | Valeur moyenne |
|
|
| Pourcentage de points manqués par parcours| 18% |
|
|
| Taux de retour aux points manqués | 35% |
|
|
| Taux d'écoute différée (sans retour) | 55% |
|
|
| Taux d'ignorance définitive | 10% |
|
|
| Taux de complétion après rattrapage | 92% |
|
|
Et les métriques sont exportées vers le système de monitoring
|