Initial commit
This commit is contained in:
141
docs/regles-metier/03-centres-interet-jauges.md
Normal file
141
docs/regles-metier/03-centres-interet-jauges.md
Normal file
@@ -0,0 +1,141 @@
|
||||
## 3. Centres d'intérêt et jauges
|
||||
|
||||
### 3.1 Évolution des jauges
|
||||
|
||||
**Décision** : Système simple avec valeurs fixes
|
||||
|
||||
| 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) |
|
||||
|
||||
**Paramètres techniques** :
|
||||
- Les jauges sont bornées strictement entre **0% et 100%**
|
||||
- Calcul immédiat à chaque action (pas de batch différé)
|
||||
- Les tags du contenu sont définis par le créateur à la publication
|
||||
- Si un contenu a plusieurs tags, chaque jauge correspondante est impactée
|
||||
|
||||
**Exemple de calcul** :
|
||||
```
|
||||
Contenu de 5 minutes tagué "Automobile" + "Voyage"
|
||||
|
||||
Scénario 1 : Écoute 4min30 (90%)
|
||||
→ Like automatique renforcé (+2%)
|
||||
→ Jauge Automobile : 45% → 47%
|
||||
→ Jauge Voyage : 60% → 62%
|
||||
|
||||
Scénario 2 : Écoute 2min30 (50%)
|
||||
→ Like automatique standard (+1%)
|
||||
→ Jauge Automobile : 45% → 46%
|
||||
→ Jauge Voyage : 60% → 61%
|
||||
|
||||
Scénario 3 : Écoute 2min30 (50%) + Like manuel
|
||||
→ Like auto +1% puis like manuel +2% = +3% total
|
||||
→ Jauge Automobile : 45% → 48%
|
||||
→ Jauge Voyage : 60% → 63%
|
||||
|
||||
Scénario 4 : Skip après 5s
|
||||
→ Signal négatif (-0.5%)
|
||||
→ Jauge Automobile : 45% → 44.5%
|
||||
→ Jauge Voyage : 60% → 59.5%
|
||||
```
|
||||
|
||||
**Justification** :
|
||||
- **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
|
||||
- **Ajustable** : Valeurs modifiables via dashboard admin si besoin
|
||||
|
||||
---
|
||||
|
||||
### 3.2 Jauge initiale
|
||||
|
||||
**Décision** : Démarrage neutre à 50%, pas de questionnaire
|
||||
|
||||
**À l'inscription** :
|
||||
- Toutes les jauges d'intérêt sont initialisées à **50%**
|
||||
- Pas de questionnaire onboarding (friction zéro)
|
||||
- L'algorithme apprend naturellement via les premières écoutes
|
||||
|
||||
**Catégories disponibles** :
|
||||
- Automobile
|
||||
- Voyage
|
||||
- Famille
|
||||
- Amour
|
||||
- Musique
|
||||
- Économie
|
||||
- Cryptomonnaie
|
||||
- Politique
|
||||
- Culture générale
|
||||
- Sport
|
||||
- Technologie
|
||||
- Santé
|
||||
- *... (extensible)*
|
||||
|
||||
**Cold start (premiers jours)** :
|
||||
1. Nouvel utilisateur s'inscrit → toutes jauges à 50%
|
||||
2. Écoute premier podcast "Automobile" → jauge Auto monte à 51%
|
||||
3. Skip un contenu "Économie" → jauge Éco descend à 48%
|
||||
4. Après 10-15 écoutes, profil commence à se dessiner clairement
|
||||
|
||||
**Alternative optionnelle (post-MVP)** :
|
||||
- Questionnaire **optionnel** proposé après 3 écoutes (in-app)
|
||||
- Message : "Améliorez vos recommandations en sélectionnant vos centres d'intérêt"
|
||||
- Si rempli : jauges sélectionnées passent à 70%, non sélectionnées à 30%
|
||||
- Si skip : conserve 50% partout
|
||||
|
||||
**Justification** :
|
||||
- **Inscription ultra-rapide** : pas de questionnaire = moins de churn
|
||||
- **Découverte naturelle** : l'algorithme apprend en quelques écoutes
|
||||
- **Équitable** : pas de biais initial vers certains créateurs
|
||||
- **Comportement déterministe** : facile à tester et débugger
|
||||
- **Cold start acceptable** : à 50%, tous les contenus ont une chance égale initialement
|
||||
|
||||
---
|
||||
|
||||
### 3.3 Dégradation temporelle
|
||||
|
||||
**Décision** : Pas de dégradation automatique
|
||||
|
||||
Les jauges **ne diminuent jamais** avec le temps de manière automatique.
|
||||
|
||||
**Règle** :
|
||||
- Une jauge ne change **que par les actions utilisateur** (like, écoute, skip)
|
||||
- Pas de cron job de dégradation périodique
|
||||
- Pas de "rafraîchissement" artificiel
|
||||
|
||||
**Scénario illustratif** :
|
||||
```
|
||||
Utilisateur aimait "Économie" (jauge 80%) il y a 1 an
|
||||
→ Depuis, skip tous les contenus Éco
|
||||
→ Jauge descend naturellement à 40% via les skips
|
||||
→ Pas besoin de dégradation temporelle
|
||||
```
|
||||
|
||||
**Si utilisateur inactif longtemps** :
|
||||
- Utilisateur part en vacances 6 mois → jauges conservées
|
||||
- Au retour : ses jauges reflètent toujours ses goûts d'avant
|
||||
- Comportement cohérent et prévisible
|
||||
|
||||
**Alternative utilisateur (contrôle explicite)** :
|
||||
- Bouton "Réinitialiser mes centres d'intérêt" dans paramètres
|
||||
- Action manuelle : remet toutes les jauges à 50%
|
||||
- Permet nouveau départ si souhaité (changement de vie, etc.)
|
||||
|
||||
**Justification** :
|
||||
- **Principe KISS** (Keep It Simple, Stupid)
|
||||
- **Coût 0** : pas de batch nocturne, pas de calculs temporels
|
||||
- **Fiabilité maximale** : pas de bugs de fuseaux horaires, dates, etc.
|
||||
- **UX prévisible** : jauge = reflet des actions, pas d'automatisme caché
|
||||
- **Respect historique** : si utilisateur aimait X depuis 2 ans, pourquoi "oublier" ?
|
||||
- **Évolution naturelle** : les actions récentes suffisent à faire évoluer les jauges
|
||||
|
||||
---
|
||||
|
||||
## Récapitulatif Section 3
|
||||
Reference in New Issue
Block a user