kaid.py : les plages numériques pèsent 0.6 (< seuil den 0.8) — un simple « bon prix » ne score plus 1.0 et n'écrase plus les correspondances réelles (bug détecté par les tests E2E)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 changed file +7 −2
modified
kaid/kaid.py
+7 −2
@@ -207,8 +207,13 @@ def personal_score(feats: dict, app_profile: dict, global_profile: dict, | ||
| 207 | 207 | aff = 0.3 |
| 208 | 208 | else: |
| 209 | 209 | aff = -0.4 |
| 210 | − num += aff | |
| 211 | − den += 1.0 | |
| 210 | + # poids réduit : une plage numérique seule (prix…) ne doit | |
| 211 | + # jamais suffire à personnaliser (0.6 < seuil den 0.8) — | |
| 212 | + # sinon tout item au « bon prix » score 1.0 et noie les | |
| 213 | + # correspondances réelles (ville, marque, type). | |
| 214 | + w = 0.6 | |
| 215 | + num += w * aff | |
| 216 | + den += w | |
| 212 | 217 | if aff == 1.0: |
| 213 | 218 | reasons.append("MATCH_PRICE_RANGE" if dim in PRICE_DIMS |
| 214 | 219 | else f"MATCH_{dim.upper()}_RANGE") |
| 215 | 220 | |