# language: fr

Fonctionnalité: Audio-guides modes vélo et transport
  En tant qu'utilisateur à vélo ou en transport en commun
  Je veux profiter d'un guidage GPS adapté à mon mode de déplacement
  Afin d'avoir une expérience optimisée avec tolérances appropriées

  Contexte:
    Étant donné que l'application RoadWave est démarrée
    Et que l'utilisateur "jean@example.com" est connecté
    Et que le GPS est activé

  # 16.4 - Modes Vélo et Transport

  Plan du Scénario: Paramètres par mode de déplacement
    Étant donné un audio-guide configuré en mode <mode>
    Alors les paramètres suivants sont appliqués:
      | paramètre                         | valeur                  |
      | Rayon déclenchement               | <rayon_declenchement>   |
      | Rayon tolérance "point manqué"    | <rayon_tolerance>       |
      | Vitesse recommandée               | <vitesse_recommandee>   |
      | Seuil warning sécurité            | <seuil_warning>         |

    Exemples:
      | mode      | rayon_declenchement | rayon_tolerance | vitesse_recommandee | seuil_warning      |
      | Voiture   | 30m                 | 100m            | 20-50 km/h          | >10 km/h           |
      | Vélo      | 50m                 | 75m             | 10-25 km/h          | >5 km/h            |
      | Transport | 100m                | 150m            | Variable            | Désactivé          |

  # Mode Vélo

  Scénario: Déclenchement automatique avec rayon 50m (mode vélo)
    Étant donné un audio-guide vélo "Circuit des châteaux de la Loire"
    Et que le point GPS 3 a un rayon de 50m
    Quand l'utilisateur à vélo entre à 45m du point
    Alors la séquence 3 "Château de Chambord" se déclenche automatiquement

  Scénario: Rayon plus large justifié pour le vélo
    Étant donné qu'un cycliste roule sur piste cyclable
    Et que sa vitesse varie entre 8 et 22 km/h (arrêts fréquents)
    Et que le tracé est moins prévisible qu'en voiture
    Quand un point GPS avec rayon 50m est défini
    Alors le rayon plus large compense la variabilité de trajectoire

  Scénario: Warning sécurité dès 5 km/h en vélo
    Étant donné un audio-guide vélo en cours
    Et que la vitesse actuelle est 12 km/h
    Quand l'utilisateur clique sur [▶|] "Suivant"
    Alors l'action est exécutée
    Et un warning s'affiche: "⚠️ Manipulation en déplacement détecté. Pour votre sécurité, arrêtez-vous."

  Plan du Scénario: Warning vélo selon la vitesse
    Étant donné que la vitesse actuelle à vélo est <vitesse> km/h
    Quand l'utilisateur clique sur un bouton de navigation
    Alors le warning est affiché : <warning>

    Exemples:
      | vitesse | warning |
      | 0       | Non     |
      | 4       | Non     |
      | 6       | Oui     |
      | 15      | Oui     |
      | 25      | Oui     |

  Scénario: Tolérance GPS moins stricte en vélo
    Étant donné qu'un cycliste passe à 65m du point GPS 4
    Et que le rayon de déclenchement est 50m
    Et que le rayon de tolérance est 75m
    Quand la distance est détectée
    Alors la popup "Point manqué" s'affiche avec 3 options
    Et le système tolère l'écart (trajectoire vélo moins prévisible)

  Scénario: Affichage adapté au vélo
    Étant donné un audio-guide vélo en cours
    Quand l'interface est affichée
    Alors les informations suivantes sont visibles:
      | information            | valeur                     |
      | Icône mode             | 🚴                        |
      | Distance prochain point| "450 m"                    |
      | ETA                    | "≈ 2 minutes"              |
      | Direction              | ↗️                        |
      | Vitesse actuelle       | "18 km/h"                  |
      | Vitesse recommandée    | "10-25 km/h"               |

  Scénario: Cas d'usage - Piste cyclable avec arrêts fréquents
    Étant donné qu'un cycliste suit un circuit nature
    Et qu'il s'arrête régulièrement (feux, photos, fatigue)
    Quand il s'arrête à 40m d'un point GPS (rayon 50m)
    Alors la séquence se déclenche automatiquement
    Et le rayon large permet le déclenchement malgré l'arrêt

  Scénario: Cas d'usage - Circulation mixte piétons/vélos
    Étant donné qu'un cycliste roule sur voie partagée
    Et qu'il doit ralentir fréquemment pour éviter les piétons
    Quand sa vitesse varie entre 5 et 20 km/h
    Alors le système s'adapte avec le rayon 50m
    Et le déclenchement reste fiable

  # Mode Transport

  Scénario: Déclenchement automatique avec rayon 100m (mode transport)
    Étant donné un audio-guide transport "Ligne touristique Paris"
    Et que le point GPS "Tour Eiffel" a un rayon de 100m
    Quand le bus touristique entre à 85m du point
    Alors la séquence "Tour Eiffel" se déclenche automatiquement

  Scénario: Rayon très large justifié pour le transport
    Étant donné qu'un bus touristique suit une ligne fixe
    Et qu'il effectue des arrêts fréquents (stations)
    Et que l'utilisateur n'a aucun contrôle sur la trajectoire
    Quand un point GPS avec rayon 100m est défini
    Alors le rayon large compense les arrêts et la ligne fixe

  Scénario: Pas de warning sécurité en mode transport
    Étant donné un audio-guide transport en cours
    Et que le bus roule à 50 km/h
    Quand l'utilisateur clique sur [▶|] "Suivant"
    Alors l'action est exécutée immédiatement
    Et aucun warning n'est affiché
    Parce que l'utilisateur est passager (pas conducteur)

  Scénario: Vitesse recommandée "Selon ligne"
    Étant donné un audio-guide transport
    Quand l'interface est affichée
    Alors la vitesse recommandée indique "Selon ligne"
    Et aucune valeur fixe n'est affichée (car ligne de transport varie)

  Scénario: Tolérance horaire pour retards
    Étant donné qu'un bus touristique est en retard de 3 minutes
    Et qu'il arrive au point GPS "Musée du Louvre" avec retard
    Quand il entre dans le rayon de 100m
    Alors la séquence se déclenche normalement
    Et le système tolère le retard (pas de pénalité temporelle)

  Scénario: Tolérance spatiale très large (150m)
    Étant donné qu'un bus passe à 120m du point GPS "Arc de Triomphe"
    Et que le rayon de déclenchement est 100m
    Et que le rayon de tolérance est 150m
    Quand la distance est détectée
    Alors la popup "Point manqué" s'affiche avec 3 options

  Scénario: Affichage adapté au transport
    Étant donné un audio-guide transport en cours
    Quand l'interface est affichée
    Alors les informations suivantes sont visibles:
      | information            | valeur                     |
      | Icône mode             | 🚌                        |
      | Distance prochain point| "1.2 km"                   |
      | ETA                    | "≈ 3 minutes"              |
      | Direction              | →                          |
      | Vitesse actuelle       | "35 km/h"                  |
      | Vitesse recommandée    | "Selon ligne"              |

  Scénario: Cas d'usage - Bus touristique hop-on hop-off
    Étant donné un bus touristique "Paris Open Tour"
    Et qu'il suit un circuit fixe avec 15 arrêts
    Quand il approche de chaque arrêt
    Alors la séquence correspondante se déclenche automatiquement
    Et l'utilisateur n'a rien à faire (expérience passive)

  Scénario: Cas d'usage - Train panoramique
    Étant donné un train touristique "Ligne des Alpes"
    Et qu'il roule à vitesse variable (20-80 km/h)
    Quand il passe près de points d'intérêt
    Alors les séquences se déclenchent avec rayon 100m
    Et le système compense la vitesse élevée

  # Comportements identiques à la voiture

  Scénario: Navigation manuelle conservée (vélo et transport)
    Étant donné un audio-guide en mode <mode>
    Quand l'utilisateur clique sur [▶|] ou [|◀]
    Alors les boutons manuels fonctionnent normalement
    Et aucune vérification GPS n'est effectuée

    Exemples:
      | mode      |
      | Vélo      |
      | Transport |

  Scénario: Affichage distance + ETA + direction (tous modes)
    Étant donné un audio-guide en mode <mode>
    Quand l'interface est affichée
    Alors les informations distance, ETA et direction sont affichées
    Et le format est identique au mode voiture

    Exemples:
      | mode      |
      | Vélo      |
      | Transport |

  Scénario: Gestion "Point manqué" identique
    Étant donné un audio-guide en mode <mode>
    Quand un point GPS est manqué (dans rayon tolérance)
    Alors la popup avec 3 options s'affiche:
      | option               |
      | 🔊 Écouter quand même |
      | ⏭️ Passer au suivant  |
      | 🔙 Faire demi-tour    |

    Exemples:
      | mode      |
      | Vélo      |
      | Transport |

  # Publicités (identique tous modes)

  Plan du Scénario: Insertion publicité dans tous les modes
    Étant donné un utilisateur gratuit écoute un audio-guide en mode <mode>
    Quand la séquence 5 se termine (1 pub / 5 séquences)
    Alors la publicité s'enchaîne automatiquement
    Et elle est skippable après 5 secondes

    Exemples:
      | mode      |
      | Voiture   |
      | Vélo      |
      | Transport |
      | Piéton    |

  # Cas d'erreur

  Scénario: GPS imprécis en forêt (vélo)
    Étant donné un cycliste dans une forêt dense
    Et que la précision GPS est ±80m
    Quand il approche d'un point GPS avec rayon 50m
    Alors un avertissement s'affiche:
      """
      ⚠️ Signal GPS imprécis (±80m)
      Le déclenchement peut être perturbé.
      Utilisez les boutons manuels si nécessaire.
      """

  Scénario: Bus dévié de son itinéraire (transport)
    Étant donné un bus touristique avec déviation
    Et que plusieurs points GPS deviennent inaccessibles
    Quand l'utilisateur est informé
    Alors un message s'affiche:
      """
      ⚠️ Itinéraire modifié
      Certains points ne seront pas atteints.
      Utilisez la navigation manuelle.
      """

  Scénario: Changement de mode en cours de route
    Étant donné un audio-guide démarré en mode "Vélo"
    Quand l'utilisateur décide de continuer à pied
    Et qu'il ouvre les paramètres
    Alors il peut changer le mode vers "Piéton"
    Et les rayons sont reconfigurés automatiquement
    Et une confirmation s'affiche:
      """
      Mode changé : 🚶 Piéton
      Navigation manuelle activée.
      """

  Scénario: Détection automatique incohérente
    Étant donné qu'un utilisateur marche rapidement (7 km/h)
    Et que le système détecte "Vélo" par erreur
    Quand la suggestion s'affiche
    Alors l'utilisateur peut cliquer sur "Changer"
    Et sélectionner manuellement "Piéton"

  Scénario: Batterie en mode vélo longue distance
    Étant donné un circuit vélo de 50 km avec 20 séquences
    Et que l'utilisateur roule pendant 3 heures
    Quand la batterie atteint 15%
    Alors une notification suggère:
      """
      🔋 Batterie à 15%
      Recommandé : activer mode économie d'énergie
      (Désactive affichage continu distance)
      [Activer] [Ignorer]
      """
