fix: 3 bugs introduits lors du refactoring DriftSimulation/--force

1. DriftSimulationService : suppression ST_Buffer(::geography) — produisait des
   géométries invalides/dégénérées sur grand MULTIPOLYGON → ST_Distance retournait
   652 029km. Remplacé par ST_Translate + ST_SimplifyPreserveTopology uniquement.

2. ImpactScoreService : filtre MAX_RELEVANT_M (300km) — une observation distante
   ne remplace plus le score d'un spot proche. Les scores existants sont préservés
   si l'observation est hors zone pertinente.

3. ComputeForecastsCommand --force : suppression du DELETE FROM impact_score.
   On ne purge plus les scores existants ; computeForObservation ajoute les
   nouveaux scores, les anciens restent valides pour les spots éloignés.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Gwadaking
2026-04-03 20:25:49 -04:00
parent 1429eaa71c
commit a14782b067
3 changed files with 22 additions and 18 deletions

View File

@@ -70,8 +70,9 @@ class ComputeForecastsCommand extends Command
['ids' => $ids],
['ids' => \Doctrine\DBAL\ArrayParameterType::STRING]
);
// ImpactScore n'a pas de FK vers l'observation — on purge tout et on recalcule
$this->em->getConnection()->executeStatement('DELETE FROM impact_score');
// Note : on ne supprime PAS les impact_scores existants.
// computeForObservation créera de nouveaux scores ; les anciens restent
// pour les spots où cette observation est trop loin (MAX_RELEVANT_M).
$this->em->clear();
// Recharge les observations détachées