# language: fr

@rgpd @geoip @degraded-mode
Fonctionnalité: Mode dégradé avec GeoIP (sans GPS précis)

  # 13.5 - GeoIP par défaut, GPS optionnel (progressive disclosure)

  Contexte:
    Étant donné que je suis un nouvel utilisateur
    Et que je lance l'application pour la première fois

  # Niveaux de précision

  Plan du Scénario: Trois niveaux de géolocalisation disponibles
    Étant donné que j'utilise le niveau de géolocalisation "<niveau>"
    Quand le système détermine ma position
    Alors la technologie utilisée est "<technologie>"
    Et les contenus accessibles sont "<contenus>"
    Et le consentement RGPD est "<consentement>"

    Exemples:
      | niveau  | technologie      | contenus                               | consentement    |
      | Pays    | Aucune géoloc    | Contenus nationaux uniquement          | Non requis      |
      | Ville   | GeoIP (IP2Location)  | Contenus régionaux/ville               | Non requis      |
      | Précis  | GPS              | Tous contenus (hyperlocaux inclus)     | Requis          |

  # Démarrage avec GeoIP automatique

  Scénario: GeoIP activé par défaut au premier lancement
    Étant donné que je lance l'application pour la première fois
    Et que je n'ai pas encore accepté le GPS précis
    Quand l'application démarre
    Alors le système utilise automatiquement GeoIP basé sur mon adresse IP
    Et ma position est détectée au niveau ville: "Paris, France"
    Et aucun consentement n'est requis (GeoIP ne collecte pas de données personnelles)
    Et je peux accéder aux contenus régionaux et de ville

  Scénario: Détection de ville avec IP2Location Lite
    Étant donné que mon adresse IP est 93.184.216.34
    Quand le système utilise GeoIP IP2Location Lite
    Alors ma ville est détectée: "Paris"
    Et ma région est détectée: "Île-de-France"
    Et mon pays est détecté: "France"
    Et la précision est d'environ 80% au niveau ville
    Et aucune coordonnée GPS précise n'est révélée

  # Banner in-app pour upgrade vers GPS

  Scénario: Banner d'invitation à activer le GPS
    Étant donné que j'utilise l'application en mode GeoIP
    Quand je suis sur l'écran principal
    Alors un banner discret s'affiche en haut:
      """
      Activez la géolocalisation pour découvrir du contenu près de chez vous
      [Activer]
      """
    Et le banner n'est pas intrusif (pas de popup modale)
    Et je peux le fermer temporairement avec un bouton X
    Et le banner réapparaît tous les 7 jours si je ne l'active pas

  Scénario: Upgrade volontaire vers GPS depuis le banner
    Étant donné que le banner d'invitation au GPS est affiché
    Quand je clique sur "Activer"
    Alors un écran de consentement GPS s'affiche
    Et l'écran explique les avantages:
      """
      En activant la géolocalisation précise, vous pouvez:
      - Découvrir du contenu hyperlocal près de vous
      - Accéder aux audio-guides géolocalisés
      - Recevoir des notifications quand vous passez près de points d'intérêt
      """
    Et je peux accepter ou refuser
    Et si j'accepte, la permission OS est demandée

  # Contenus accessibles selon le niveau

  Scénario: Contenus disponibles en mode Pays (aucune géoloc)
    Étant donné que je n'autorise aucune géolocalisation
    Quand le système recherche du contenu à me proposer
    Alors seuls les contenus "National" sont disponibles
    Et les contenus géolocalisés (Ancré, Contextuel) ne sont pas proposés
    Et je vois un message: "Activez la géolocalisation pour plus de contenu local"

  Scénario: Contenus disponibles en mode Ville (GeoIP)
    Étant donné que j'utilise le mode GeoIP et que je suis détecté à Paris
    Quand le système recherche du contenu à me proposer
    Alors les contenus suivants sont disponibles:
      | type_contenu          | disponible |
      | National              | oui        |
      | Région Île-de-France  | oui        |
      | Ville Paris           | oui        |
      | Hyperlocal (GPS)      | non        |
      | Audio-guides          | non        |
    Et je reçois des recommandations pertinentes pour Paris

  Scénario: Tous contenus disponibles en mode Précis (GPS)
    Étant donné que j'ai activé la géolocalisation précise
    Quand le système recherche du contenu à me proposer
    Alors tous les types de contenus sont disponibles:
      | type_contenu          | disponible |
      | National              | oui        |
      | Régional              | oui        |
      | Ville                 | oui        |
      | Hyperlocal (Ancré)    | oui        |
      | Contextuel            | oui        |
      | Audio-guides          | oui        |

  # Pas de consentement requis pour GeoIP

  Scénario: GeoIP ne nécessite pas de consentement RGPD
    Étant donné que j'utilise le mode GeoIP
    Quand un auditeur CNIL vérifie la conformité
    Alors GeoIP n'est pas considéré comme une donnée personnelle
    Et l'adresse IP n'est pas conservée après détection de la ville
    Et seule la ville est stockée (non identifiant)
    Et aucun consentement n'est requis conformément au RGPD

  # Implémentation IP2Location Lite

  Scénario: Base de données IP2Location self-hosted
    Étant donné que RoadWave utilise IP2Location Lite
    Quand on analyse l'infrastructure
    Alors la base de données IP2Location est hébergée sur les serveurs RoadWave
    Et aucune requête n'est envoyée à un service tiers
    Et la base de données est mise à jour automatiquement chaque mois
    Et le coût est de 0€ (IP2Location Lite est gratuit)

  Scénario: Mise à jour mensuelle de la base GeoIP
    Étant donné que IP2Location publie des mises à jour mensuelles
    Quand le 1er du mois arrive
    Alors un job automatique télécharge la nouvelle base IP2Location Lite
    Et la base est mise à jour sans interruption de service
    Et un log est créé pour traçabilité
    Et si la mise à jour échoue, une alerte est envoyée

  # Progressive disclosure - UX dégradée acceptable

  Scénario: UX acceptable en mode GeoIP
    Étant donné que j'utilise le mode GeoIP à Paris
    Quand je parcours l'application
    Alors je peux écouter du contenu pertinent pour Paris et l'Île-de-France
    Et l'expérience est satisfaisante même sans GPS précis
    Et je ne suis pas bloqué dans l'utilisation de l'application
    Et je peux choisir d'activer le GPS quand je le souhaite

  Scénario: Incitation progressive à activer le GPS
    Étant donné que j'utilise le mode GeoIP depuis 2 semaines
    Et que je n'ai pas activé le GPS
    Quand je consulte un audio-guide dans les résultats de recherche
    Alors un message s'affiche:
      """
      Cet audio-guide nécessite la géolocalisation précise pour fonctionner.
      [Activer le GPS]  [Plus tard]
      """
    Et si je clique "Plus tard", je peux continuer à utiliser l'app normalement
    Et l'incitation reste douce et non intrusive

  # Passage d'un mode à l'autre

  Scénario: Upgrade GeoIP vers GPS
    Étant donné que j'utilise le mode GeoIP
    Quand j'active la géolocalisation précise
    Alors le système bascule immédiatement en mode GPS
    Et les contenus hyperlocaux deviennent disponibles
    Et mon feed se rafraîchit avec du contenu plus précis
    Et un toast de confirmation s'affiche: "Géolocalisation activée"

  Scénario: Downgrade GPS vers GeoIP
    Étant donné que j'utilise le mode GPS précis
    Quand je désactive la géolocalisation dans les paramètres OS
    Alors le système bascule automatiquement en mode GeoIP
    Et les contenus hyperlocaux ne sont plus proposés
    Et un banner s'affiche: "Géolocalisation désactivée. Seul le contenu régional est disponible."
    Et l'application continue de fonctionner normalement

  # Détection automatique du mode

  Scénario: Détection automatique au démarrage de l'app
    Étant donné que j'ouvre l'application
    Quand l'app vérifie les permissions de géolocalisation
    Alors le système détecte automatiquement le mode disponible:
      | permission GPS | consentement app | mode activé |
      | Refusée        | Non demandé      | Pays        |
      | Refusée        | Accepté          | GeoIP       |
      | Accordée       | Accepté          | GPS précis  |
    Et le mode est appliqué sans interaction utilisateur

  # Précision GeoIP ~80%

  Scénario: Précision acceptable pour la plupart des cas
    Étant donné que j'habite à Lyon
    Et que mon IP est une IP résidentielle standard
    Quand le système utilise GeoIP pour me localiser
    Alors la ville détectée est "Lyon" (correct à 80%)
    Et dans 20% des cas, la ville peut être légèrement erronée (banlieue proche)
    Et cette précision est suffisante pour proposer du contenu régional pertinent

  Scénario: GeoIP avec VPN ou proxy
    Étant donné que j'utilise un VPN avec une IP sortante à Paris
    Mais que je suis physiquement à Lyon
    Quand le système utilise GeoIP
    Alors la ville détectée est "Paris" (IP du VPN)
    Et les contenus proposés sont pour Paris
    Et je peux activer le GPS précis pour corriger la localisation

  # Conformité RGPD

  Scénario: Pas de donnée personnelle collectée avec GeoIP
    Étant donné que j'utilise le mode GeoIP
    Quand le système détermine ma ville via mon IP
    Alors l'adresse IP n'est pas conservée après détection
    Et seule la ville "Paris" est stockée en base de données
    Et la ville seule n'est pas une donnée personnelle (RGPD)
    Et aucun consentement n'est donc requis

  # Coût de la solution: 0€

  Scénario: Solution GeoIP gratuite et self-hosted
    Étant donné que RoadWave utilise IP2Location Lite
    Quand on calcule le coût de la solution
    Alors le coût est de 0€
    Et la solution est opensource
    Et la base de données est hébergée sur les serveurs RoadWave
    Et aucun coût SaaS tiers
