# language: fr
Fonctionnalité: Mode piéton - Notifications push et basculement automatique
  En tant qu'utilisateur à pied
  Je veux recevoir des notifications push pour audio-guides à proximité
  Afin d'être alerté même avec l'application en arrière-plan

  Contexte:
    Étant donné que l'application RoadWave est installée
    Et que l'utilisateur est connecté

  # Détection automatique mode piéton

  Scénario: Basculement automatique vers mode piéton (vitesse < 5 km/h)
    Étant donné que je suis en mode voiture (vitesse 50 km/h)
    Quand ma vitesse GPS moyenne passe à 3 km/h pendant 10 secondes
    Alors l'application bascule automatiquement en mode piéton
    Et aucune popup de confirmation n'est affichée
    Et les notifications passent de "sonores + icône" à "push arrière-plan"
    Et le rayon de détection passe de 7s ETA à 200 mètres

  Scénario: Basculement automatique vers mode voiture (vitesse ≥ 5 km/h)
    Étant donné que je suis en mode piéton (vitesse 3 km/h)
    Quand ma vitesse GPS moyenne passe à 20 km/h pendant 10 secondes
    Alors l'application bascule automatiquement en mode voiture
    Et aucune popup de confirmation n'est affichée
    Et les notifications passent de "push arrière-plan" à "sonores + icône"
    Et le rayon de détection passe de 200m à 7s ETA

  Scénario: Hysteresis pour éviter basculements intempestifs
    Étant donné que je suis en mode piéton (vitesse 3 km/h)
    Quand ma vitesse passe brièvement à 6 km/h pendant 2 secondes
    Et qu'elle redescend à 3 km/h
    Alors le mode piéton est conservé
    Et aucun basculement n'a lieu
    Car la durée de 10 secondes stables n'a pas été atteinte

  Scénario: Vitesse moyenne calculée sur 30 secondes
    Étant donné que je suis en mode voiture
    Et que mes vitesses sur 30 secondes sont: [50, 48, 52, 3, 2, 4, 3, 2, ...]
    Quand la vitesse moyenne sur 30s devient < 5 km/h
    Et qu'elle reste stable pendant 10 secondes
    Alors le basculement vers mode piéton s'effectue

  # Permissions et activation

  Scénario: Permission "While Using App" demandée au premier lancement
    Étant donné que c'est le premier lancement de l'application
    Quand j'arrive sur l'onboarding
    Alors une demande de permission "Autoriser la localisation pendant l'utilisation" s'affiche
    Et l'explication est: "RoadWave utilise votre position pour proposer des contenus audio géolocalisés adaptés à votre trajet"
    Quand j'accepte
    Alors le mode voiture est pleinement fonctionnel
    Et le mode piéton notifications push n'est PAS encore activé

  Scénario: Permission "Always" demandée uniquement si user active mode piéton
    Étant donné que j'utilise RoadWave avec permission "While Using App"
    Et que je vais dans Réglages > Notifications audio-guides piéton
    Quand je clique sur le toggle "Activer notifications piéton"
    Alors un écran d'éducation s'affiche:
      """
      📍 Notifications audio-guides piéton

      Pour vous alerter d'audio-guides à proximité même
      quand vous marchez avec l'app fermée, RoadWave a
      besoin de votre position en arrière-plan.

      Votre position sera utilisée pour :
      ✅ Détecter monuments à 200m
      ✅ Vous envoyer une notification

      Votre position ne sera jamais :
      ❌ Vendue à des tiers
      ❌ Utilisée pour de la publicité

      Cette fonctionnalité est optionnelle.
      Vous pouvez utiliser RoadWave sans cette permission.

      [Continuer] [Non merci]
      """
    Quand je clique sur "Continuer"
    Alors la demande système "Autoriser toujours" (iOS) ou "Autoriser tout le temps" (Android) s'affiche
    Et le mode piéton push est activé si j'accepte

  Scénario: Permission arrière-plan refusée désactive mode piéton push
    Étant donné que je refuse la permission "Autoriser toujours"
    Quand je reviens dans l'application
    Alors le toggle "Notifications piéton" est grisé et désactivé
    Et un message s'affiche: "Permission refusée. Mode piéton désactivé."
    Et le mode voiture reste pleinement fonctionnel
    Et je peux toujours utiliser les audio-guides en mode manuel

  Scénario: Permission arrière-plan peut être accordée plus tard
    Étant donné que j'ai refusé la permission arrière-plan
    Quand je vais dans Réglages de l'app
    Alors un bouton "Activer notifications piéton" est disponible
    Et un lien vers les réglages système iOS/Android est fourni
    Quand j'accorde la permission dans les réglages système
    Et que je reviens dans l'app
    Alors le mode piéton push est automatiquement activé

  # Notifications push en arrière-plan

  Scénario: Notification push quand app en arrière-plan (mode piéton)
    Étant donné que je suis en mode piéton
    Et que l'application est en arrière-plan (fermée)
    Et que je marche à proximité du Louvre
    Quand je passe dans le rayon de 200 mètres d'un audio-guide
    Alors une notification push système s'affiche:
      """
      Audio-guide à proximité
      Musée du Louvre : La Joconde - @paris_museum
      """
    Et je reçois la notification même si l'app est fermée

  Scénario: Tap sur notification ouvre app sur le contenu
    Étant donné qu'une notification push "Audio-guide à proximité" s'affiche
    Quand je tape sur la notification
    Alors l'application s'ouvre
    Et je suis redirigé vers la page du contenu audio-guide
    Et je peux démarrer la lecture manuellement
    Et je peux voir la description, le créateur, la durée, etc.

  Scénario: Geofencing iOS/Android pour économie batterie
    Étant donné que le mode piéton est activé
    Et que l'application utilise geofencing natif
    Quand je me déplace à pied
    Alors l'OS iOS/Android gère la détection de proximité
    Et l'application n'a pas besoin d'être constamment active
    Et la batterie est préservée (< 5% consommation supplémentaire)

  Scénario: Rayon de détection 200 mètres en mode piéton
    Étant donné que je suis en mode piéton
    Et qu'un audio-guide existe à 250 mètres
    Quand je me déplace
    Alors aucune notification n'est envoyée (hors rayon)
    Quand je passe à 180 mètres
    Alors une notification push est envoyée
    Car je suis dans le rayon de 200m

  # Quota anti-spam mode piéton

  Scénario: Même quota 6 notifications/heure en mode piéton
    Étant donné que je suis en mode piéton
    Et que j'ai reçu 6 notifications push dans la dernière heure
    Quand je passe près d'un 7ème audio-guide
    Alors aucune notification n'est envoyée
    Et le quota horaire est respecté

  Scénario: Cooldown 10 min si notification ignorée (app pas ouverte)
    Étant donné qu'une notification push a été envoyée
    Et que je ne l'ai pas ouverte dans les 10 minutes
    Quand le système détecte l'ignorance
    Alors un cooldown de 10 minutes est activé
    Et aucune nouvelle notification n'est envoyée pendant 10 min

  # Basculement automatique

  Scénario: Basculement transparent sans friction
    Étant donné que je marche à 3 km/h (mode piéton)
    Et que je monte dans ma voiture
    Quand ma vitesse passe à 50 km/h (stable 10s)
    Alors le basculement vers mode voiture s'effectue automatiquement
    Et je n'ai rien à faire
    Et aucune popup ne m'interrompt
    Et l'expérience est transparente

  Scénario: Notifications adaptées automatiquement
    Étant donné que je passe de piéton (3 km/h) à voiture (50 km/h)
    Quand le basculement s'effectue
    Alors les notifications push arrière-plan sont désactivées
    Et les notifications sonores + icône (app ouverte) sont activées
    Et le rayon passe de 200m à ETA 7 secondes
    Et l'adaptation est immédiate

  # Garantie RGPD et fonctionnalité optionnelle

  Scénario: Application utilisable sans permission arrière-plan
    Étant donné que je refuse la permission "Autoriser toujours"
    Quand j'utilise RoadWave
    Alors le mode voiture fonctionne à 100%
    Et je peux accéder à tous les audio-guides en mode manuel
    Et je peux télécharger des contenus offline
    Et seules les notifications push piéton sont désactivées

  Scénario: Révocation permission arrière-plan désactive mode piéton
    Étant donné que le mode piéton push était actif
    Quand je révoque la permission dans les réglages iOS/Android
    Et que j'ouvre l'application
    Alors un message s'affiche: "Permission arrière-plan révoquée. Mode piéton désactivé."
    Et le toggle est grisé dans les réglages
    Et le mode voiture reste fonctionnel

  Scénario: Désactivation mode piéton dans réglages
    Étant donné que le mode piéton push est actif
    Quand je vais dans Réglages > Notifications audio-guides piéton
    Et que je désactive le toggle
    Alors les notifications push sont arrêtées
    Et le geofencing est désactivé
    Et la permission arrière-plan reste accordée (mais non utilisée)
    Et je peux réactiver plus tard

  # Messages d'information

  Scénario: Message clair sur usage permission arrière-plan
    Étant donné que je consulte les réglages
    Quand j'affiche les informations sur le mode piéton
    Alors je vois:
      """
      RoadWave utilise votre position en arrière-plan uniquement
      pour vous alerter d'audio-guides à proximité quand vous
      marchez. Cette fonctionnalité peut être désactivée à tout
      moment. Votre position n'est jamais partagée avec des tiers.
      """

  # Cas limites

  Scénario: Mode indéterminé si vitesse exactement 5 km/h
    Étant donné que ma vitesse moyenne est exactement 5.0 km/h
    Quand le système vérifie le mode
    Alors le mode actuel est conservé (pas de basculement)
    Car le seuil est strict (< 5 km/h pour piéton, ≥ 5 km/h pour voiture)

  Scénario: Basculement impossible si GPS désactivé
    Étant donné que je désactive le GPS
    Quand le système tente de détecter la vitesse
    Alors aucun basculement automatique ne se produit
    Et le mode actuel est conservé par défaut
    Et un message "GPS désactivé" s'affiche si je tente de naviguer

  Scénario: Notification push ignorée ne consomme pas de quota
    Étant donné qu'une notification push est envoyée
    Et que je ne l'ouvre pas (ignorée)
    Quand je consulte mon quota
    Alors cette notification compte quand même dans le quota 6/h
    Et le cooldown 10 min est activé

  Plan du Scénario: Basculement selon vitesse
    Étant donné que ma vitesse moyenne est <vitesse> km/h pendant 10s
    Et que je suis en mode <mode_initial>
    Quand le système détecte la vitesse stable
    Alors le mode devient <mode_final>

    Exemples:
      | vitesse | mode_initial | mode_final |
      | 2       | voiture      | piéton     |
      | 3       | voiture      | piéton     |
      | 4       | voiture      | piéton     |
      | 5       | piéton       | voiture    |
      | 10      | piéton       | voiture    |
      | 50      | piéton       | voiture    |
      | 130     | piéton       | voiture    |

  Plan du Scénario: Rayon de détection selon mode
    Étant donné que je suis en mode <mode>
    Quand un contenu géolocalisé existe à <distance>
    Alors une notification est <decision>

    Exemples:
      | mode    | distance | decision      |
      | piéton  | 150m     | envoyée       |
      | piéton  | 199m     | envoyée       |
      | piéton  | 201m     | non envoyée   |
      | piéton  | 300m     | non envoyée   |
      | voiture | 98m (ETA 7s) | envoyée   |
      | voiture | 150m (ETA 10s) | non envoyée |
