Files
roadwave/docs/domains/content/rules/audio-guides.md
jpgiannetti 35aaa105d0 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.
2026-02-09 20:49:52 +01:00

35 KiB

16. Audio-guides multi-séquences

16.1 Types d'audio-guides et modes de déplacement

Décision : 4 modes distincts avec détection automatique

16.1.1 Classification par mode

Mode Vitesse détection Déclenchement Use case
🚶 Piéton <5 km/h Manuel (bouton "Suivant") Musées, visites urbaines, monuments
🚗 Voiture >10 km/h Auto GPS + Manuel possible Safari-parc, routes touristiques, circuits auto
🚴 Vélo 5-25 km/h Auto GPS + Manuel possible Pistes cyclables, circuits vélo, parcours nature
🚌 Transport Variable Auto GPS + Manuel possible Bus touristiques, trains panoramiques

Détection automatique :

  • Vitesse moyenne calculée sur 30 secondes
  • Suggestion mode au démarrage : "Détection : 🚗 Voiture. Est-ce correct ? [Oui] [Changer]"
  • User peut forcer mode manuellement (settings)

Justification :

  • Flexibilité maximale créateurs et utilisateurs
  • Expériences optimisées par type de déplacement
  • Gestion cas limites (vélo lent vs piéton rapide)

16.1.2 Création d'un audio-guide (côté créateur)

Formulaire création :

┌────────────────────────────────────────┐
│ Nouvel audio-guide multi-séquences     │
├────────────────────────────────────────┤
│ Titre : [Safari du Paugre]            │
│ Description : [Découvrez les animaux   │
│               du parc en voiture...]    │
│                                        │
│ Mode de déplacement : *obligatoire     │
│ ○ 🚶 Piéton (navigation manuelle)      │
│ ● 🚗 Voiture (GPS auto + manuel)       │
│ ○ 🚴 Vélo (GPS auto + manuel)          │
│ ○ 🚌 Transport (GPS auto + manuel)     │
│                                        │
│ Vitesse recommandée : 30-50 km/h       │
│ (si voiture/vélo/transport)            │
│                                        │
│ ────────────────────────────────────   │
│                                        │
│ Séquences (ordre lecture) :            │
│                                        │
│ 1. [📍] Introduction - Point d'accueil │
│    Lat: 43.1234, Lon: 2.5678          │
│    Rayon déclenchement : 30m           │
│    Durée : 2:15                        │
│    [🎵 Audio uploadé] [✏️] [🗑️]       │
│                                        │
│ 2. [📍] Enclos des lions               │
│    Lat: 43.1245, Lon: 2.5690          │
│    Rayon déclenchement : 30m           │
│    Durée : 3:42                        │
│    [📤 Upload audio] [✏️] [🗑️]        │
│                                        │
│ 3. [📍] Enclos des girafes             │
│    [+ Ajouter point GPS]               │
│                                        │
│ [+ Ajouter séquence]                   │
│                                        │
│ 📊 Statistiques :                      │
│ · 2 séquences complètes                │
│ · 5:57 durée totale                    │
│ · 320m distance totale                 │
│                                        │
│ [🗺️ Aperçu sur carte]                 │
│ [✅ Publier audio-guide]               │
└────────────────────────────────────────┘

Métadonnées obligatoires :

Champ Requis Détails
Titre audio-guide 5-100 caractères
Description 10-500 caractères
Mode déplacement Piéton / Voiture / Vélo / Transport
Nombre séquences Minimum 2, maximum 50
Point GPS par séquence (sauf piéton) Latitude, longitude (WGS84)
Rayon déclenchement (sauf piéton) 10-100m selon mode
Vitesse recommandée Optionnel, affichée utilisateur
Tags 1-3 parmi liste prédéfinie
Classification âge Tout public / 13+ / 16+ / 18+
Zone diffusion Polygon géographique

Wizard de création :

  • Étape 1 : Infos générales (titre, description, mode)
  • Étape 2 : Ajout séquences une par une
  • Étape 3 : Preview carte (trace + points)
  • Étape 4 : Validation modération (3 premiers audio-guides)

Justification :

  • Contrôle total créateur sur expérience
  • Carte preview aide visualiser parcours
  • Wizard guidé = réduction friction création

16.2 Mode Piéton (manuel)

Décision : Navigation manuelle avec pub auto-play

16.2.1 Passage entre séquences

Séquence normale (sans pub) :

  1. Séquence 1 se termine
  2. Player se met en pause automatique
  3. Message affiché : "Séquence 1 terminée. Appuyez sur Suivant quand vous êtes prêt."
  4. User appuie sur [▶|] → Séquence 2 démarre immédiatement

Séquence avec publicité (1 pub / 5 séquences) :

  1. Séquence 2 se termine
  2. Publicité s'enchaîne automatiquement (pas d'attente bouton)
  3. Pub se lit (skippable après 5s)
  4. Pub se termine → Player se met en pause automatique
  5. Message : "Séquence 3 prête. Appuyez sur Suivant."
  6. User appuie sur [▶|] → Séquence 3 démarre

Schéma flux :

Séquence 1 [fin] → PAUSE → User clique → Séquence 2 [fin] → PUB AUTO-PLAY → PAUSE → User clique → Séquence 3

Fréquence pub :

  • Gratuits : 1 pub toutes les 5 séquences (paramétrable admin 1/3 à 1/10)
  • Premium : 0 pub

Justification :

  • Pub s'insère naturellement (pas d'attente utilisateur pour déclencher)
  • User garde contrôle rythme visite (pause après pub)
  • Monétisation effective créateurs
  • Premium reste attractif (0 interruption)

16.2.2 Navigation et contrôles

Décision : Liberté totale utilisateur

Contrôles disponibles :

Bouton Fonction Comportement
[▶|] Suivant Passe séquence suivante Immédiat, même si séquence actuelle pas terminée
[|◀] Précédent Retour séquence précédente Saut direct séquence avant (pas de logique "replay si >10s")
[⏸️] Pause Pause temporaire Reprend à position exacte
[▶️] Play Reprend lecture Continue position actuelle
Liste séquences Navigation libre Tap séquence → saut direct (même séquences non écoutées)

Interface liste séquences :

┌────────────────────────────────────────┐
│ 🚶 Audio-guide Piéton                  │
│ Musée du Louvre                        │
├────────────────────────────────────────┤
│ [Cover image]                          │
│                                        │
│ ▶️ 0:00 ──●────────── 3:42            │
│                                        │
│ Séquence 3/12 : La Joconde            │
│                                        │
│ [|◀] [⏸️] [▶|]                        │
│                                        │
│ ────────────────────────────────────   │
│                                        │
│ 📋 Liste des séquences                 │
│                                        │
│ ✅ 1. Introduction (2:15)              │
│    Écouté le 15/01/2026                │
│                                        │
│ ✅ 2. Pyramide du Louvre (1:48)        │
│    Écouté le 15/01/2026                │
│                                        │
│ ▶️ 3. La Joconde (3:42) - EN COURS    │
│    ──●──────────── 1:22/3:42          │
│                                        │
│ ⭕ 4. Vénus de Milo (2:58)             │
│                                        │
│ ⭕ 5. Code d'Hammurabi (4:12)          │
│                                        │
│ ⭕ 6. Victoire de Samothrace (3:25)    │
│                                        │
│ ... +6 séquences                       │
│                                        │
│ [Tout afficher ▼]                      │
└────────────────────────────────────────┘

Navigation libre :

  • User peut sauter séquences déjà connues
  • User peut revenir en arrière à tout moment
  • User peut aller directement à séquence 8 (même si 4-7 non écoutées)

Sauvegarde progression :

  • Checkmarks sur séquences écoutées >80%
  • Position exacte sauvegardée dans séquence en cours

Justification :

  • Utilisateur contrôle 100% son rythme
  • Adapté musées : visitor peut voir physiquement une œuvre lointaine et vouloir écouter sa description
  • Pas de frustration (liberté totale)

16.3 Mode Voiture (GPS automatique)

Décision : GPS auto avec navigation manuelle conservée

16.3.1 Déclenchement et contrôles

Distinction audio-guides vs contenus géolocalisés simples :

⚠️ Important : Les audio-guides multi-séquences fonctionnent différemment des contenus géolocalisés simples.

Type Séquences Déclenchement Notification Enchaînement Comptabilité quota
Contenu géolocalisé simple 1 séquence unique Notification 7s avant (temps ETA) Sonore + icône Fin → retour buffer normal 1 contenu = 1 quota
Audio-guide multi-séquences 2 à 50 séquences Au point GPS exact (distance 30m) Ding + toast 2s Séquences s'enchaînent auto 1 audio-guide = 1 quota (toutes séquences)

Fonctionnement GPS automatique :

  1. User démarre audio-guide en voiture (voir section 16.1 pour démarrage)
  2. Séquence 1 démarre automatiquement au point GPS défini (rayon 30m)
  3. Séquence 1 se termine
  4. Affichage progress bar : distance temps réel + ETA jusqu'au prochain point
  5. User roule vers point GPS suivant
  6. Arrivée au point GPS suivant (rayon 30m) → déclenchement automatique séquence suivante
  7. Notification sonore discrète : "Ding" (0.3s) + toast 2s : "Enclos des girafes"
  8. Séquence suivante démarre immédiatement (pas de décompte)

Pas de système "7 secondes avant" pour les audio-guides :

Navigation manuelle CONSERVÉE :

Bouton État Comportement
[▶|] Suivant Toujours actif Passe séquence suivante immédiatement (même hors point GPS)
[|◀] Précédent Toujours actif Retour séquence précédente (même hors point GPS)
[⏸️] Pause Pause temporaire
Liste séquences Saut direct possible

Use cases navigation manuelle :

Situation Solution manuelle
Embouteillage (séquence finie, point GPS loin) User clique Suivant → avance manuellement
Point GPS inaccessible (route fermée) User clique Suivant → skip point
Envie réécouter séquence précédente User clique Précédent → retour
Passager manipule l'app Passager navigue librement

Avertissement sécurité :

  • Si vitesse >10 km/h ET user clique bouton (Suivant/Précédent) :

    • Toast 3 secondes : "⚠️ Manipulation en conduite détectée. Pour votre sécurité, demandez à un passager."
    • Action quand même exécutée (pas de blocage)
  • Justification : sensibilisation sans bloquer (passager peut légitimement manipuler)

Schéma flux :

Point GPS 1 (30m) → Séquence 1 AUTO → User roule → Distance affichée → Point GPS 2 (30m) → Séquence 2 AUTO
                                                    ↓
                                          User clique Suivant (manuel) → Séquence 2 immédiate

Justification :

  • Flexibilité maximale : GPS optimise expérience MAIS user garde contrôle
  • Gestion cas limites : routes fermées, détours, embouteillages
  • Sécurité : warning sensibilise sans bloquer (passager légitime)

16.3.2 Affichage distance et guidage

Décision : Distance + direction (PAS de carte miniature)

Interface en conduite :

┌────────────────────────────────────────┐
│ 🚗 Audio-guide Voiture                 │
│ Safari du Paugre                       │
├────────────────────────────────────────┤
│                                        │
│ ▶️ 0:00 ──●────────── 2:15            │
│                                        │
│ Séquence 2/8 : Les lions               │
│                                        │
│ ────────────────────────────────────   │
│                                        │
│ 📍 Prochain point                      │
│                                        │
│    Enclos des girafes                  │
│                                        │
│ ┌────────────────────────────────┐    │
│ │                                │    │
│ │          ↗️                     │    │
│ │      (direction)               │    │
│ │                                │    │
│ │       320 mètres               │    │
│ │      ≈ 40 secondes              │    │
│ │                                │    │
│ └────────────────────────────────┘    │
│                                        │
│ Vitesse actuelle : 28 km/h             │
│ Vitesse recommandée : 20-30 km/h       │
│                                        │
│ [|◀] [⏸️] [▶|] [📋 Liste]            │
└────────────────────────────────────────┘

Affichage entre deux séquences :

Quand une séquence se termine et qu'il reste un point GPS suivant, l'interface bascule en mode "attente prochain point" :

┌────────────────────────────────────────┐
│ 🚗 Audio-guide Voiture                 │
│ Safari du Paugre                       │
├────────────────────────────────────────┤
│                                        │
│ ✅ Séquence 2/8 terminée               │
│    Les lions                           │
│                                        │
│ ────────────────────────────────────   │
│                                        │
│ 📍 Prochain point                      │
│                                        │
│    Enclos des girafes                  │
│                                        │
│ ┌────────────────────────────────┐    │
│ │         [Progress bar]         │    │
│ │     ████████░░░░░░░░░ 65%      │    │
│ │                                │    │
│ │          ↗️                     │    │
│ │      (direction)               │    │
│ │                                │    │
│ │       320 mètres               │    │
│ │      ≈ 40 secondes              │    │
│ │                                │    │
│ └────────────────────────────────┘    │
│                                        │
│ Vitesse actuelle : 28 km/h             │
│                                        │
│ [|◀] [▶️ Rejouer séq.] [▶|]           │
└────────────────────────────────────────┘

Progress bar dynamique :

  • Se remplit au fur et à mesure qu'on se rapproche du point
  • Calcul : progress = 100 - (distance_actuelle / distance_initiale * 100)
  • Exemple : distance initiale 500m, distance actuelle 175m → progress = 65%
  • Couleur : vert (#4CAF50) pour la partie remplie, gris (#E0E0E0) pour le reste

Bouton "Rejouer séq." :

  • Permet de réécouter la séquence qui vient de se terminer
  • User clique → séquence actuelle redémarre depuis 0:00
  • Utile si distraction pendant l'écoute

Informations affichées :

Info Mise à jour Format
Distance Chaque seconde "320 m" / "1.2 km"
ETA Chaque seconde "≈ 40 secondes" / "≈ 2 minutes"
Direction Chaque 5s Flèche indique direction (8 directions : ↑ ↗ → ↘ ↓ ↙ ← ↖)
Vitesse actuelle Chaque seconde "28 km/h"
Vitesse recommandée Statique "20-30 km/h" (définie par créateur)
Progress bar Chaque seconde Pourcentage parcouru vers prochain point

Calcul direction :

// Calcul angle entre position actuelle et prochain point
const currentGPS = getCurrentLocation();
const nextPoint = audioGuide.sequences[currentIndex + 1].location;

const angle = calculateBearing(currentGPS, nextPoint); // 0-360°

// Conversion en flèche (8 directions)
const arrows = ['↑', '↗', '→', '↘', '↓', '↙', '←', '↖'];
const index = Math.round(angle / 45) % 8;
const direction = arrows[index];

Calcul ETA :

const distance = calculateDistance(currentGPS, nextPoint); // mètres
const currentSpeed = getCurrentSpeed(); // km/h

if (currentSpeed > 5) {
  const eta = (distance / 1000) / currentSpeed * 3600; // secondes
  return formatETA(eta); // "≈ 40 secondes" ou "≈ 2 minutes"
} else {
  return "En attente de déplacement";
}

Justification :

  • Distance + ETA = info essentielle sans surcharge visuelle
  • Direction (flèche) = aide se repérer sans carte complexe
  • Simplicité = moins distraction conducteur
  • Économie batterie (pas de rendu carte)

16.3.3 Rayon de déclenchement et tolérance

Décision : Rayon configurable créateur avec défauts intelligents

Rayons par défaut :

Mode Rayon déclenchement Rayon "point manqué" Justification
🚗 Voiture 30 mètres 100 mètres Vitesse élevée = anticipation
🚴 Vélo 50 mètres 75 mètres Vitesse variable, arrêts fréquents
🚌 Transport 100 mètres 150 mètres Arrêts bus/train, moins précis

Configuration créateur :

  • Curseur rayon : 10m → 200m
  • Défaut pré-sélectionné selon mode choisi
  • Preview visuel : cercle sur carte (lors création)
  • Suggestion auto : "Recommandé : 30m pour voiture à 30 km/h"

Gestion point manqué :

User passe à 110m du point GPS
(hors rayon déclenchement 30m MAIS dans rayon tolérance 100m)
    ↓
Toast : "⚠️ Point manqué : Enclos des girafes"
    ↓
Popup 5 secondes :
┌────────────────────────────────────┐
│ Point manqué                       │
│                                    │
│ "Enclos des girafes"               │
│ Vous êtes passé à 110m du point    │
│                                    │
│ [🔊 Écouter quand même]            │
│ [⏭️ Passer au suivant]             │
│ [🔙 Faire demi-tour]               │
└────────────────────────────────────┘

Actions popup :

Bouton Comportement
Écouter quand même Lance séquence immédiatement (même hors zone)
Passer au suivant Skip séquence, continue vers prochain point
Faire demi-tour Lance navigation GPS externe (Google Maps / Waze) vers point manqué

Si user au-delà rayon tolérance (>100m) :

  • Aucun popup (point trop loin, probablement hors itinéraire)
  • User peut naviguer manuellement (bouton Suivant)

Justification :

  • Flexibilité créateur (ajuste selon terrain, vitesse prévue)
  • Gestion intelligente imprévus (détours, routes fermées)
  • User pas bloqué (toujours moyen avancer)

16.3.4 Système double clic et sortie audio-guide

Problème : Que se passe-t-il si l'utilisateur clique "Suivant" pendant un audio-guide en mode voiture, alors qu'il est bloqué dans un embouteillage et va mettre 30 minutes pour atteindre le prochain point GPS ?

Solution : Système intelligent à double clic permettant de désactiver le GPS automatique puis de sortir de l'audio-guide.

Comportement bouton [▶|] Suivant

1. Premier clic (mode GPS auto actif) :

  • Désactive GPS automatique
  • Passe à la séquence suivante immédiatement
  • Bascule en mode manuel
  • Toast 3s : "Mode manuel activé. Cliquez à nouveau pour quitter l'audio-guide."
  • Timer 10 secondes démarre

2. Deuxième clic (dans les 10 secondes suivantes) :

  • Sort de l'audio-guide
  • Audio-guide mis en pause (historique conservé)
  • Retour au flux normal (algorithme de recommandation)
  • Toast 2s : "Audio-guide en pause"

3. Clics suivants (après 10 secondes) :

  • Passe à la séquence suivante (comportement standard mode manuel)
  • Timer 10 secondes redémarre à chaque clic

Schéma :

Mode GPS auto → [Clic 1] → Mode manuel + séquence suivante + timer 10s
                              ↓
                          [Clic 2 < 10s] → Sortie audio-guide + pause
                              ↓
                          [Clic après 10s] → Séquence suivante + reset timer
Comportement bouton [|◀] Précédent
Contexte Action Résultat
Dans audio-guide (GPS auto ou manuel) Séquence précédente (ou replay si <10s) Reste dans audio-guide
Hors audio-guide (flux normal) Contenu précédent Si contenu précédent = audio-guide → reprend audio-guide
Mode manuel
  • Persistant : Reste actif jusqu'à fin audio-guide
  • Pas de réactivation GPS auto pendant session en cours
  • Reset au redémarrage : Si audio-guide relancé plus tard → repart en mode GPS auto par défaut
Détection et reprise après détour

Règle 1 : Détection "hors itinéraire"

Si user à >1 km de tous points GPS pendant >10 min :
→ Toast : "Audio-guide en pause (hors itinéraire)"
→ Icône audio-guide passe en gris (inactif)

Règle 2 : Détection "retour sur itinéraire"

Si user revient à <100m d'un point GPS non écouté :
→ Popup : "Reprendre audio-guide à la séquence X ?"
→ 3 boutons : Reprendre / Voir liste / Ignorer

Règle 3 : Respect des clics manuels

Si user a cliqué "Suivant" manuellement :
→ Séquence considérée "skippée volontairement"
→ Pas de proposition automatique de revenir en arrière
→ User peut revenir manuellement via liste séquences
Implémentation technique (référence)
let lastSuivantClickTime = null;
const DOUBLE_CLICK_DELAY = 10000; // 10 secondes

function onSuivantClick() {
  const now = Date.now();

  if (audioGuideState.mode === 'gps_auto') {
    // 1er clic : Désactive GPS auto
    audioGuideState.mode = 'manual';
    playNextSequence();
    showToast("Mode manuel activé. Cliquez à nouveau pour quitter.", 3000);
    lastSuivantClickTime = now;
  }
  else if (audioGuideState.mode === 'manual') {
    if (lastSuivantClickTime && (now - lastSuivantClickTime) < DOUBLE_CLICK_DELAY) {
      // 2ème clic rapide : Sort de l'audio-guide
      pauseAudioGuide();
      returnToNormalFlow();
      showToast("Audio-guide en pause", 2000);
    } else {
      // Clic normal : Séquence suivante
      playNextSequence();
      lastSuivantClickTime = now;
    }
  }
}

Justification :

  • Résout le problème des embouteillages (30 min sans contenu)
  • Double intention claire : désactiver GPS puis sortir
  • User garde toujours le contrôle (peut reprendre audio-guide plus tard)
  • Historique conservé (pas de perte de progression)

16.4 Modes Vélo et Transport

Décision : Même logique voiture avec tolérances ajustées

Différences par rapport à mode voiture :

Paramètre Voiture Vélo Transport
Rayon déclenchement 30m 50m 100m
Rayon tolérance "point manqué" 100m 75m 150m
Vitesse recommandée affichée 20-50 km/h 10-25 km/h Variable (selon ligne)
Warning sécurité >10 km/h >5 km/h Désactivé

Mode Vélo spécificités :

  • Rayon plus large : vitesse variable, nombreux arrêts (feux, piétons)
  • Warning sécurité dès 5 km/h (vélo en mouvement)
  • Tolérance GPS moins stricte (tracé moins prévisible qu'auto)

Mode Transport spécificités :

  • Rayon très large : arrêts fréquents (bus, train), ligne fixe
  • Pas de warning sécurité (user = passager, pas conducteur)
  • Vitesse recommandée = "Selon ligne" (pas de valeur fixe)
  • Tolérance horaire : si bus en retard, point peut se déclencher avec 2-3 min de délai

Comportement identique voiture :

  • Navigation manuelle conservée (boutons actifs)
  • Affichage distance + ETA + direction
  • Gestion point manqué
  • Pub entre séquences

Justification :

  • Vélo : moins de contrôle qu'auto (obstacles, arrêts), nécessite tolérance
  • Transport : moins de contrôle utilisateur (suit ligne fixe), rayon large compense
  • Même UX globale = cohérence

16.5 Publicités dans audio-guides

Décision : Pub auto-play entre séquences TOUS modes

16.5.1 Règles universelles

Insertion publicité :

  • Fréquence : 1 pub toutes les 5 séquences (paramétrable admin 1/3 à 1/10)
  • Gratuits uniquement, Premium 0 pub
  • Pub s'enchaîne automatiquement après séquence
  • Skippable après 5 secondes (règle standard RoadWave)
  • Volume normalisé -14 LUFS (comme pubs normales)

Comportement MODE PIÉTON :

Séquence 2 [fin]
    → Pub AUTO-PLAY
    → Pub se termine
    → PAUSE AUTO
    → Message "Séquence 3 prête. Appuyez sur Suivant."
    → User clique [▶|]
    → Séquence 3 démarre

Comportement MODE VOITURE/VÉLO/TRANSPORT :

Séquence 2 [fin]
    → Pub AUTO-PLAY
    → Pub se termine
    → ATTENTE point GPS suivant OU user clique Suivant
    → Séquence 3 démarre

Schéma complet :

Mode Après séquence normale Après pub
Piéton Pause + attente user Pause + attente user
Voiture Attente GPS OU user clique Suivant Attente GPS OU user clique Suivant
Vélo Attente GPS OU user clique Suivant Attente GPS OU user clique Suivant
Transport Attente GPS OU user clique Suivant Attente GPS OU user clique Suivant

Justification :

  • Monétisation équitable créateurs (tous modes participent)
  • Pub s'insère naturellement (auto-play, pas d'attente utilisateur)
  • User garde contrôle : piéton clique Suivant, voiture peut skip manuel
  • Premium reste attractif (expérience 0 interruption)
  • Modèle économique viable

16.5.2 Métriques pub audio-guides

Dashboard créateur :

Métrique Affichage
Impressions pub Nombre de pubs insérées dans audio-guides
Écoutes complètes pub Nombre de pubs écoutées >80%
Taux skip pub % pubs skippées avant 5s vs après
Revenus pub audio-guides 3€ / 1000 écoutes complètes (6% CA pub)

Distinction contenus normaux vs audio-guides :

  • Dashboard sépare : "Revenus contenus classiques" / "Revenus audio-guides"
  • Permet créateur voir performance par type

Justification :

  • Transparence créateur (comprend revenus)
  • Incite création audio-guides (nouvelle source revenus)

16.6 Reprise et sauvegarde progression

Décision : Sauvegarde complète automatique avec popup intelligente

16.6.1 Sauvegarde automatique

Données sauvegardées :

Info Détail Utilité
Audio-guide ID Identifiant unique Retrouver audio-guide
Séquence actuelle Index (ex: 3/12) Reprise position
Position dans séquence Timestamp exact (ex: 1:42/3:20) Reprise exacte
Séquences écoutées Liste avec checkmarks Historique progression
Date dernière écoute Timestamp Proposer reprise si <30j
GPS dernière position Coordonnées optionnelles Info contextuelle (non utilisée pour reprise)

Stockage :

Environnement Technologie Utilité
Local SQLite mobile Fonctionnement offline
Cloud PostgreSQL (sync auto) Multi-device (reprendre sur autre appareil)

Synchronisation :

  • Sauvegarde locale : chaque fin de séquence + chaque 30s
  • Sync cloud : à la reconnexion réseau (batch)

Justification :

  • Expérience fluide (pas de perte progression)
  • Multi-device (démarrer sur iPhone, continuer sur iPad)
  • Offline-first (fonctionne sans réseau)

16.6.2 Interface de reprise

Conditions popup :

  • Dernière écoute <30 jours
  • Progression >0% et <100% (pas terminé)

Popup reprise :

┌────────────────────────────────────────┐
│ Reprendre l'audio-guide ?              │
├────────────────────────────────────────┤
│ 🚗 Safari du Paugre                    │
│ @safari_createur                       │
│                                        │
│ Progression : 3/8 séquences écoutées   │
│ Dernière écoute : il y a 2 jours       │
│                                        │
│ Vous étiez à :                         │
│ "Les lions" (1:42/3:20)                │
│                                        │
│ [▶️ Reprendre] [🔄 Recommencer]        │
│ [📋 Voir toutes les séquences]         │
└────────────────────────────────────────┘

Actions :

Bouton Comportement
Reprendre Continue séquence 3 à position 1:42 exacte
Recommencer Reset progression, démarre séquence 1 depuis 0:00
Voir séquences Affiche liste complète, user choisit séquence départ

Expiration progression :

  • Progression conservée 30 jours
  • Après 30j : popup "Audio-guide expiré. Recommencez depuis le début ?"
  • Suppression données progression (mais historique "écouté" préservé)

Justification :

  • Contexte clair : user sait exactement où il en est
  • Flexibilité : reprendre OU recommencer (choix utilisateur)
  • 30 jours = raisonnable pour tourisme multi-jours ou retour ultérieur

16.6.3 Multi-device

Scénario :

  1. User démarre audio-guide sur iPhone (séquences 1-3)
  2. Progression sync cloud
  3. Lendemain : user ouvre app sur iPad
  4. Popup : "Reprendre Safari du Paugre sur cet appareil ?"
  5. User clique Reprendre → continue séquence 4

Conflit de version :

  • Si modifications simultanées 2 appareils (rare) : dernière modification gagne
  • Toast : "Progression mise à jour depuis votre autre appareil"

Justification :

  • Confort utilisateur (change d'appareil librement)
  • Use case réel : planning trajet sur tablette, écoute sur smartphone en voiture

Récapitulatif Section 16

Point Décision Coût Complexité
16.1 Types audio-guides 4 modes (piéton/voiture/vélo/transport) avec détection auto 0€ Moyenne
16.1.2 Création Formulaire séquences + GPS + rayon + wizard guidé 0€ Moyenne
16.2.1 Piéton - Passages Manuel AVEC pub auto-play entre séquences, pause après 0€ Faible
16.2.2 Piéton - Navigation Liberté totale (skip, retour, saut direct liste) 0€ Faible
16.3.1 Voiture - Déclenchement GPS auto + boutons manuels actifs (warning sécurité si >10 km/h) 0€ Moyenne
16.3.2 Voiture - Affichage Distance + ETA + direction (flèche) + vitesse (PAS de carte) 0€ Faible
16.3.3 Voiture - Rayon Configurable créateur (défauts 30m/50m/100m selon mode) 0€ Faible
16.4 Vélo & Transport Mêmes règles avec tolérances ajustées + warning adapté 0€ Faible
16.5 Publicités 1/5 séquences, auto-play TOUS modes, skippable 5s 0€ Faible
16.6.1 Sauvegarde Complète (séquence + position + historique) local + cloud 0€ Faible
16.6.2 Reprise Popup intelligente avec choix (reprendre/recommencer), expiration 30j 0€ Faible
16.6.3 Multi-device Sync cloud PostgreSQL (reprendre sur autre appareil) 0€ Faible

Coût total MVP : 0€ (GPS natif, calcul distance PostGIS)


Points d'attention pour Gherkin

  • Tester 4 modes audio-guides (détection vitesse auto)
  • Tester création séquences avec points GPS + rayon configurable
  • Tester mode piéton : pause après séquence + pub auto-play + pause après pub + clic Suivant
  • Tester navigation libre piéton (skip, retour, saut direct liste)
  • Tester mode voiture : déclenchement GPS auto rayon 30m
  • Tester navigation manuelle voiture : boutons actifs + warning si vitesse >10 km/h
  • Tester 1er clic Suivant (mode GPS auto) : passage mode manuel + séquence suivante immédiate + toast + timer 10s
  • Tester 2ème clic Suivant <10s : sortie audio-guide + pause + retour flux normal
  • Tester clics Suivant >10s : navigation séquences normale + reset timer
  • Tester Précédent : retour séquence précédente ou replay si <10s écoulé
  • Tester détection hors itinéraire >1km + >10min : toast + icône gris
  • Tester détection retour sur itinéraire <100m point GPS non écouté : popup 3 boutons
  • Tester respect clics manuels : séquences skippées volontairement non reproposées auto
  • Tester affichage distance + ETA + direction (flèche 8 directions)
  • Tester rayon tolérance "point manqué" (popup 3 actions)
  • Tester mode vélo (rayon 50m) et transport (rayon 100m)
  • Tester insertion pub 1/5 séquences tous modes avec auto-play
  • Tester sauvegarde progression locale + sync cloud
  • Tester popup reprise (3 boutons : reprendre/recommencer/voir liste)
  • Tester expiration progression 30 jours
  • Tester multi-device : démarrer iPhone, continuer iPad
  • Tester gestion conflit progression simultanée 2 appareils