Files
roadwave/docs/regles-metier/08-mode-offline.md
2026-01-31 11:45:11 +01:00

4.9 KiB
Raw Blame History

11. Mode offline

11.1 Téléchargement

Zone géographique : Choix manuel utilisateur

Options prédéfinies :

  • "Autour de moi" (rayon 50 km position actuelle)
  • "Ma ville" (limite administrative détectée)
  • "Mon département" (sélection liste)
  • "Ma région" (sélection liste)
  • Recherche manuelle : "Paris", "Lyon", "Marseille", etc.

Nombre de contenus téléchargeables :

Statut Limite Affichage
Gratuit 50 contenus max "12/50 contenus téléchargés"
Premium Illimité "245 contenus (3.2 GB)"

Calcul temps disponible :

  • 50 contenus × 5 min moyenne = 250 min = 4h d'écoute (suffisant pour gratuits)
  • Premium illimité = limité uniquement par espace disque device

Connexion WiFi/Mobile :

Par défaut : WiFi uniquement

Sur données mobiles :

  1. User clique "Télécharger"
  2. Détection : pas de WiFi
  3. Popup : "Vous n'êtes pas connecté en WiFi. Télécharger via données mobiles consommera environ X MB. Continuer ?"
  4. Boutons : "Attendre WiFi" / "Continuer"

Calcul estimation :

Nombre contenus × durée moyenne × bitrate qualité
Exemple : 20 contenus × 5 min × 48 kbps = ~72 MB

Qualité audio téléchargement :

Qualité Bitrate Taille Disponibilité
Basse 24 kbps ~10 MB/h Gratuit + Premium
Standard 48 kbps ~20 MB/h Gratuit + Premium (défaut)
Haute 64 kbps ~30 MB/h Premium uniquement

Justification :

  • Standard = bon compromis qualité/taille (Opus 48 kbps = très correct pour voix)
  • Haute réservée Premium = incitation upgrade
  • User peut réduire à "basse" si espace limité

11.2 Validité et renouvellement

Durée de validité : 30 jours après téléchargement

Standard industrie :

  • Spotify : 30 jours
  • YouTube Music : 30 jours
  • Deezer : 30 jours

Renouvellement automatique :

App détecte WiFi + contenus >25 jours
→ Requête API : GET /offline/contents/refresh
→ Backend vérifie pour chaque contenu :
    - Abonnement Premium toujours actif ?
    - Contenu pas modéré/supprimé ?
    - Métadonnées à jour ?
→ Renouvelle validité à 30 jours supplémentaires
→ Mise à jour métadonnées (titre, créateur, statut)
→ Pas de re-téléchargement audio (sauf si fichier corrompu)

Notification avant expiration :

  • J-3 : "X contenus expirent dans 3 jours. Connectez-vous en WiFi pour les renouveler"
  • J-0 : Suppression automatique
  • J+0 : Toast "15 contenus expirés ont été supprimés"

Justification :

  • Force reconnexion : vérifier abonnement actif, contenus légaux
  • Évite stockage obsolète : contenus supprimés/modérés ne restent pas
  • UX transparente : renouvellement silencieux si WiFi régulier

11.3 Synchronisation actions offline

Actions stockées localement (SQLite) :

  • Likes/unlikes
  • Abonnements/désabonnements
  • Signalements
  • Progression audio-guides

Sync automatique à la reconnexion :

1. App détecte reconnexion Internet
2. Récupération queue locale : SELECT * FROM pending_actions ORDER BY created_at
3. Envoi batch API : POST /sync/actions
4. Backend traite chaque action
5. Confirmation réception : DELETE FROM pending_actions WHERE id IN (...)
6. Toast : "3 likes et 1 abonnement synchronisés"

Gestion erreurs sync :

  • Si échec après 3 tentatives → notification : "Impossible de synchroniser. Réessayez plus tard"
  • Actions conservées jusqu'à sync réussie (pas de perte)
  • Rétention max 7 jours : après = purge (évite queue infinie)

Conflits contenus supprimés :

Backend retourne : {deleted_content_ids: [123, 456]}
→ App supprime fichiers locaux
→ Si contenu 123 en cours d'écoute :
    - Attendre fin lecture actuelle
    - Passage auto suivant après 2s
→ Toast : "1 contenu téléchargé a été retiré (violation règles)"

Justification :

  • Pas de conflit possible : actions unilatérales user (likes/abonnements)
  • UX fluide : pas de blocage offline
  • Batch = économie : requêtes HTTP groupées
  • Conformité modération : contenu illégal disparaît même offline

Récapitulatif Section 11

Aspect Décision Valeur
Zone téléchargement Choix Manuel (autour/ville/département/région/recherche)
Limite gratuit Contenus 50 max
Limite Premium Contenus Illimité (espace disque)
Connexion Par défaut WiFi (mobile avec confirmation)
Qualité Standard Bitrate 48 kbps Opus
Qualité Haute Bitrate 64 kbps (Premium uniquement)
Validité Durée 30 jours
Renouvellement Mode Automatique si WiFi
Notification expiration Délai J-3
Sync actions Mode Batch automatique reconnexion
Rétention queue Durée 7 jours max