docs(regles-metier): préciser formule algorithme recommandation

Ajout section détaillée "Calcul score_interets" dans Règle 04:
- Domaine jauges : [0-100] (stockage en pourcentage)
- score_interets : [0.0-1.0] (normalisé pour pondération)
- Formule exacte : (SUM(gauges) / NB_TAGS) / 100

Exemple concret avec nombres :
- Tags ["Musique", "Tourisme"]
- Jauges utilisateur 75% et 60%
- score_interets = 0.675
- Impact dans score_final démontré

Cas limites documentés :
- Aucune jauge → valeur neutre 0.5
- 1 seul tag → gauge_value / 100
- Moyenne arithmétique simple (pas de pondération par tag)

Résout incohérence #1 (INCONSISTENCIES.md P0 item 4).

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
jpgiannetti
2026-02-01 15:33:49 +01:00
parent 0609f380ff
commit cf26d8a244

View File

@@ -39,6 +39,50 @@ où :
- bonus_aleatoire = 10% des recommandations tirées aléatoirement - bonus_aleatoire = 10% des recommandations tirées aléatoirement
``` ```
#### Calcul détaillé du score_interets
**Domaine des données** :
- Jauges utilisateur : stockées en pourcentage [0-100]
- score_interets : normalisé dans l'intervalle [0.0-1.0] pour pondération
**Formule exacte** :
```
score_interets = (SUM(gauge_values_for_tags) / NB_TAGS) / 100
où :
- gauge_values_for_tags = valeurs des jauges correspondant aux tags du contenu
- NB_TAGS = nombre de tags du contenu (minimum 1, maximum 3)
- Division par 100 pour normaliser [0-100] → [0.0-1.0]
```
**Exemple concret** :
```
Contenu : "Visite du Louvre"
Tags : ["Musique", "Tourisme"]
Utilisateur :
- Jauge "Musique" = 75%
- Jauge "Tourisme" = 60%
- Jauge "Automobile" = 40% (non pertinente, ignorée)
Calcul :
score_interets = ((75 + 60) / 2) / 100
= (135 / 2) / 100
= 67.5 / 100
= 0.675
Impact dans le scoring final (type géo-contextuel) :
score_final = (score_geo * 0.5) + (score_interets * 0.3) + (score_engagement * 0.2) + bonus_aleatoire
= (0.8 * 0.5) + (0.675 * 0.3) + (0.5 * 0.2) + 0
= 0.4 + 0.2025 + 0.1
= 0.7025 / 1.0
```
**Cas limites** :
- Utilisateur n'a aucune jauge pour les tags du contenu → score_interets = 0.5 (valeur neutre par défaut)
- Contenu avec 1 seul tag → score_interets = gauge_value / 100
- Jauges multiples → moyenne arithmétique simple (pas de pondération différente par tag)
**Pondérations par type** : **Pondérations par type** :
| Type | Poids géo | Poids intérêts | | Type | Poids géo | Poids intérêts |