docs: améliorer rendu markdown et navigation mkdocs
- Ajouter ADR-018 (librairies Go) dans TECHNICAL.md - Transformer Shared en menu dépliable dans mkdocs (cohérence avec autres domaines) - Corriger listes markdown (ajout lignes vides avant listes) - Corriger line breaks dans génération BDD (étapes "Et" sur nouvelles lignes) - Ajouter script fix-markdown-lists.sh pour corrections futures Impacte 86 fichiers de documentation et 164 fichiers BDD générés.
This commit is contained in:
@@ -14,18 +14,21 @@ La géolocalisation est **critique** pour RoadWave, mais les permissions arrièr
|
||||
### Problématiques Identifiées
|
||||
|
||||
#### iOS App Store
|
||||
|
||||
- **Taux de rejet ~70%** si permission "Always Location" mal justifiée
|
||||
- Apple exige que l'app soit **pleinement utilisable** sans "Always Location"
|
||||
- Textes `Info.plist` scrutés manuellement par reviewers humains
|
||||
- Rejection si suspicion de tracking publicitaire ou vente de données
|
||||
|
||||
#### Android Play Store
|
||||
|
||||
- Depuis Android 10 : `ACCESS_BACKGROUND_LOCATION` nécessite **déclaration justifiée**
|
||||
- Vidéo démo **obligatoire** montrant le flow de demande (< 30s)
|
||||
- Google vérifie que la permission est **réellement optionnelle**
|
||||
- Foreground service notification **obligatoire** en arrière-plan (Android 12+)
|
||||
|
||||
#### RGPD (Règle 02)
|
||||
|
||||
- Permissions doivent être **optionnelles**
|
||||
- Utilisateur doit pouvoir **refuser sans pénalité**
|
||||
- App doit fonctionner en **mode dégradé acceptable**
|
||||
@@ -62,6 +65,7 @@ La géolocalisation est **critique** pour RoadWave, mais les permissions arrièr
|
||||
## Étape 1 : Permission de Base (Onboarding)
|
||||
|
||||
### Quand
|
||||
|
||||
- **Premier lancement** de l'app
|
||||
- Avant de pouvoir utiliser les fonctionnalités principales
|
||||
|
||||
@@ -109,6 +113,7 @@ La géolocalisation est **critique** pour RoadWave, mais les permissions arrièr
|
||||
### Si Permission Refusée
|
||||
|
||||
**Mode dégradé (IP2Location)** :
|
||||
|
||||
- Détection pays/ville via adresse IP (IP2Location Lite, voir [ADR-019](../adr/019-geolocalisation-ip.md))
|
||||
- Contenus nationaux et régionaux disponibles
|
||||
- Pas de contenus hyperlocaux (< 10km)
|
||||
@@ -246,6 +251,7 @@ class LocationOnboardingScreen extends StatelessWidget {
|
||||
## Étape 2 : Permission Arrière-Plan (Optionnelle)
|
||||
|
||||
### Quand
|
||||
|
||||
- User **active explicitement** "Notifications audio-guides piéton" dans Settings
|
||||
- **Jamais au premier lancement**
|
||||
|
||||
@@ -547,6 +553,7 @@ class _NotificationsSettingsScreenState extends State<NotificationsSettingsScree
|
||||
| **Denied** | ⚠️ IP2Location (ville) | ❌ Désactivé | ❌ Aucun | Aucune |
|
||||
|
||||
**Garanties** :
|
||||
|
||||
- App **utilisable** à tous niveaux de permission ✅
|
||||
- Pas de fonctionnalité **bloquante** sans permission ✅
|
||||
- Mode dégradé **acceptable** (contenus régionaux) ✅
|
||||
@@ -632,6 +639,7 @@ class _NotificationsSettingsScreenState extends State<NotificationsSettingsScree
|
||||
- [ ] Fonctionnalité précise ("audio-guides piéton")
|
||||
- [ ] **Optionnalité** ("Cette fonctionnalité est optionnelle")
|
||||
- [ ] Pas de mention tracking/publicité
|
||||
|
||||
- [ ] App fonctionne **complètement** avec permission "When In Use" uniquement
|
||||
- [ ] App fonctionne en **mode dégradé** sans aucune permission (IP2Location)
|
||||
- [ ] Screenshots montrant app fonctionnelle sans permission "Always"
|
||||
@@ -642,11 +650,13 @@ class _NotificationsSettingsScreenState extends State<NotificationsSettingsScree
|
||||
- [ ] Déclaration `ACCESS_BACKGROUND_LOCATION` avec justification dans Play Console :
|
||||
- [ ] "Notifications géolocalisées pour audio-guides touristiques en arrière-plan"
|
||||
- [ ] "Permet aux utilisateurs de recevoir des alertes lorsqu'ils passent près de monuments"
|
||||
|
||||
- [ ] **Vidéo démo obligatoire** (< 30s) montrant :
|
||||
- [ ] Activation toggle "Mode piéton" dans Settings
|
||||
- [ ] Écran d'éducation pré-permission
|
||||
- [ ] Demande permission système Android
|
||||
- [ ] App fonctionnelle si permission refusée
|
||||
|
||||
- [ ] Foreground service notification visible en mode piéton (Android 12+)
|
||||
- [ ] App fonctionne **complètement** avec `ACCESS_FINE_LOCATION` uniquement
|
||||
- [ ] App fonctionne en **mode dégradé** sans permissions
|
||||
@@ -729,6 +739,7 @@ void main() {
|
||||
### Tests Manuels (Devices Réels)
|
||||
|
||||
**iOS** :
|
||||
|
||||
- [ ] iPhone avec iOS 14, 15, 16, 17, 18
|
||||
- [ ] Tester flow onboarding permission "When In Use"
|
||||
- [ ] Tester activation mode piéton avec permission "Always"
|
||||
@@ -736,6 +747,7 @@ void main() {
|
||||
- [ ] Tester changement permission dans Settings iOS → app réagit correctement
|
||||
|
||||
**Android** :
|
||||
|
||||
- [ ] Android 10, 11, 12, 13, 14, 15
|
||||
- [ ] Tester flow onboarding permission `FINE_LOCATION`
|
||||
- [ ] Tester activation mode piéton avec `BACKGROUND_LOCATION`
|
||||
@@ -755,11 +767,13 @@ void main() {
|
||||
**Durée** : 2 semaines
|
||||
|
||||
**Checklist** :
|
||||
|
||||
- [ ] Upload build vers TestFlight
|
||||
- [ ] Compléter questionnaire App Store Connect :
|
||||
- [ ] "Why does your app use background location?"
|
||||
→ "To send push notifications when users walk near tourist audio-guides, even when app is closed. This feature is optional and can be disabled in settings."
|
||||
- [ ] Screenshots montrant app fonctionnelle sans permission "Always"
|
||||
|
||||
- [ ] Attendre review Apple (24-48h)
|
||||
- [ ] Si rejet : analyser feedback, ajuster textes/flow, re-soumettre
|
||||
- [ ] Si accepté : lancer beta test avec testeurs
|
||||
@@ -772,6 +786,7 @@ void main() {
|
||||
5. Désactiver mode piéton → vérifier app toujours fonctionnelle
|
||||
|
||||
**Métriques collectées** :
|
||||
|
||||
- Taux acceptation permission "When In Use" : cible >85%
|
||||
- Taux acceptation permission "Always" : cible >40%
|
||||
- Taux rejet App Review : cible 0%
|
||||
@@ -785,10 +800,12 @@ void main() {
|
||||
**Durée** : 1 semaine
|
||||
|
||||
**Checklist** :
|
||||
|
||||
- [ ] Upload build vers Play Console (Internal Testing)
|
||||
- [ ] Compléter déclaration permissions :
|
||||
- [ ] `ACCESS_BACKGROUND_LOCATION` justification
|
||||
- [ ] Upload vidéo démo (< 30s)
|
||||
|
||||
- [ ] Tester sur Android 10, 11, 12, 13, 14, 15
|
||||
- [ ] Vérifier foreground notification visible (Android 12+)
|
||||
|
||||
@@ -800,6 +817,7 @@ void main() {
|
||||
5. Vérifier notification foreground service visible dans panneau notifications
|
||||
|
||||
**Métriques collectées** :
|
||||
|
||||
- Consommation batterie mode piéton : cible <5% par heure
|
||||
- Taux crash background service : cible <0.1%
|
||||
|
||||
@@ -843,6 +861,7 @@ void main() {
|
||||
### Q4 : Combien de temps pour validation TestFlight/Play Store ?
|
||||
|
||||
**R** :
|
||||
|
||||
- TestFlight : 24-48h (review Apple)
|
||||
- Play Console Internal Testing : Immédiat (pas de review)
|
||||
- Play Console Production : 3-7 jours (review Google)
|
||||
|
||||
Reference in New Issue
Block a user