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 | aff = 0.3 | 207 | aff = 0.3 | ||
| 208 | else: | 208 | else: | ||
| 209 | aff = -0.4 | 209 | aff = -0.4 | ||
| 210 | − num += aff | 210 | + # poids réduit : une plage numérique seule (prix…) ne doit | ||
| 211 | − den += 1.0 | 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 | if aff == 1.0: | 217 | if aff == 1.0: | ||
| 213 | reasons.append("MATCH_PRICE_RANGE" if dim in PRICE_DIMS | 218 | reasons.append("MATCH_PRICE_RANGE" if dim in PRICE_DIMS | ||
| 214 | else f"MATCH_{dim.upper()}_RANGE") | 219 | else f"MATCH_{dim.upper()}_RANGE") | ||
| 215 | 220 | ||||