fix: pondérer le score horizon par la confiance

Sans pondération, H+6 pouvait afficher 67 quand "now" était 34 car les
deux formules n'ont pas la même échelle. Multiplier par confidence (0.85
à H+6, 0.45 à H+48) rend les scores cohérents entre horizons : un risque
ne peut pas paraître croître si c'est juste l'incertitude qui augmente.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Gwadaking
2026-04-03 21:49:09 -04:00
parent 163c2c3a56
commit 0014870c3b

View File

@@ -116,12 +116,15 @@ class SpotScoreController extends AbstractController
$horizons = []; $horizons = [];
foreach ($rows as $row) { foreach ($rows as $row) {
$distKm = (float) $row['distance_km']; $distKm = (float) $row['distance_km'];
$score = max(0, (int) round((1 - min($distKm / 50, 1)) * 100)); $confidence = (float) $row['confidence'];
// Score pondéré par la confiance : un horizon lointain moins certain
// ne peut pas afficher un risque supérieur à un horizon proche plus fiable
$score = max(0, (int) round((1 - min($distKm / 50, 1)) * 100 * $confidence));
$horizons['h' . $row['horizon']] = [ $horizons['h' . $row['horizon']] = [
'score' => $score, 'score' => $score,
'level' => $this->scoreToLevel($score), 'level' => $this->scoreToLevel($score),
'distanceKm' => $distKm, 'distanceKm' => $distKm,
'confidence' => (float) $row['confidence'], 'confidence' => $confidence,
'validAt' => $row['valid_at'], 'validAt' => $row['valid_at'],
]; ];
} }