- 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.
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) :
- Séquence 1 se termine
- Player se met en pause automatique
- Message affiché : "Séquence 1 terminée. Appuyez sur Suivant quand vous êtes prêt."
- User appuie sur [▶|] → Séquence 2 démarre immédiatement
Séquence avec publicité (1 pub / 5 séquences) :
- Séquence 2 se termine
- Publicité s'enchaîne automatiquement (pas d'attente bouton)
- Pub se lit (skippable après 5s)
- Pub se termine → Player se met en pause automatique
- Message : "Séquence 3 prête. Appuyez sur Suivant."
- 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 :
- User démarre audio-guide en voiture (voir section 16.1 pour démarrage)
- Séquence 1 démarre automatiquement au point GPS défini (rayon 30m)
- Séquence 1 se termine
- Affichage progress bar : distance temps réel + ETA jusqu'au prochain point
- User roule vers point GPS suivant
- Arrivée au point GPS suivant (rayon 30m) → déclenchement automatique séquence suivante
- Notification sonore discrète : "Ding" (0.3s) + toast 2s : "Enclos des girafes"
- Séquence suivante démarre immédiatement (pas de décompte)
Pas de système "7 secondes avant" pour les audio-guides :
- Contrairement aux contenus géolocalisés simples (voir ../../recommendation/rules/interactions-navigation.md)
- Les séquences se déclenchent au point GPS exact (rayon 30m)
- Raison : expérience guidée continue, user sait qu'il suit un parcours
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 :
- User démarre audio-guide sur iPhone (séquences 1-3)
- Progression sync cloud
- Lendemain : user ouvre app sur iPad
- Popup : "Reprendre Safari du Paugre sur cet appareil ?"
- 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