Méthodologie & SLA
Cette page documente précisément les sources de données, les modèles, la persistance et les engagements de service de la plateforme. C'est le document que les équipes data des acheteurs B2B (traders, assureurs, freight forwarders) examinent avant de signer.
Sources de données
- AIS positions : flux temps réel via aisstream.io (réseau communautaire). Couverture excellente Europe / US, plus faible Méditerranée / Golfe Persique.
- AIS données statiques :
ShipStaticData(Type, Name, Destination, Draught, ETA broadcast) — émis toutes les ~6 minutes par navire. - Géographie : bbox + zones (anchorages, berths, channels) définies à la main par port. Liste 10 ports v1 : ARA + Hamburg + Algeciras + Fujairah + Singapore + Houston + Sabine Pass + Ras Laffan.
- Pas de données propriétairesintégrées en v1 — la plateforme s'appuie uniquement sur AIS publique. Des sources premium (Spire, Orbcomm) sont sur la roadmap pour combler les zones de couverture faible.
Classification de cargaison
Combinaison du shipType AIS (codes 70-89) et d'une heuristique mots-clés (nom, destination) pour assigner une classe parmi : crude, product, chemical, LNG, LPG, container, dry-bulk, general-cargo, ro-ro, passenger, fishing, tug, other. Limitations connues : un navire mal nommé ou avec destination vide tombe sur le shipType générique. Précision attendue ~85 % sur tankers et ~95 % sur containers.
Détection de voyages
- Ouverture: un voyage s'ouvre quand un navire (de classe trackable : tanker / container / bulk / general / RoRo) est observé en approche/mouillage avec SOG ≥ 1 kn, après la grace period de 60 s suivant le démarrage du worker.
- Arrivée: transition vers state = moored dans une zone de quai (NavStatus 5 ou SOG < 0,3 kn dans la zone berth).
- Départ: after arrived, vessel reaches state = underway et distance > 8 nm du centre du port.
- Faux positifs : tugs, pilotes et fishing exclus du tracking — la classe cargaison sert de filtre.
Modèle ETA
- Estimation naïve :
distance / SOGoù distance est le grand cercle entre la position courante et le centre du port. Recalculée toutes les 5 minutes par voyage actif. - Correction saisonnière: médiane de l'erreur (predicted − actual) calculée sur les 90 jours glissants, par heure d'arrivée UTC. Fallback sur la médiane globale si le bucket horaire a moins de 3 échantillons. Recompute toutes les 30 min.
- Référence comparée : champ ETA broadcast extrait des messages
ShipStaticData(saisi manuellement par l'équipage du navire — souvent imprécis et tardif). - Métriques : RMSE et MAE en heures, sur les voyages clos avec ETA prédit ET ETA broadcast disponibles. Mises à jour à chaque voyage clos. Fenêtre par défaut : 30 jours.
- Roadmap modèle : intégration congestion, marées, météo, vitesse moyenne historique du navire spécifique.
Détection d'anomalies
v1 : seuils absolus de dwell au mouillage, ajustés par classe de cargaison.
- Tankers (crude/product/chemical/LNG/LPG) : warn ≥ 12 h, critical ≥ 48 h.
- Containers : warn ≥ 6 h, critical ≥ 24 h.
- Autres : warn ≥ 18 h, critical ≥ 72 h.
Roadmap : seuils dérivés de la distribution historique par (port, cargo) ; détection de déviation de route filée ; détection de loitering hors zone connue (signal "dark fleet").
Persistance & lineage
- Stockage SQLite via
node:sqlite(built-in Node 22+). Tables :kpi_snapshots,static_ships,positions,voyages,webhook_subscriptions,webhook_deliveries. - Chaque ligne
kpi_snapshotsetvoyagesporte le port et le timestamp. Reproductibilité totale d'une métrique à un instant donné. - Snapshot des positions : 1 entrée par minute par navire (rate limited). Permet le backtesting et la rejouabilité du modèle.
- Roadmap : export Parquet quotidien vers S3 / GCS pour les data scientists clients.
Engagements de service (SLA v1)
| Disponibilité plateforme | 99,5 %/mois (MVP) |
| Latence positions live | < 30 s (P95) |
| Latence KPIs / voyages | < 90 s (P95) |
| Webhook delivery | 1 retry à 60 s · log 90 j |
| Rétention historique | 7 jours KPIs in-memory · illimité en SQLite (compactage 90 j) |
| Backfill | Sur demande contractuelle (rejouage des positions persistées) |
Conformité
- Données AIS : ouvertes, transmises par les navires en respect de la convention SOLAS. Aucune donnée personnelle de l'équipage.
- RGPD : aucun traitement de données personnelles. Les MMSI sont des identifiants de navire, pas de personne.
- Sanctions : la plateforme ne filtre pas activement les navires sous sanctions (US OFAC, UK OFSI, EU). Le client doit appliquer ses propres listes.
- Détails complets en page Mentions légales.
Attributions & licences
- AIS terrestre : aisstream.io — flux communautaire AIS (terms of use libres pour usage technique dérivé).
- Météo : Open-Meteo — données sous licence CC-BY 4.0. Source citée à chaque affichage.
- Imagerie radar : « Contains modified Copernicus Sentinel data », ESA — données ouvertes Copernicus.
- Cartographie : tuiles © CARTO (CC BY 3.0) sur fond © OpenStreetMap contributors (ODbL 1.0).
- VIIRS Boat Detection : produit commercial du Payne Institute, Colorado School of Mines (licence requise) — connecteur prêt côté code, activation après contrat. Citation à inclure : Elvidge, C.D., et al., « VIIRS Boat Detection (VBD) ».
- Données AIS satellite premium(Spire / MarineTraffic / Orbcomm) : aucune utilisation par défaut. Activation contractuelle requise — termes du fournisseur s'appliquent.