225 lines
9.8 KiB
Gherkin
225 lines
9.8 KiB
Gherkin
# 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 (MaxMind) | 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 MaxMind GeoLite2
|
|
Étant donné que mon adresse IP est 93.184.216.34
|
|
Quand le système utilise GeoIP MaxMind GeoLite2
|
|
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 MaxMind GeoLite2
|
|
|
|
Scénario: Base de données MaxMind self-hosted
|
|
Étant donné que RoadWave utilise MaxMind GeoLite2
|
|
Quand on analyse l'infrastructure
|
|
Alors la base de données GeoLite2 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€ (GeoLite2 est gratuit)
|
|
|
|
Scénario: Mise à jour mensuelle de la base GeoIP
|
|
Étant donné que MaxMind publie des mises à jour mensuelles
|
|
Quand le 1er du mois arrive
|
|
Alors un job automatique télécharge la nouvelle base GeoLite2
|
|
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 MaxMind GeoLite2
|
|
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
|