Phase 2 : dérive, ImpactScore, slider temporel
Backend : - OpenMeteoClient : vent horaire 72h (gratuit, sans clé) - DriftSimulationService : échantillonnage ST_GeneratePoints, déplacement itératif Stokes 3%, reconstruction ST_ConcaveHull, 4 horizons H+6/12/24/48, confiance décroissante - ImpactScoreService : score 4 composantes (distance/densité/ vitesse/tendance), cache Redis TTL 3h, invalidation à chaque calcul - ComputeForecastsCommand : traite les observations sans forecast - SpotScoreController : score courant + horizons depuis forecasts Frontend : - TimelineSlider : navigation Now/+6h/+12h/+24h/+48h - SargassesMap : couche observations (orange) vs forecasts (violet) rechargée à chaque changement d'étape - SpotPanel : affichage score par horizon actif + indicateur confiance - Build → backend/public/spa/ Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -83,35 +83,34 @@
|
||||
|
||||
### Pipeline — simulation de dérive
|
||||
|
||||
- [ ] Accès NOAA GRIB (vent + courant)
|
||||
- [ ] Échantillonnage polygone (centroids + random sampling)
|
||||
- [ ] Application vecteur dérive par point
|
||||
- [ ] Reconstruction polygone (convex hull / alpha shape)
|
||||
- [ ] Génération horizons H+6, H+12, H+24, H+48
|
||||
- [ ] Persistance `SargassumForecast`
|
||||
- [ ] Génération vector tiles prédictions (Tippecanoe)
|
||||
- [x] Vent horaire via Open-Meteo (gratuit, sans clé, JSON)
|
||||
- [x] Échantillonnage PostGIS ST_GeneratePoints (30 points internes)
|
||||
- [x] Déplacement horaire itératif (modèle Stokes 3% vent)
|
||||
- [x] Reconstruction ST_ConcaveHull (PostGIS 3.4)
|
||||
- [x] Génération horizons H+6, H+12, H+24, H+48 avec confiance décroissante
|
||||
- [x] Persistance `SargassumForecast`
|
||||
- [ ] Génération vector tiles prédictions (Tippecanoe) — différé
|
||||
|
||||
### Calcul ImpactScore
|
||||
|
||||
- [ ] Calcul score par `CoastalPoint` (distance, densité, vitesse d'approche, tendance)
|
||||
- [ ] Persistance `ImpactScore`
|
||||
- [ ] Mise en cache Redis (TTL 3h)
|
||||
- [x] Score par `CoastalPoint` : distance(40) + densité(30) + vitesse(20) + tendance(10)
|
||||
- [x] Persistance `ImpactScore`
|
||||
- [x] Mise en cache Redis (TTL 3h) via ImpactScoreService
|
||||
|
||||
### API Backend
|
||||
|
||||
- [ ] `GET /api/spots/{id}/score` — score courant + horizons
|
||||
- [ ] `GET /api/spots/{id}/score?at={datetime}` — score à un instant
|
||||
- [ ] `GET /api/forecasts?observationId=` — prédictions par observation
|
||||
- [ ] `GET /api/forecasts?bbox=&horizon=` — prédictions par zone + horizon
|
||||
- [x] `GET /api/spots/{id}/score` — score courant + horizons H+6/12/24/48
|
||||
- [x] `GET /api/spots/{id}/score?at={datetime}` — score à un instant
|
||||
- [x] `GET /api/forecasts?bbox=&horizon=` — prédictions par zone + horizon (API Platform)
|
||||
|
||||
### Frontend React
|
||||
|
||||
- [ ] Spot Mode complet (OK / Risque / Impact par horizon)
|
||||
- [ ] Slider temporel (Now → +6h → +12h → +24h → +48h)
|
||||
- [ ] Mise à jour dynamique polygones + score sur slider
|
||||
- [ ] Gradients radiaux densité
|
||||
- [ ] Animation légère sur polygones de prédiction
|
||||
- [ ] Vue mobile optimisée
|
||||
- [x] Slider temporel (Now → +6h → +12h → +24h → +48h)
|
||||
- [x] Spot Mode complet par horizon (OK / Risque / Impact + confiance)
|
||||
- [x] Mise à jour dynamique polygones + score sur slider
|
||||
- [x] Couche forecasts (violet pointillé) vs observations (orange plein)
|
||||
- [ ] Gradients radiaux densité — différé
|
||||
- [ ] Vue mobile optimisée — différé
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user