Files
radarsargasses/docs/specs.md

4.4 KiB
Raw Permalink Blame History

SPECS — Sargasse-Sentry

Vision Produit

Sargasse-Sentry est une plateforme de renseignement maritime autonome transformant des données satellites brutes en information directement exploitable pour la prise de décision terrain.

Le produit ne doit pas être perçu comme une carte, mais comme un outil d'aide à la décision en environnement incertain, avec un focus sur :

  • anticipation
  • lisibilité immédiate
  • confiance dans la donnée

Utilisateurs cibles

Profil Usage
Marins-pêcheurs Décision de sortie
Surfeurs Qualité du spot
Baigneurs Sécurité / nuisance

Contraintes produit

  • Gratuit
  • Sans inscription obligatoire (sauf alertes push, voir Roadmap V3)
  • Mobile-first
  • Compréhensible en moins de 3 secondes

UX — Logique Produit

Mode principal : Spot Mode

L'utilisateur sélectionne un point côtier → affichage :

Horizon Indicateur
Aujourd'hui OK / Risque / Impact
+24h OK / Risque / Impact
+48h OK / Risque / Impact

Timeline interactive

Slider temporel : Now → +6h → +12h → +24h → +48h

Met à jour en temps réel :

  • les polygones sur la carte
  • le score d'impact

Impact Score

Calcul basé sur :

score = f(distance côte, densité, vitesse d'approche, évolution tendancielle)
Score Niveau
030 OK
3070 Risque
70100 Impact

Visualisation

  • Gradients radiaux pour la densité
  • Contour épais pour la lisibilité
  • Animation légère uniquement sur les prédictions (pas les observations)

Boucle d'apprentissage (différenciateur)

Bouton : "Je confirme présence de sargasses"

Stocke un UserFeedback anonyme (localisation, timestamp, confirmation, densité estimée).


Pipeline de Données

Étape 1 — Ingestion

  • Cron Symfony toutes les 3h
  • Appel API Sentinel Hub
  • Récupération bandes B04 (RED), B08 (NIR), B11 (SWIR1)
  • Création d'un DataIngestionJob

Étape 2 — Pré-traitement

  • Filtrage nuages : rejet si cloudCoverage > seuil
  • Seuil configurable par région (défaut 60% — peut être ajusté pour zones tropicales à forte nébulosité)

Étape 3 — Calcul AFAI

Formule complète :

AFAI = R_NIR - R_RED - (R_SWIR1 - R_RED) × (λ_NIR - λ_RED) / (λ_SWIR1 - λ_RED)
  • R_* : réflectance de surface des bandes Sentinel
  • λ_* : longueurs d'onde centrales (constantes fixes par capteur)

Résultat : raster binaire (sargasse / non-sargasse)

Étape 4 — Vectorisation

  • Raster → polygones
  • Simplification Douglas-Peucker
  • Suppression du bruit (polygones < seuil surface minimal)

Étape 5 — Simulation de dérive (CRITIQUE)

Ne pas appliquer de translation globale.

Algorithme :

  1. Échantillonnage du polygone : génération de points internes (centroids + random sampling)
  2. Pour chaque point : récupération vent + courant (GRIB NOAA) → application du vecteur de dérive
  3. Reconstruction du polygone : convex hull ou alpha shape
  4. Génération des horizons : H+6, H+12, H+24, H+48

Sources de données

Source Usage Notes
Sentinel-2 Observations haute résolution Faible fréquence
Sentinel-3 Fallback Fréquence élevée
NOAA GRIB Vent + courant Gratuit, accès HTTP direct

Performance

Caching

  • Redis : résultats API, scores d'impact
  • HTTP Cache : endpoints publics, tiles statiques
  • Cloudflare free tier (optionnel, sans coût) : CDN pour les vector tiles statiques

Stratégie

  • 1 requête = 1 zone + 1 timestamp
  • Pas de recalcul à la volée
  • Scores pré-calculés à chaque ingestion

Sécurité & Résilience

  • Retry automatique sur ingestion échouée
  • Fallback Sentinel-2 → Sentinel-3 si indisponible
  • Logs détaillés sur chaque DataIngestionJob
  • Monitoring des erreurs pipeline
  • Rate limiting sur les endpoints publics

Roadmap

MVP

  • Ingestion Sentinel-2
  • Calcul AFAI + vectorisation
  • Affichage polygones (observations uniquement)
  • Zone géographique : Antilles

V2

  • Dérive H+6 / H+12 / H+24 / H+48
  • Score d'impact par CoastalPoint
  • Interface Spot Mode complète

V3

  • Alertes push (nécessite inscription légère : push token ou email — à concevoir en minimisant la friction)
  • Boucle feedback utilisateur (UserFeedback)
  • Amélioration du modèle de dérive via données terrain