[Bug] - Passe le référentiel INSEE au COG 2025 - #58
Merged
Conversation
Xusifob
changed the base branch from
bugfix/birth-place-communes-outre-mer
to
staging
August 12, 2026 11:22
Xusifob
changed the base branch from
staging
to
bugfix/birth-place-communes-outre-mer
August 12, 2026 11:28
Member
Author
|
@codex review |
|
Codex Review: Didn't find any major issues. Can't wait for the next one! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
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
changed the base branch from
bugfix/birth-place-communes-outre-mer
to
staging
August 12, 2026 20:05
Xusifob
changed the base branch from
staging
to
bugfix/birth-place-communes-outre-mer
August 12, 2026 20:09
Xusifob
changed the base branch from
bugfix/birth-place-communes-outre-mer
to
staging
August 12, 2026 20:22
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
force-pushed
the
chore/insee-cog-2025
branch
from
August 12, 2026 20:23
1e0786c to
26979ea
Compare
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.
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 :
v_commune_depuis_1943.csvTYPECOMajoutée en têtev_pays_et_territoire_depuis_1943.csvfgetcsvabsorbe, aucun code à changerUn 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
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).
phpcs0 erreur,phpstan -l 6clean en local.Portée exacte du vert affiché
tests.yamlne se déclenche que sur les PR dont la base estmainoustaging. Cette PR ciblant une branche de feature,phpunitne s'était pas lancé à l'ouverture. Le run a été obtenu en reciblant temporairement la PR surstagingpuis 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.
L'import INSEE doit être rejoué en production, le changement étant dans les données.
🤖 Generated with Claude Code