3.7 KiB
3.7 KiB
ADR-010 : Commandes au volant et likes
Statut : Accepté Date : 2026-01-20
Contexte
RoadWave est utilisée en conduisant. Les utilisateurs doivent pouvoir liker du contenu pour améliorer les recommandations, mais les commandes au volant ont des limitations :
- 40% des véhicules n'ont que Suivant/Précédent/Mute
- iOS/Android ne supportent pas nativement les appuis longs ou doubles-appuis
- La sécurité impose des interactions minimales
Décision
Like automatique basé sur le temps d'écoute.
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 pour les seuils et impacts exacts.
Alternatives considérées
| Option | Compatibilité | Sécurité | Complexité |
|---|---|---|---|
| Like automatique | 100% | Maximale | Faible |
| Double-tap Pause | ~80% | Moyenne | Moyenne |
| Appui long Suivant | ~95% | Faible | Élevée |
| Configuration paramétrable | 100% | Variable | Très élevée |
Justification
- Sécurité maximale : Aucune action complexe en conduite
- Compatibilité universelle : Fonctionne sur 100% des véhicules
- UX intuitive : Comportement standard (Spotify, YouTube Music)
- 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 :
// 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 :
// ✅ 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 - 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