Skip to content

Schéma canonique : contrats Gold, vocabulaire, préséance, registre RGPD v2 - #10

Merged
citarf merged 31 commits into
mainfrom
feat/adr-schema-canonique
Aug 1, 2026
Merged

Schéma canonique : contrats Gold, vocabulaire, préséance, registre RGPD v2#10
citarf merged 31 commits into
mainfrom
feat/adr-schema-canonique

Conversation

@citarf

@citarf citarf commented Aug 1, 2026

Copy link
Copy Markdown
Collaborator

Branche de travail du chantier schéma canonique (lots A2/A3 + contrats Gold), 30 commits, +6.4k lignes dont ~97 % d'ajouts.

Contenu

Contrats Gold (17 nouveaux fichiers)gold-climato-v2, gold-climato-legacy, gold-dataclimat, gold-ic, gold-statIC, gold-canicule, gold-ref : la couche de diffusion du canonique, décrite avant d'être construite.

Vocabulaire et préséance (lot A2/A3)

  • catalog/preseance.yaml v1.0.0 — transcription des règles de fusion du monolithe (combined.php, climato.php, tableaux.php), chaque règle citant sa source fichier:ligne, chaque ambiguïté AMB-1..9 portant sa décision. Gelé le 14/07 après contre-revue. Couvert par 14 tests de non-régression.
  • catalog/parametres.yaml — vocabulaire contrôlé d'ADR-0004 (~150 grandeurs, mapping par système, facteur/offset SI). Encore marqué BROUILLON : les 16 mappings dont l'unité n'est pas tranchée par échantillon prod portent unite_incertaine: true et restent exclus de l'unpivot. La revue humaine A3 reste à faire.

ADR

  • ADR-0004, amendement NOTE-A : l'historique Timescale MF est en unités réelles (facteur 1), pas au 1/10 — l'échantillon prod du 12/07 réfute le contrat. Les 3 contrats source qui propageaient la lecture erronée sont corrigés. Règle de méthode actée : toute unité douteuse se tranche par échantillon, jamais par la doc seule.
  • ADR-0007, amendement : obs_last.source_prio — la coquille déployée en POC ne stockait pas la source, que la règle de préséance A2 exige pour arbitrer à dh_utc égal.
  • ADR-0008 (nouvelle, statut proposée) : les sorties de modèle ne rejoignent pas observation ; elles réutilisent les dimensions du canonique dans une table sœur prevision.

Registre RGPD v2 — en-tête meta (responsable, socle de sécurité commun, réserve juridique) et 4 champs par fiche (destinataires, transferts hors-UE, localisation, sécurité), calqués sur un registre art. 30 de référence. Sépare explicitement le factuel data des champs juridiques, qui restent à confirmer par le bureau.

Correctif CItype: iceberg n'existe pas dans l'énumération ODCS v3 : les 7 contrats Gold cassaient le job de lint. Corrigé en type: s3 + format: iceberg, qui décrit le même support (location inchangée).

Vérifications

Les 3 jobs de la CI rejoués en local, avec les versions du workflow :

  • datacontract lint (v1.0.16) sur les 50 contrats — vert
  • pytest tools/tests/ — 94 tests OK
  • build_rgpd_register.py --check — cohérent ; le registre commité est bien identique à la sortie du générateur

Hors périmètre

audits/bdd/ (réponse à l'appel d'offres : BPU, DQE, mémoire technique) est volontairement exclu et ajouté au .gitignore — volet commercial confidentiel, ce dépôt est public.

🤖 Generated with Claude Code

citarf added 30 commits July 11, 2026 17:22
…entité stations, gateway legacy, serving chaud)

Décisions issues de l'étude R&D du 2026-07-11 et validées sur POC
(année 2025 complète, 2,44 Md mesures, benchs gateway et tail) :

- 0003 : Apache Iceberg v3 comme format de table du lakehouse (acceptée)
- 0004 : vocabulaire contrôlé des paramètres, unités SI, (parametre, duree_s) ;
  amendée le 11/07 (clés profondeur/couche bornées, porte_occurrence,
  mesures techniques) après audit de traduisibilité du legacy
- 0005 : identité stations unifiée, crosswalk SCD2, station_uid pivot
- 0006 : Postgres comme gateway unique legacy→lakehouse (benchs PHP 7.4 :
  109-273 ms sur table triée/partitionnée ; spike métadonnées documenté)
- 0007 : serving chaud = modèle canonique long sur Timescale, obs_last +
  caggs ; trajectoire CA du doublage progressif (tail incrémental) intégrée ;
  amendée le 11/07 (dh_occurrence, position par observation)
…tasets drop-in MF-only, déviations classe_recente documentées)
…e de construction — datasets + purpose des 3 catégories gold
…ature_date

Chaîne AAAAMM (ex. 187206 = juin 1872), ni date ISO ni nombre. Précisé dans la
description du dataset (rendue sur le portail) et de la propriété.
3 datasets (journaliere, mensuelle, records), kernels v2 filtrés sources IC
(source LIKE '%-ic'), attribution Infoclimat, mfid non requis (stations IC pures).
3 datasets (journaliere/mensuelle/records), kernel v2 filtré source='static-ic',
champs qualité (n_obs, taux_qc_valide), transparence plutôt qu'homogénéisation.
Déviation classe_station documentée (siting StatIC non sourçable). Attribution
Infoclimat / réseau StatIC.
…seau propre)

purpose/descriptions/dataLicense/attribution/name corrigés : gold_ic = agrégats des
sources collectées par IC hors flux MF (synop/metar/bouées officiels relayés + StatIC
+ Météo-à-l'École), pas 'le réseau participatif Infoclimat'. Pour les stations propres
d'IC = gold-statIC.
… levée)

records_absolus et baseline_1991_2020 portent désormais classe_recente (classification
d'homogénéité MF, socle dataclimat prod). Filtres iso-D4G appliqués: records<=3
(v_station_records), baseline<=4 (v_station_deviation). deviations réduit à
l'approximation first_temperature_date (dates poste absentes du lac).
…if des records)

8e dataset de la famille : timeline des records progressivement battus par station
(all_time/mois/saison, TX/TN), drop-in D4G /records (alias /records/historical), distinct
de records_absolus. classe_recente<=3, colonne exposée. Lineage + deviations mis à jour.
station_uid était décrit comme « identifiant canonique » alors qu'il est un uuid5
dérivé de ic_id — donc pas plus stable que lui. C'est ic_id qui fait foi.

Refs infoclimat-labs/chom-poc-data#8
… n'a aucun format)

Le contrat affirmait à tort un « identifiant d'annuaire » pour StatIC.
Aligne sur la formulation de référence : hétérogène par conception,
aucune forme unique pour StatIC (00006, STATIC0253, MNWERO090).

Refs infoclimat-labs/chom-poc-data#8
…lles

L'échantillonnage prod du 2026-07-12 (Horaire, années 1980/1989/2024) réfute la
convention « MF au 1/10 » que l'ADR tenait du contrat source : les valeurs sont
en unités réelles, facteur=1 dans tous les mappings. La mention MF « °C et 1/10 »
est une précision décimale, pas un facteur d'échelle.

Corrige les 3 contrats source qui propageaient la lecture erronée et acte la
règle de méthode : toute unité douteuse se tranche par échantillon prod, jamais
par le seul contrat.
La coquille obs_last déployée en POC D1 ne stocke pas la source, alors que la
règle de préséance A2 (« une source moins prioritaire ne remplace jamais une
valeur plus prioritaire au même dh_utc ») en a besoin pour arbitrer et éviter le
ping-pong D2/D2b. Ajoute source_prio smallint (rang de préséance, comparable
directement, plus compact qu'un source_id + jointure) et fixe l'ordre v1.
…manquants

traitements.yaml v2 : en-tête meta (responsable de traitement, socle de sécurité
commun, réserve juridique) et 4 champs par fiche — destinataires, transferts
hors-UE, localisation, securite — calqués sur un registre art. 30 de référence.
Les fiches sans `securite` retombent sur le socle commun.

Sépare explicitement le factuel data (renseigné ici depuis l'inventaire et le
code) des champs juridiques, qui restent « à confirmer » par le bureau.
Générateur mis à jour (rendu des nouveaux champs, _flat mutualisé) et registre
régénéré.
…lot A2)

Transcription des règles de préséance du monolithe (combined.php, climato.php,
tableaux.php, stations.inc.php) en table déclarative : chaque règle cite sa
source fichier:ligne, chaque ambiguïté (AMB-1..9) porte sa décision. Validé et
gelé le 2026-07-14 après contre-revue sceptique du 13/07.

14 tests de non-régression : la table ne peut plus dériver du code cité sans
casser un test.
…LON)

Source de vérité du vocabulaire d'ADR-0004 : ~150 grandeurs, mapping par système
(colonnes wide MF, static.complements, codes _H de mf_data, temps réel), avec
facteur/offset vers l'unité SI et domaine de plausibilité.

BROUILLON assumé : les 16 mappings dont l'unité n'est pas tranchée par un
échantillon prod portent `unite_incertaine: true` plutôt qu'une valeur devinée,
et restent exclus de l'unpivot. Revue humaine A3 encore à faire.
…rmat iceberg)

`type: iceberg` n'existe pas dans l'énumération des types de serveur ODCS v3 :
les 7 contrats gold faisaient échouer le job « Lint des contrats ODCS » de la CI
(datacontract-cli 1.0.16). Le support réel est un bucket S3 dont le format de
table est Iceberg — c'est exactement ce qu'ODCS exprime par `type: s3` +
`format: iceberg`. Aucun changement de cible : `location` est inchangée.
@citarf
citarf merged commit 9415521 into main Aug 1, 2026
3 checks passed
@citarf
citarf deleted the feat/adr-schema-canonique branch August 1, 2026 14:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant