(doc) : ajout et modification de docs après arbitrage

This commit is contained in:
jpgiannetti
2026-01-31 21:09:59 +01:00
parent f99fb3c614
commit 841028d1b2
24 changed files with 3081 additions and 301 deletions

View File

@@ -4,16 +4,23 @@
**Décision** : Email/Password uniquement (pas d'OAuth tiers)
- ❌ Pas de Google, Apple, Facebook OAuth (dépendance services US/Chine)
- ✅ Email + mot de passe
-**Pas de Google, Apple, Facebook OAuth** (dépendance services US/Chine)
-**Email + mot de passe** (formulaire natif Zitadel)
- ✅ 2FA (Two-Factor Authentication) disponible
- ✅ Option "Appareil de confiance" (skip 2FA pour 30 jours)
**Clarification technique** :
- Zitadel utilise OAuth2/OIDC comme **protocole** (standard moderne pour mobile)
- Mais l'authentification reste 100% **email/password natif**
- **Aucun fournisseur externe** (Google, Apple, etc.) n'est intégré
**Justification** :
- Souveraineté : pas de dépendance externe
- RGPD : données 100% contrôlées
- Coût : 0€ (Zitadel intégré)
> 📋 **Référence technique** : Voir [ADR-008 - OAuth2 vs Fournisseurs Tiers](../adr/008-authentification.md#oauth2-pkce--protocole-vs-fournisseurs-tiers) pour clarification protocole vs providers.
---
### 1.2 Vérification email

View File

@@ -135,7 +135,7 @@ export-roadwave-[user_id]-[date].zip
| Niveau | Technologie | Contenus accessibles | Consentement |
|--------|-------------|---------------------|--------------|
| **Pays** | Aucune géoloc | Contenus nationaux uniquement | ❌ Non requis |
| **Ville** | GeoIP (MaxMind) | Contenus régionaux/ville | ❌ Non requis |
| **Ville** | GeoIP (IP2Location) | Contenus régionaux/ville | ❌ Non requis |
| **Précis** | GPS | Tous contenus (hyperlocaux inclus) | ✅ Requis |
**Implémentation** :
@@ -144,7 +144,7 @@ export-roadwave-[user_id]-[date].zip
- Upgrade volontaire vers GPS
**API GeoIP** :
- MaxMind GeoLite2 (gratuit, self-hosted)
- IP2Location Lite (gratuit, self-hosted, voir [ADR-021](../adr/021-geolocalisation-ip.md))
- Update DB mensuelle automatique
- Précision ~80% au niveau ville
@@ -314,7 +314,7 @@ export-roadwave-[user_id]-[date].zip
| **Anonymisation GPS** | Geohash PostGIS (24h) | 0€ |
| **Export données** | JSON+HTML+ZIP asynchrone | 0€ |
| **Suppression compte** | Grace period 30j + anonymisation | 0€ |
| **Mode dégradé** | GeoIP MaxMind + GPS optionnel | 0€ |
| **Mode dégradé** | GeoIP IP2Location + GPS optionnel | 0€ |
| **Conservation** | Purge auto 5 ans inactivité | 0€ |
| **Analytics** | Matomo self-hosted | ~5€/mois |
| **Registre traitements** | Markdown Git | 0€ |

View File

@@ -2,16 +2,25 @@
### 3.1 Évolution des jauges
**Décision** : Système simple avec valeurs fixes
**Décision** : Système simple avec valeurs fixes (points de pourcentage absolus)
| Action | Impact jauge | Justification |
|--------|--------------|---------------|
| **Like automatique renforcé (≥80% écoute)** | +2% | Signal fort d'intérêt (écoute quasi-complète) |
| **Like automatique standard (30-79% écoute)** | +1% | Signal modéré d'intérêt |
| **Like explicite (manuel)** | +2% | Signal fort, cumulable avec auto |
| **Abonnement créateur** | +5% sur tous ses tags | Signal très fort d'affinité |
| **Skip rapide (<10s)** | -0.5% | Désintérêt marqué |
| **Skip tardif (≥30%)** | 0% | Neutre (contenu essayé suffisamment) |
| **Like automatique renforcé (≥80% écoute)** | **+2%** | Signal fort d'intérêt (écoute quasi-complète) |
| **Like automatique standard (30-79% écoute)** | **+1%** | Signal modéré d'intérêt |
| **Like explicite (manuel)** | **+2%** | Signal fort, cumulable avec auto |
| **Abonnement créateur** | **+5%** sur tous ses tags | Signal très fort d'affinité |
| **Skip rapide (<10s)** | **-0.5%** | Désintérêt marqué |
| **Skip tardif (≥30%)** | **0%** | Neutre (contenu essayé suffisamment) |
**Note importante** : Les pourcentages indiqués sont des **points de pourcentage absolus**, **PAS des pourcentages relatifs**.
**Calcul** :
- Si jauge "Automobile" = 45%
- Like renforcé (+2%) → 45 + 2 = **47%**
- **NOT** 45 × 1.02 = 45.9% ❌
Cette approche garantit une **progression linéaire** et **équitable** pour tous les utilisateurs, indépendamment de leur niveau actuel dans une jauge.
**Paramètres techniques** :
- Les jauges sont bornées strictement entre **0% et 100%**
@@ -48,10 +57,13 @@ Scénario 4 : Skip après 5s
- **Like automatique** : Reflète l'engagement réel (voir [ADR-010](../adr/010-commandes-volant.md))
- **Sécurité routière** : Pas d'action complexe en conduite
- **Prévisibilité** : Règles claires et déterministes
- **Coût minimal** : Calculs simples en backend
- **Fiabilité** : Pas d'edge cases complexes
- **Progression linéaire** : Évite l'effet "rich get richer" (progression équitable)
- **Coût minimal** : Calculs simples en backend (addition/soustraction uniquement)
- **Fiabilité** : Pas d'edge cases complexes (pas de risque d'overflow avec multiplication)
- **Ajustable** : Valeurs modifiables via dashboard admin si besoin
> 📋 **Référence technique** : Voir [ADR-010 - Formule de Calcul](../adr/010-commandes-volant.md#implémentation-technique) pour l'implémentation backend détaillée.
---
### 3.2 Jauge initiale

View File

@@ -116,7 +116,26 @@ Musée du Louvre : La Joconde - @paris_museum
**Permissions requises** :
⚠️ **Important** : Permission "Always Location" est **optionnelle** et demandée uniquement si user active le mode piéton dans settings.
⚠️ **Important** : RoadWave utilise une **stratégie de permissions progressive** pour maximiser l'acceptation utilisateur et la validation stores.
**Étape 1 - Permission de base (tous utilisateurs)** :
- iOS : "Allow While Using App" (`locationWhenInUse`)
- Android : `ACCESS_FINE_LOCATION`
- **Demandée** : Au premier lancement (onboarding)
- **Permet** : Mode voiture complet ✅
**Étape 2 - Permission arrière-plan (optionnelle, mode piéton uniquement)** :
- iOS : "Allow Always" (`locationAlways`)
- Android : `ACCESS_BACKGROUND_LOCATION`
- **Demandée** : Uniquement si user active "Notifications audio-guides piéton" dans settings
- **Précédée** : Écran d'éducation expliquant l'usage (requis stores)
- **Permet** : Mode piéton avec notifications push en arrière-plan ✅
**Si permission arrière-plan refusée** :
- Mode piéton **désactivé** (toggle grisé dans settings)
- Mode voiture reste **pleinement fonctionnel**
- Audio-guides accessibles en mode **manuel** (user ouvre app, lance contenu)
- **Garantie RGPD** : App utilisable sans permission arrière-plan ✅
iOS (`Info.plist`) :
```xml
@@ -131,8 +150,12 @@ Android (`AndroidManifest.xml`) :
```xml
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_LOCATION" />
```
> 📋 **Référence technique** : Voir [ADR-014 - Stratégie de Permissions](../adr/014-frontend-mobile.md#stratégie-de-permissions-iosandroid) pour détails d'implémentation.
**Disclosure avant demande permission** (Android requis, iOS recommandé) :
Écran affiché avant demande permission "Always Location" :