Data plateforme flturbo.dev

login non configuré

La plateforme

Le principe

Un dataset est un projet GitLab dans flender/dataplateforme/dataset/. Il contient un contrat (dataset.yaml) et ce qu'il faut pour produire ses données : fichiers déposés, script générateur, requête SQL, ou la liste des accès autorisés à pousser ou écrire. À partir de là, la forge génère la base, le stockage, l'API, les droits et la page du dataset. Aucun SQL, aucune API, aucun droit écrit à la main : changer le contrat et merger, c'est changer la plateforme.

flender/
└── dataplateforme/
    ├── plateforme/        ce qui fait vivre la plateforme : socle, pipeline commun, gabarit, portail, accès
    └── dataset/
        ├── ref_articles/  un dataset = un projet : contrat, sources, scripts
        └── anc/

Même chemin partout : flender/dataplateforme/dataset/anc dans GitLab, /datasets/anc sur ce portail, data-prod.flturbo.dev/anc/<table> dans l'API, schéma anc en SQL.

Le cycle de vie d'une donnée

  1. Déclaration : le responsable crée le dataset avec le gabarit (contrat, projet GitLab).
  2. Premier chargement : fichier en dev, merge request, schéma déduit relu et épinglé (un code qui ressemble à un nombre reste du texte).
  3. Qualification : extrait réel anonymisé en staging, règles de qualité, application pilote.
  4. Mise en service : prod publiée par un mainteneur, droits posés, page en ligne.
  5. Vie courante : rafraîchissements planifiés, alertes au responsable (échec, fraîcheur), évolutions de schéma par merge request. Une colonne ajoutée passe ; un type qui change fait échouer le chargement au lieu de casser en silence.
  6. Retrait : contrat supprimé, vues et droits révoqués, tables et fichiers bruts conservés en archive.

Chaque chargement est un commit, un pipeline et une ligne d'historique (qui, quand, quel fichier, combien de lignes). Les fichiers bruts sont archivés avec l'empreinte du commit.

Livrer des données : trois portes, une seule table à l'arrivée

Par défaut les types sont déduits prudemment ; typing: text garde toutes les colonnes telles quelles. Le nom d'origine d'une colonne renommée est conservé en commentaire.

Le cloisonnement

Sous le capot

GitLab (groupe, projets, CI, merge requests, identité), Postgres 17 (une instance, trois bases), PostgREST (API de lecture et OpenAPI), MinIO (fichiers bruts, archives), Caddy (routage, TLS, filtrage), l'outil dp en Python (inférence de schéma par dlt, chargement, qualité, droits, ce portail). Tout est versionné ; le serveur se reconstruit depuis le dépôt.