Files
roadwave/docs/domains/_shared/rules/gestion-erreurs.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

4.2 KiB

12. Gestion des erreurs

12.1 Aucun contenu disponible

Stratégie : Élargissement automatique progressif

Flow :

1. Recherche rayon 50 km → aucun résultat
2. Élargissement auto 100 km
3. Si toujours rien → département
4. Si toujours rien → région
5. Dernier recours → contenu national (toujours disponible)

Messages adaptatifs :

Cas Message
Trouvé à 100 km "Aucun contenu dans votre zone immédiate. Voici du contenu à proximité (100 km)"
Trouvé département "Aucun contenu local disponible. Voici du contenu dans votre département"
Contenu national "Aucun contenu local disponible. Voici du contenu national qui pourrait vous intéresser"

Justification :

  • UX fluide : pas de message d'erreur bloquant "Aucun contenu"
  • User ne reste jamais sans contenu
  • Contenu national = filet de sécurité : actualités Le Monde, podcasts génériques

12.2 Contenu signalé/supprimé pendant l'écoute

Décision : Pas d'interruption brutale

Flow :

1. Contenu supprimé côté backend (modération)
2. Si contenu en écoute → laisser terminer lecture en cours
3. Après fin lecture → désactiver bouton "Précédent" pour ce contenu
4. Passage automatique suivant après 2s
5. Toast notification discrète : "Contenu précédent retiré (violation règles)"

Si tentative "Précédent" manuellement :

  • Message : "Ce contenu n'est plus disponible"
  • Retour au contenu actuel

Justification :

  • Sécurité routière : pas d'interruption brutale pendant conduite
  • User informé mais pas alarmé : message discret
  • Empêche réécoute : contenu modéré inaccessible

12.3 Perte de réseau

Buffer adaptatif (cf. TECHNICAL.md) :

Réseau Buffer min Buffer cible Buffer max
WiFi 5s 30s 120s
4G/5G 10s 45s 120s
3G 30s 90s 300s

Comportement détaillé :

Phase 1 : Connexion instable (latence élevée, paquets perdus)

  • Aucun message immédiat
  • Lecture continue sur buffer
  • Si > 10s latence : toast discret "Connexion instable"

Phase 2 : Perte totale réseau

  • Lecture continue jusqu'à épuisement buffer
  • Toast : "Hors ligne, lecture sur buffer (30s restantes)"
  • Compte à rebours visible

Phase 3 : Buffer épuisé sans reconnexion

  • Pause automatique
  • Overlay : "Connexion perdue. Reconnexion en cours..."
  • Retry automatique toutes les 5s (max 6 tentatives = 30s)

Phase 4 : Basculement mode offline (après 30s échec)

  • Popup : "Voulez-vous continuer avec vos contenus téléchargés ?"
  • Boutons : "Réessayer" / "Mode offline"
  • Si "Mode offline" → lecture contenus téléchargés

Reconnexion réussie :

  • Reprise automatique lecture au point d'arrêt exact
  • Toast : "Connexion rétablie"

Justification :

  • Expérience fluide zones blanches (tunnels, campagne)
  • Buffer généreux : absorbe fluctuations réseau mobile
  • Mode offline secours : si coupure prolongée

12.4 Géolocalisation désactivée

Mode dégradé automatique

Contenu disponible :

Type contenu Disponible
Contenu national (podcasts, actualités)
Contenu téléchargé (offline)
Contenus "Neutre" géographiquement
Contenu géolocalisé (Ancré/Contextuel)
Audio-guides
Notifications push géo-déclenchées

Popup au lancement :

  • Apparition : Premier lancement après refus géolocalisation
  • Message : "RoadWave fonctionne mieux avec la géolocalisation activée. Sans elle, seul le contenu national sera disponible."
  • Boutons :
    • "Activer" → Redirection paramètres OS
    • "Continuer sans" → Mode dégradé
  • Checkbox : "Ne plus me demander"

Banner permanent si refus :

  • Bandeau haut écran : "Mode limité : géolocalisation désactivée. [Activer]"
  • Pas intrusif mais rappel constant
  • Disparaît si géolocalisation réactivée

Justification :

  • App reste fonctionnelle sans GPS (pas de blocage)
  • Incitation forte à activer (meilleure UX)
  • Respecte choix user (RGPD : consentement libre)

Récapitulatif Section 12