refactor(docs): réorganiser ADR et règles métier pour clarté
**Changements majeurs** : 1. **Suppression ADR-010 (Commandes volant et likes)** : - Contenu consolidé dans Règle 05 (section 5.3) - Raison : ADR-010 était du métier déguisé en architecture - Section "Implémentation Technique" ajoutée à Règle 05 - Pattern correct (addition) vs incorrect (multiplication) 2. **Déplacement ADR-011 → Compliance** : - `docs/adr/011-conformite-stores.md` → `docs/compliance/stores-submission.md` - Raison : Nature opérationnelle/légale, pas architecture technique - Nouveau dossier `/docs/compliance/` créé 3. **Renumérotation ADR (010-022)** : - Combler les trous de numérotation (010 et 011) - ADR-012→010, ADR-013→011, ..., ADR-024→022 - 22 ADR numérotés en continu (001-022) - Historique Git préservé (git mv) 4. **Mise à jour références** : - Règle 03 : ADR-010 → Règle 05 (section 5.3) - Règle 09 : ADR-010 → Règle 05 (section 5.3) - INCONSISTENCIES-ANALYSIS.md : toutes références mises à jour - Incohérence #15 annulée (faux problème : modes séparés) **Résultat** : - ✅ Séparation claire ADR (technique) vs Règles métier (fonctionnel) - ✅ Documentation compliance séparée - ✅ Numérotation ADR continue sans trous - ✅ Single Source of Truth (pas de redondance) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -154,7 +154,7 @@ Android (`AndroidManifest.xml`) :
|
||||
<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.
|
||||
> 📋 **Référence technique** : Voir [ADR-010 - Stratégie de Permissions](../adr/010-frontend-mobile.md#stratégie-de-permissions-iosandroid) pour détails d'implémentation.
|
||||
|
||||
**Disclosure avant demande permission** (Android requis, iOS recommandé) :
|
||||
|
||||
@@ -270,8 +270,6 @@ Utilisateur écoute :
|
||||
|
||||
### 5.3 Interactions au volant : Like automatique et engagement
|
||||
|
||||
> ⚠️ **Architecture Decision Record** : Voir [ADR-010](../adr/010-commandes-volant.md) pour les détails techniques complets
|
||||
|
||||
**Décision** : Like automatique basé sur le temps d'écoute
|
||||
|
||||
**Problème technique identifié** :
|
||||
@@ -487,6 +485,43 @@ Utilisez les boutons au volant :
|
||||
|
||||
---
|
||||
|
||||
#### Implémentation Technique (Backend)
|
||||
|
||||
**Architecture** : 2 services séparés pour responsabilités distinctes
|
||||
|
||||
1. **Gauge Calculation Service** :
|
||||
- Calcule l'ajustement basé sur % écoute (≥80% → +2%, 30-79% → +1%, skip <10s → -0.5%)
|
||||
- Retourne un ajustement absolu (float64, en points de pourcentage)
|
||||
- **Stateless** : logique métier pure, pas d'accès DB
|
||||
- **Testable** : unitairement sans dépendances
|
||||
|
||||
2. **Gauge Update Service** :
|
||||
- Applique l'ajustement aux jauges concernées (addition/soustraction)
|
||||
- Applique les bornes [0, 100] (via fonction `clamp`)
|
||||
- Gère les multi-tags : si contenu a N tags → mise à jour de N jauges
|
||||
- Persiste : Redis (immédiat) + PostgreSQL (batch async)
|
||||
|
||||
**Séparation des responsabilités** :
|
||||
- ✅ **Calculation** : Logique métier pure (réutilisable pour auto-like, skip, actions manuelles)
|
||||
- ✅ **Update** : Persistance et contraintes techniques
|
||||
|
||||
**Pattern de calcul** :
|
||||
```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
|
||||
```
|
||||
|
||||
**Persistance** :
|
||||
- **Redis** : Mise à jour immédiate (latence <10ms)
|
||||
- **PostgreSQL** : Batch async toutes les 5 minutes (cohérence finale)
|
||||
- Raison : Jauges consultées fréquemment (recommandations temps réel)
|
||||
|
||||
---
|
||||
|
||||
### 5.4 Lecture en boucle et enchaînement
|
||||
|
||||
**Décision** : Passage automatique après 2s + insertion pub paramétrable
|
||||
|
||||
Reference in New Issue
Block a user