4.4 KiB
4.4 KiB
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 |
|---|---|
| 0–30 | OK |
| 30–70 | Risque |
| 70–100 | 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 :
- Échantillonnage du polygone : génération de points internes (centroids + random sampling)
- Pour chaque point : récupération vent + courant (GRIB NOAA) → application du vecteur de dérive
- Reconstruction du polygone : convex hull ou alpha shape
- 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