## 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** :
- Contrairement aux contenus géolocalisés simples (voir [05-interactions-navigation.md](05-interactions-navigation.md#511-file-dattente-et-commande-suivant))
- 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** :

```javascript
// 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** :

```javascript
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)

```javascript
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
