[Bug] - Corrige les communes de naissance introuvables (outre-mer et noms à article) - #57
Conversation
…noms à article) Deux bugs distincts empêchaient de renseigner une commune de naissance, signalés sur la même conversation Intercom. 1. Les communes des collectivités d'outre-mer étaient absentes du référentiel : l'INSEE les publie dans des fichiers à part que nous n'importions pas. v_commune_2024.csv ne couvre que la métropole et les DOM, et le fichier « pays » ne rattrape rien. Une patiente née à Nuku-Hiva (98731) n'avait donc aucun lieu de naissance à sélectionner. Ajout de v_commune_comer_2024.csv et v_commune_outremer_depuis_1943.csv, avec deux nouvelles cibles d'import (commune_comer et commune_outremer1943), incluses dans --target=all. Les lignes vont dans les tables existantes, donc BirthPlaceService les voit sans changement : NATURE_ZONAGE joue le rôle de TYPECOM et COMER celui de DEP. Le fichier historique embarque aussi les communes d'Algérie, du Maroc et de Tunisie d'avant l'indépendance, même famille de bug. 2. Les communes dont le nom porte un article étaient introuvables quand on les saisit en entier. L'INSEE stocke « Le Blanc » en NCC « BLANC » et en LIBELLE « Le Blanc », or la recherche ne portait que sur NCC/NCCENR : taper le nom tel qu'il est écrit sur la pièce d'identité ne renvoyait rien. 2 493 communes sont concernées. La recherche porte désormais aussi sur le libellé avec article, dans le référentiel courant comme dans l'historique. Effets de bord traités : - L'INSEE a réutilisé les codes des communes algériennes pour des communes métropolitaines (91103 est Bou-Saâda jusqu'en 1962 puis Brétigny-sur-Orge à partir de 1968). Les 96 codes en collision n'ont aucun chevauchement de période : la date de naissance suffit à les départager, ce que le service fait déjà. Couvert par un test. - Mayotte figure dans les deux référentiels le jour de son changement de statut (31/03/2011) : déduplication ajoutée dans BirthPlaceService. - Correction de la deprecation fgetcsv() sur le paramètre $escape ; aucune des données INSEE ne contient d'antislash, le comportement est inchangé. L'import INSEE doit être rejoué après déploiement : le correctif du premier bug est dans les données, pas dans le code. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 65e765f344
ℹ️ 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".
| "COM","98814","0","LIFOU","Lifou","Lifou","1969-03-30","" | ||
| "COM","98815","0","MARE","Maré","Maré","1969-03-30","" | ||
| "COM","98816","0","MOINDOU","Moindou","Moindou","1969-03-30","" | ||
| "COM","98817","0","MONT DORE","Mont-Dore","Mont-Dore","1969-03-30","" |
There was a problem hiding this comment.
Restore articles in active historical COMER labels
When dateOfBirth is supplied, birthplace searches use only the historical table, so this active record makes a full search for Le Mont-Dore return no city and returns Mont-Dore as the label for code 98817. The current COMER row identifies the same active commune as Le Mont-Dore (v_commune_comer_2024.csv:78), and L'Île-des-Pins is similarly reduced at line 805. Preserve those articles in the historical records or normalize leading articles during dated searches.
Useful? React with 👍 / 👎.
…E d'outre-mer Le correctif précédent ne suffisait pas pour le cas signalé. searchBirthPlacesByDate() n'interroge que les tables historiques, or l'INSEE ne commence à coder les collectivités d'outre-mer que bien après 1943 : Nouvelle-Calédonie en 1969, Polynésie française le 21 mai 1972, Saint-Pierre-et-Miquelon en 1976, Wallis-et-Futuna en 1985, Mayotte et les Terres australes en 2007. Une patiente née à Nuku-Hiva en 1960 n'a donc aucune ligne historique et la recherche datée ne renvoyait toujours rien, alors que la commune existe sans ambiguïté aujourd'hui. Le test ajouté précédemment utilisait une date de naissance de 1980, juste au-dessus du seuil de 1972, ce qui masquait le trou. Quand la recherche historique ne renvoie aucune commune, le référentiel courant est désormais consulté en repli, pour la recherche par nom comme pour la résolution par code. Le repli ne se déclenche que sur un résultat vide : il ne peut donc jamais masquer ni remplacer une correspondance datée, ce qu'un test vérifie explicitement sur Ars / Ars-sur-Formans. Par ailleurs --purge vide les cinq tables INSEE avant de regarder la cible. Combiné à une cible étroite, il laissait le référentiel amputé de tout ce que cette cible ne réimporte pas — soit exactement ce qu'invite à faire la note de version « rejouer l'import INSEE ». Les communes d'outre-mer partageant leur table avec les communes métropolitaines, la purge ne peut pas non plus être restreinte par cible : elle n'est donc plus autorisée qu'avec --target=all. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Contexte
Signalé sur Intercom par une utilisatrice le 19/03/2026, sans réponse depuis le 23/03 : deux patients pour lesquels la commune de naissance est impossible à renseigner, le champ affiche « inconnu ».
Ce sont en réalité deux bugs distincts, tous deux sur
/birth_places.Bug 1 — les communes d'outre-mer sont absentes du référentiel
L'INSEE publie les communes des collectivités d'outre-mer dans des fichiers séparés que nous n'importions pas.
v_commune_2024.csvne couvre que la métropole et les DOM : zéro ligne en98x, aucune occurrence de « Nuku » dans les cinq fichiers embarqués, et le fichier « pays » ne rattrape rien.BirthPlaceServicene pouvait donc structurellement rien renvoyer. Sont concernés Saint-Pierre-et-Miquelon, Saint-Barthélemy, Saint-Martin, Wallis-et-Futuna, Polynésie française, Nouvelle-Calédonie et les Terres australes.Correctif — ajout de
v_commune_comer_2024.csv(94 communes) etv_commune_outremer_depuis_1943.csv(830 lignes), avec deux cibles d'importcommune_comeretcommune_outremer1943, incluses dans--target=all. Les lignes vont dans les tables existantes, doncBirthPlaceServiceles voit sans modification :NATURE_ZONAGEjoue le rôle deTYPECOM,COMERcelui deDEP.Bug 2 — les communes à article sont introuvables
L'INSEE stocke « Le Blanc » en
NCC=BLANCetLIBELLE=Le Blanc, or la recherche ne portait que surNCC/NCCENR. Taper le nom tel qu'il est écrit sur la pièce d'identité ne renvoyait rien.2 493 communes sont concernées : Le Havre, La Rochelle, Les Sables-d'Olonne… C'est le plus large des deux bugs, et il était invisible jusqu'ici.
Correctif — la recherche porte aussi sur le libellé avec article, dans le référentiel courant comme dans l'historique. La recherche sans article continue de fonctionner.
Effets de bord traités
91103= Bou-Saâda jusqu'en 1962, puis Brétigny-sur-Orge à partir de 1968). Vérifié : les 96 codes en collision n'ont aucun chevauchement de période, la date de naissance suffit à les départager — ce que le service fait déjà. Couvert par un test.fgetcsv()sur$escape; aucune donnée INSEE ne contient d'antislash, comportement inchangé.Tests
/birth_places: commune à article, commune d'outre-mer, code réutilisé après l'indépendance.phpcs0 erreur,phpstan -l 6clean.PR liée
#58 (passage du référentiel au COG 2025) est empilée sur celle-ci et doit être mergée après.
L'import INSEE doit être rejoué en production. Le correctif du bug 1 est dans les données, pas dans le code — sans réimport, les communes d'outre-mer restent introuvables. Le bug 2 est corrigé par le seul déploiement du code.
🤖 Generated with Claude Code