dataforgoodfr / dataforgoodfr/12_bloom

[BACKEND] Mise à jour des navires et de leurs MMSI

Open
#451 0 comments 0 reactions 2 assignees View on GitHub

@TyData29 is already working on this.

Since Jul 3, 2025.

P1
Dominant language
Python
Stars
30
Forks
10
Avg merge
1m
Merged PRs (30d)
9

Description

La mise à jour des navires et de leur MMSI se divise en 3 procédures distinctes :

  1. mise à jour des données d'identification (dim_vessel_name, dim_vessel_flag, dim_vessel_imo, dim_vessel_ircs)
  2. mise à jour des caractéristiques techniques et des champs identité non renseignés dans les données AIS (loa, gear, engine power, tonnage, external marking, fish hold capacity, ...)
  3. mise à jour des MMSI
1. Mise à jour de l'identité

La mise à jour de l'identité du navire passe par les données AIS. On fait remonter des changements susceptibles avec une date de première apparition que l'utilisateur va pouvoir valider ou non. Une nouvelle ligne est insérée dans la table stg_historical_dim_vessels soit automatiquement, soit manuellement.

  • Validation des variantes (source Spire)

Les valeurs (vessel_imo, vessel_ircs, vessel_name et vessel_flag) rencontrées dans les données Spire et associées aux MMSI sont stockées dans une table des matchs (XXXX) qui sont ensuite validés ou invalidés par l'utilisateur.

Table des matchs :

XXXXX (nom à déterminer)
  mmsi: int
  value: int | str | NULL | float
  type: IMO | NAME | CALL_SIGN | FLAG
  valid: VALID  | INVALID | NULL

En cas de doute, une table des configurations datées est disponible pour aider l'utilisateur à valider un match (attention, une même configuration peut être rencontrées à différents moments dans la vie d'un navire).

Table des configurations :

YYYYY ( nom à déterminer)
  mmsi: int
  vessel_name: str
  vessel_imo: int
  vessel_ ircs: str
  start_date: datetime
  end_date: datetime | NULL

La validation se fait dans une interface BDD.
ATTENTION => export de la table XXXX est nécessaire pour garder une trace en cas de dbt run init.

  • Mise à jour de stg_dim_vessels
    Si un nouveau match est validé dans l'étape au-dessus, alors une proposition d'insertion dans la table stg_dim_vessels a lieu (possible ? si oui, comment ?). La ligne d'avant est clôturée.
    ATTENTION => export CSV à chaque insertion/mise à jour dans stg_dim_vessels
2. Mise à jour des caractéristiques techniques

La mise à jour des infos techniques passent par des sources externes (registre de la flotte EU , registre des RFMO, ...). Pour le registre de la flotte EU, cela peut se faire automatiquement (BDD hébergée chez BLOOM). Pour les navires hors UE, cela se fait 1 à 2 fois par an.

  • Mise à jour de stg_dim_vessels
    => comment ?
    => compute type and length_class
3. Mise à jour des MMSI

Comment ça marche ?

  1. On détecte un problème avec le MMSI (ne renvoie pas de position, renvoie une vieille position (X jours/semaines) ou renvoie un message incohérent)
  2. On cherche un nouvel MMSI (GFW, marine traffic, Spire via IMO)
  3. Cas :
  • Si nouvel MMSI, on ferme l'ancien et on ajoute le nouveau MMSI dans stg_dim_mmsi
  • Si pas de nouvel MMSI et MMSI courant inactif (ne renvoie pas de position), alors on ferme le MMSI (timestamp dans last_raw_positions) et on déclare le navire comme OUT_OF_SERVICE
  • Si pas de nouvel MMSI mais MMSI courant actif, alors on attend et on déclare le navire comme MIGHT_BE_OUT_OF_SERVICE

[OLD !]

  1. Mise à jour schéma (voir ci-dessous)
  2. Logique :
Pour les navires UE + UK

Branchement sur base de données eu_fleet_manager (BLOOM) => récupération des informations pour chaque navire (1 fois / semaine ?) (info : la base de données est mise à jour tous les lundis).

Pour les navires hors UE + UK

Faire remonter l'information à partir des données Spire (pavillon, longueur, IMO, call sign, etc.) + processus de validation manuelle*

* table tmp à valider / corriger puis script à lancer manuellement pour intégrer les changements ? autre idée ?
=> identifier quelles lignes sont à valider et exporter en XLSX : déléguer ?

Image

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.