Files
roadwave/docs/compliance/stores-submission.md
jpgiannetti 5e5fcf4714 refactor(docs): réorganiser la documentation selon principes DDD
Réorganise la documentation du projet selon les principes du Domain-Driven Design (DDD) pour améliorer la cohésion, la maintenabilité et l'alignement avec l'architecture modulaire du backend.

**Structure cible:**
```
docs/domains/
├── README.md (Context Map)
├── _shared/ (Core Domain)
├── recommendation/ (Supporting Subdomain)
├── content/ (Supporting Subdomain)
├── moderation/ (Supporting Subdomain)
├── advertising/ (Generic Subdomain)
├── premium/ (Generic Subdomain)
└── monetization/ (Generic Subdomain)
```

**Changements effectués:**

Phase 1: Création de l'arborescence des 7 bounded contexts
Phase 2: Déplacement des règles métier (01-19) vers domains/*/rules/
Phase 3: Déplacement des diagrammes d'entités vers domains/*/entities/
Phase 4: Déplacement des diagrammes flux/états/séquences vers domains/*/
Phase 5: Création des README.md pour chaque domaine
Phase 6: Déplacement des features Gherkin vers domains/*/features/
Phase 7: Création du Context Map (domains/README.md)
Phase 8: Mise à jour de mkdocs.yml pour la nouvelle navigation
Phase 9: Correction automatique des liens internes (script fix-markdown-links.sh)
Phase 10: Nettoyage de l'ancienne structure (regles-metier/, diagrammes/, features/)

**Configuration des tests:**
- Makefile: godog run docs/domains/*/features/
- scripts/generate-bdd-docs.py: features_dir → docs/domains

**Avantages:**
 Cohésion forte: toute la doc d'un domaine au même endroit
 Couplage faible: domaines indépendants, dépendances explicites
 Navigabilité améliorée: README par domaine = entrée claire
 Alignement code/docs: miroir de backend/internal/
 Onboarding facilité: exploration domaine par domaine
 Tests BDD intégrés: features au plus près des règles métier

Voir docs/REFACTOR-DDD.md pour le plan complet.
2026-02-07 17:15:02 +01:00

6.3 KiB

Conformité App Stores et Plateformes Auto

Type de document : Guide de soumission et compliance Dernière mise à jour : 2026-01-20 Anciennement : ADR-011 (déplacé depuis /docs/adr/ car nature opérationnelle)

Contexte

RoadWave est une app audio géolocalisée utilisée en conduite (CarPlay/Android Auto) avec :

  • Contenu généré par utilisateurs (UGC)
  • Monétisation : publicités géolocalisées + Premium (4.99€ web / 5.99€ IAP)
  • GPS en arrière-plan
  • Partage de revenus avec créateurs (70/30)

Stratégie de conformité

Approche multi-plateforme avec :

  • Modération UGC robuste (IA + humain)
  • Prix différenciés selon région (US/EU/Monde)
  • GPS avec disclosure complète
  • Paiements créateurs externes (Mangopay)

Plateformes analysées

Plateforme Conformité Points critiques
Android Auto Conforme API Level 35+ (Android 15+)
CarPlay Conforme Entitlement audio à demander
Google Play ⚠️ Actions requises Déclaration GPS + UGC modération
App Store ⚠️ Actions requises Prix différenciés US/EU

Conformité détaillée

Android Auto / CarPlay

  • 100% audio (pas de vidéo)
  • Commandes standard au volant
  • Aucun achat in-car
  • Like automatique = sécurité maximale
  • Notifications géolocalisées : sonore uniquement en mode CarPlay/Android Auto (pas d'overlay visuel)
  • Action : Demander CarPlay Audio Entitlement (Apple)

Google Play ⚠️

UGC (critique) :

  • Modération hybride IA + humain
  • 3 premiers contenus validés manuellement
  • Système de strikes (4 = ban)
  • Signalement + blocage utilisateurs

GPS Background (critique) :

  • Permission "Always Location" = OPTIONNELLE
  • Demandée uniquement pour mode piéton (notifications arrière-plan audio-guides)
  • Justification Play Console :

    "RoadWave permet aux utilisateurs de recevoir des alertes audio-guides lorsqu'ils passent à pied près de monuments/musées, même quand l'app est en arrière-plan. Cette fonctionnalité est optionnelle et peut être désactivée dans les paramètres."

  • In-app disclosure obligatoire (écran dédié avant demande permission)
  • Si refusée : app fonctionne en mode voiture uniquement
  • Action : Remplir formulaire background location Play Console avec justification

Réponses formulaire Play Console :

Question Réponse
Why does your app need background location? "RoadWave offers optional pedestrian mode: users receive push notifications when passing near audio-guide points (museums, monuments) even when app is in background. This feature is opt-in and can be disabled in settings."
Is this feature core to your app? "No. This is an optional feature. Users can use RoadWave without background location permission (in-car mode works with foreground location only)."
What user value does this provide? "Pedestrian users (tourists, museum visitors) can keep phone in pocket and receive audio-guide alerts automatically without opening the app."
Does a less invasive alternative exist? "Yes. Users can use manual navigation (open app, select audio-guide). Background location is a convenience feature for hands-free experience."

App Store ⚠️

Prix différenciés (légaux depuis 2025-2026) :

  • 🇺🇸 US : Lien externe autorisé (0% commission)
  • 🇪🇺 EU : Paiement externe DMA (7-20% commission réduite)
  • 🌍 Monde : IAP obligatoire (30% commission)

UGC :

  • Mode Kids obligatoire (filtrage selon âge)
  • Système de modération + signalement

GPS Background (critique) :

  • Permission "Always Location" = OPTIONNELLE
  • Deux strings Info.plist requises :
    • NSLocationWhenInUseUsageDescription : explication mode voiture
    • NSLocationAlwaysAndWhenInUseUsageDescription : explication mode piéton (optionnel)
  • In-app disclosure obligatoire avant demande "Always"
  • Flux two-step : When In Use → Always (si user active mode piéton)
  • Si refusée : app fonctionne en mode voiture uniquement
  • Action : Voir strings détaillés dans 05-interactions-navigation.md

Revenus créateurs

Position : Paiements créateurs = "services" (comme YouTube/Uber), pas IAP

  • Paiement via Mangopay Connect (externe)
  • Commission stores uniquement sur Premium (IAP)
  • Comparables : YouTube AdSense, TikTok Creator Fund, Uber

Actions bloquantes avant soumission

Action Plateforme Deadline Complexité
Demander CarPlay Audio Entitlement Apple Avant soumission iOS Faible
Remplir formulaire background location avec justification Google Play Avant soumission Android Faible
Implémenter disclosure GPS (écran dédié mode piéton) iOS + Android MVP Moyenne
Rendre permission "Always Location" optionnelle iOS + Android MVP Moyenne
Désactiver overlay visuel notification en CarPlay/Android Auto iOS + Android MVP Moyenne
Mettre à jour strings Info.plist avec justifications détaillées iOS MVP Faible
Finaliser système modération UGC Google + Apple MVP Élevée

Estimation totale : +5 jours développement avant soumission stores

Stratégie de lancement

Phase 1 - MVP :

  • IAP uniquement (5.99€/mois mondial)
  • Modération UGC active
  • GPS avec disclosure
  • CarPlay/Android Auto basique

Phase 2 - Post-validation :

  • Prix différenciés US (lien externe 4.99€)
  • Paiement externe EU (DMA)
  • Monétisation créateurs (Mangopay)

Conséquences

  • Formation équipe sur politiques stores
  • Suivi des métriques modération (% rejet, SLA)
  • Migration iOS 26 SDK (Avril 2026)
  • API Level 35 Android (2026)
  • Communication transparente GPS/publicités

Sources