(doc) : ajout et modification de docs après arbitrage
This commit is contained in:
@@ -14,11 +14,11 @@ RoadWave est utilisée en conduisant. Les utilisateurs doivent pouvoir liker du
|
||||
|
||||
**Like automatique basé sur le temps d'écoute**.
|
||||
|
||||
Règles :
|
||||
- ≥80% d'écoute → Like renforcé (+2 points)
|
||||
- 30-79% d'écoute → Like standard (+1 point)
|
||||
- <30% d'écoute → Pas de like
|
||||
- Skip <10s → Signal négatif (-0.5 point)
|
||||
**Principe** : Le système calcule automatiquement un score d'engagement basé sur le pourcentage du contenu écouté, puis applique des ajustements de jauges d'intérêt en conséquence.
|
||||
|
||||
**Progression** : Les jauges utilisent des **points de pourcentage absolus** (addition/soustraction), **pas des pourcentages relatifs** (multiplication).
|
||||
|
||||
> 📋 **Valeurs concrètes** : Voir [Règle 03 - Évolution des Jauges](../regles-metier/03-centres-interet-jauges.md#31-évolution-des-jauges) pour les seuils et impacts exacts.
|
||||
|
||||
## Alternatives considérées
|
||||
|
||||
@@ -37,10 +37,62 @@ Règles :
|
||||
- **Engagement** : Tous les contenus génèrent des signaux
|
||||
- **Simplicité** : Une seule logique à implémenter et maintenir
|
||||
|
||||
## Pattern d'Implémentation
|
||||
|
||||
### Architecture
|
||||
|
||||
```
|
||||
[Audio Player] → [Listen Event Tracker]
|
||||
↓
|
||||
[Gauge Calculation Service]
|
||||
- Calcule score basé sur %écoute
|
||||
- Applique seuils (définis dans règles métier)
|
||||
- Retourne ajustement (points absolus)
|
||||
↓
|
||||
[Gauge Update Service]
|
||||
- Applique ajustement (addition/soustraction)
|
||||
- Applique bornes [0, 100]
|
||||
- Persiste en DB
|
||||
```
|
||||
|
||||
### Principes Clés
|
||||
|
||||
**Calcul d'ajustement** :
|
||||
```go
|
||||
// Pattern générique (valeurs dans règles métier)
|
||||
func CalculateGaugeAdjustment(listenPercentage float64) float64 {
|
||||
// Logique par seuils définis dans règles métier
|
||||
// Retourne ajustement absolu (ex: +2.0, +1.0, -0.5)
|
||||
}
|
||||
```
|
||||
|
||||
**Application avec bornes** :
|
||||
```go
|
||||
// ✅ CORRECT : Addition de points absolus
|
||||
newValue := currentValue + adjustment
|
||||
newValue = clamp(newValue, 0.0, 100.0)
|
||||
|
||||
// ❌ INCORRECT : Multiplication (pourcentage relatif)
|
||||
newValue := currentValue * (1 + adjustment/100) // NE PAS FAIRE
|
||||
```
|
||||
|
||||
**Multi-tags** :
|
||||
- Si contenu a plusieurs tags → chaque jauge correspondante est ajustée
|
||||
- Ajustement identique appliqué à toutes les jauges concernées
|
||||
|
||||
## Conséquences
|
||||
|
||||
### Technique
|
||||
- Tracking du temps d'écoute via le player audio
|
||||
- Calcul du score côté backend basé sur `completion_rate`
|
||||
- Communication onboarding : "Vos likes sont automatiques selon votre temps d'écoute"
|
||||
- Possibilité de like manuel depuis l'app (à l'arrêt)
|
||||
- **Architecture à 2 services** : Calculation (calcule ajustement) + Update (applique avec bornes)
|
||||
- Métriques à suivre : taux de complétion, distribution des scores, feedbacks utilisateurs
|
||||
|
||||
### UX
|
||||
- Communication onboarding : "Vos likes sont automatiques selon votre temps d'écoute"
|
||||
- Possibilité de like manuel depuis l'app (à l'arrêt) également
|
||||
- **Progression linéaire** : Évite l'effet "rich get richer" (progression équitable)
|
||||
- Prévisibilité : Ajustements absolus, pas de calculs complexes
|
||||
|
||||
### Référence
|
||||
- **Seuils et valeurs** : Voir [Règle 03 - Évolution des Jauges](../regles-metier/03-centres-interet-jauges.md#31-évolution-des-jauges)
|
||||
|
||||
Reference in New Issue
Block a user