Schéma canonique : contrats Gold, vocabulaire, préséance, registre RGPD v2 - #10
Merged
Conversation
…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_saison, territoire_saison)
…lculée toutes communes; plancher 1950)
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.yamlv1.0.0 — transcription des règles de fusion du monolithe (combined.php,climato.php,tableaux.php), chaque règle citant sa sourcefichier: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 portentunite_incertaine: trueet restent exclus de l'unpivot. La revue humaine A3 reste à faire.ADR
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.observation; elles réutilisent les dimensions du canonique dans une table sœurprevision.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 CI —
type: icebergn'existe pas dans l'énumération ODCS v3 : les 7 contrats Gold cassaient le job de lint. Corrigé entype: s3+format: iceberg, qui décrit le même support (locationinchangé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 — vertpytest tools/tests/— 94 tests OKbuild_rgpd_register.py --check— cohérent ; le registre commité est bien identique à la sortie du générateurHors 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