Skip to content

[Bug] - Passe le référentiel INSEE au COG 2025 - #58

Merged
Xusifob merged 2 commits into
stagingfrom
chore/insee-cog-2025
Aug 12, 2026
Merged

[Bug] - Passe le référentiel INSEE au COG 2025#58
Xusifob merged 2 commits into
stagingfrom
chore/insee-cog-2025

Conversation

@Xusifob

@Xusifob Xusifob commented Aug 12, 2026

Copy link
Copy Markdown
Member

⚠️ Empilée sur #57 — à relire et merger après elle.

Quand #57 sera mergée, GitHub rebasera automatiquement la base de cette PR sur staging. Attention : ce changement de base émet un événement edited, qui n'est pas dans les types par défaut de pull_request — les tests ne se relanceront donc pas tout seuls. Le vert affiché restera celui du run actuel. Pour un run sur l'état post-merge réel, il faut un synchronize : un commit vide, ou un close/reopen de la PR.

Contexte

Met à jour les sept fichiers du Code Officiel Géographique depuis l'édition 2025 de l'INSEE.

Changements de schéma

Comparaison systématique des en-têtes 2024 → 2025 :

Fichier Changement
v_commune_depuis_1943.csv Colonne TYPECOM ajoutée en tête
v_pays_et_territoire_depuis_1943.csv Champs désormais entre guillemets — fgetcsv absorbe, aucun code à changer
Les 5 autres Schéma identique

Un seul demande du code : sans adaptation, toutes les colonnes du fichier historique se décalent d'un cran et les communes sont importées avec un code erroné. Le parsing saute la colonne — la table historique n'a pas de champ équivalent et aucune recherche ne filtre dessus.

J'ai vérifié que le test échoue bien si on garde l'ancien parsing.

Constats

  • Le fichier historique ne gagne que 97 lignes, dont 45 arrondissements municipaux (Paris, Lyon, Marseille) qui en étaient absents et sont des lieux de naissance légitimes.
  • Analyse de collisions rejouée sur les données 2025 : les 96 codes partagés entre référentiel métropolitain et outre-mer ne présentent que 17 chevauchements de période, tous sur Mayotte et avec un libellé identique, donc absorbés par la déduplication déjà en place.

Tests

Les tests d'import couvrent désormais aussi les deux fichiers métropolitains, d'où le renommage en InseeImportTest. Ils travaillent sur une tranche du vrai fichier plutôt que sur son intégralité : charger 42 000 lignes dans un seul unit of work dépasse la limite mémoire d'un process de test isolé, et une tranche suffit à détecter un décalage de colonnes, ce qui est l'objet de ces tests.

CI : OK (183 tests, 1361 assertions). phpcs 0 erreur, phpstan -l 6 clean en local.

Portée exacte du vert affiché

tests.yaml ne se déclenche que sur les PR dont la base est main ou staging. Cette PR ciblant une branche de feature, phpunit ne s'était pas lancé à l'ouverture. Le run a été obtenu en reciblant temporairement la PR sur staging puis en la rouvrant, avant de restaurer la base empilée.

Conséquence à connaître : ce run a testé le cumul des deux PR, pas le commit COG 2025 isolément. C'est proche de l'état final qui sera mergé, mais ce n'est pas une validation isolée.

⚠️ Après déploiement

L'import INSEE doit être rejoué en production, le changement étant dans les données.

🤖 Generated with Claude Code

@Xusifob
Xusifob changed the base branch from bugfix/birth-place-communes-outre-mer to staging August 12, 2026 11:22
@Xusifob Xusifob closed this Aug 12, 2026
@Xusifob Xusifob reopened this Aug 12, 2026
@Xusifob
Xusifob changed the base branch from staging to bugfix/birth-place-communes-outre-mer August 12, 2026 11:28
@Xusifob

Xusifob commented Aug 12, 2026

Copy link
Copy Markdown
Member Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Can't wait for the next one!

Reviewed commit: 233399b9c2

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@Xusifob
Xusifob changed the base branch from bugfix/birth-place-communes-outre-mer to staging August 12, 2026 20:05
@Xusifob Xusifob closed this Aug 12, 2026
@Xusifob Xusifob reopened this Aug 12, 2026
@Xusifob
Xusifob changed the base branch from staging to bugfix/birth-place-communes-outre-mer August 12, 2026 20:09
@Xusifob Xusifob changed the title [Chore] - Passe le référentiel INSEE au COG 2025 [Bug] - Passe le référentiel INSEE au COG 2025 Aug 12, 2026
@Xusifob
Xusifob changed the base branch from bugfix/birth-place-communes-outre-mer to staging August 12, 2026 20:22
Xusifob and others added 2 commits August 12, 2026 22:23
Met à jour les sept fichiers du Code Officiel Géographique depuis l'édition
2025 de l'INSEE.

Un seul changement de schéma demande du code : v_commune_depuis_1943.csv
gagne une colonne TYPECOM en tête. Le parsing la saute, la table historique
n'ayant pas de champ équivalent et aucune recherche ne filtrant dessus.
Sans cette adaptation, toutes les colonnes se décalent d'un cran et les
communes historiques sont importées avec un code erroné.

v_pays_et_territoire_depuis_1943.csv passe ses champs entre guillemets ;
fgetcsv l'absorbe, aucun changement nécessaire. Les cinq autres fichiers
gardent le même schéma.

Le fichier historique ne gagne que 97 lignes, dont 45 arrondissements
municipaux (Paris, Lyon, Marseille) qui en étaient absents et sont des
lieux de naissance légitimes.

Les tests d'import couvrent désormais aussi les deux fichiers
métropolitains, d'où le renommage en InseeImportTest. Ils travaillent sur
une tranche du vrai fichier plutôt que sur son intégralité : charger
42 000 lignes dans un seul unit of work dépasse la limite mémoire d'un
process de test isolé, et une tranche suffit à détecter un décalage de
colonnes, ce qui est l'objet de ces tests.

Vérifié sur les données 2025 : les 96 codes partagés entre le référentiel
métropolitain et celui d'outre-mer ne présentent que 17 chevauchements de
période, tous sur Mayotte et avec un libellé identique, donc absorbés par
la déduplication déjà en place.

L'import INSEE doit être rejoué après déploiement.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Quatre points, tous vérifiés avant correction.

Le helper de découpage des CSV de test fuyait un fichier temporaire à chaque
appel : tempnam() crée le fichier, et lui concaténer « .csv » produisait un
second chemin, seul celui-ci étant nettoyé. Le fichier créé par tempnam
restait dans /tmp indéfiniment.

Ce même helper cherchait le code n'importe où sur la ligne. Or d'autres
colonnes contiennent des codes communes — COMPARENT dans v_commune_YYYY.csv,
COM_AV et COM_AP dans le fichier des mouvements. Découper sur 01015 ramenait
ainsi trois lignes dont une commune sans rapport, et findOneBy() sans ORDER BY
en aurait retourné une au hasard. Les deux codes utilisés aujourd'hui sont
uniques dans leurs fichiers, donc les tests passaient : c'était un piège pour
la prochaine personne qui ajoute un code. Le helper prend désormais le nom de
la colonne et lit l'en-tête pour en déduire l'index.

La commande d'import annonçait un succès même quand un fichier était
introuvable : importData() renvoie false dans ce cas, et les sept appels
ignoraient ce retour avant d'afficher « import completed successfully » et de
sortir en code 0. Un fichier manquant ou un chemin resté sur l'ancien
millésime remplissait donc une table vide sans que rien ne le signale — risque
d'autant plus concret que le passage au COG 2025 renomme quatre chemins. La
commande sort maintenant en échec.

Enfin le docblock des tests d'import affirmait couvrir les fichiers de
data/insee alors que seuls les quatre fichiers communes le sont ; le fichier
des mouvements et les deux fichiers pays n'ont aucun test. Le commentaire dit
désormais ce qui est réellement couvert et ce qui ne l'est pas.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@Xusifob
Xusifob force-pushed the chore/insee-cog-2025 branch from 1e0786c to 26979ea Compare August 12, 2026 20:23
@Xusifob
Xusifob merged commit 6d95cfc into staging Aug 12, 2026
2 checks passed
@Xusifob
Xusifob deleted the chore/insee-cog-2025 branch August 12, 2026 20:23
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