---
suivi: 1852
date: 2026-10-12
sujet: Références cadastrales, téléchargement accentué, appel IGN
chantier: foncier
type: correctif
statut: poussé
hash: 260b14cab
fichiers:
  - app/Services/Foncier/IgnCadastreParcelleService.php
  - app/Services/Foncier/ParcelleReferenceNormalisationService.php
  - app/Console/Commands/ParcellesNormaliserReferencesCommand.php
  - app/Support/FichierDisposition.php
  - app/Http/Controllers/Foncier/Concerns/ManagesFoncierEntityDocuments.php
  - app/Http/Controllers/Foncier/ParcelleController.php
  - app/Models/Parcelle.php
  - resources/js/Pages/Foncier/Parcelles/Show.vue
  - database/migrations/2026_10_12_161000_parcelle_reference_normalisations.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - public/build/manifest.json
  - public/build/assets/Show-AL6bFLMH.js
  - tests/Unit/FoncierReferenceEtTelechargement1852Test.php
---

# SUIVI #1852 — références cadastrales, fichier accentué, IGN

## PROMPT ENVOYÉ

Lot groupé. Normaliser les références cadastrales (commande d’aperçu, application hors collision, annulation, saisie, recherche). Un helper de téléchargement qui garde le nom UTF-8 et un repli ASCII. N’appeler l’IGN qu’avec la référence normalisée ; parcelle absente en avertissement et mention sur la fiche. L’écart de surface reste un constat.

## Fiches lues

- #1838 LEÇON : la correspondance cadastrale complète le numéro sur 4 chiffres, un LIKE sur la forme stockée rate « BT 257 ». La recherche et le collage comparent la forme normalisée. Ce lot ne resynchronise aucune détention.
- #1109 (tests source) : `variantes()` reste pour les tests ; l’appel HTTP n’envoie plus la forme courte. Aucune commande dont le nom contient Ign.
- #1629 : le trait de documents garde `response()->file` et `response()->download`.

## SYNTHÈSE

Section en majuscules, espaces retirés, une lettre reçoit le préfixe 0. Numéro entièrement numérique complété à 4 chiffres. Numéro non numérique laissé tel quel. Collision : une autre parcelle vivante a déjà la cible, ou deux parcelles viseraient la même cible. Aucune de ces lignes n’est écrite. La commande journalise le lot et l’audit de la parcelle passe par l’enregistrement du modèle. L’annulation restaure seulement si la référence est encore celle du lot.

Création, formulaire, champ inline, division et réunion normalisent avant l’unicité. Un doublon renvoie le lien de la fiche. La recherche de la liste, le filtre de colonne, le dossier, le collage, la navigation de fiche et le scénario comparent la saisie normalisée.

Le plantage du 12/10/2026 08:46 vient de `ManagesFoncierEntityDocuments` ligne 122, appelé par `ActeFoncierController` ligne 589 : `HeaderUtils::makeDisposition` sans repli recopiait le nom accentué dans le repli ASCII. Le helper pose `filename*` et un repli `Str::ascii`. Le même trait sert le téléchargement des dossiers, actes, offres, promesses, avenants, échanges, scénarios, valorisations de parcelle et dépenses manuelles. Les corbeilles dossier et promesse recopient l’appel : elles passent par le même helper. Les fiches propriétaire ne passent pas par ce trait.

IGN : un seul appel, section et numéro normalisés. Réponse vide, 400 ou 404 : journal warning et horodatage `ign_introuvable_at`, affiché sur la fiche. Panne de connexion ou autre statut HTTP : journal error, la fiche n’est pas marquée.

Écart de surface : la géométrie est enregistrée en SRID 4326 (`ST_GeomFromGeoJSON` avec 4326). `ST_Area` sur ce SRID renvoie des degrés carrés, comparés à la surface cadastrale en m². SRID attendu pour une surface en mètres : 2154 (Lambert-93), via `ST_Area(ST_Transform(geom, 2154))`. Pas de changement de calcul dans ce lot.

## DÉPLOIEMENT-TEST

```
git pull origin main
php artisan optimize:clear
php artisan view:clear
php artisan migrate --force
php artisan journal:sync
```

Aperçu : `php artisan parcelles:normaliser-references`
Application : `php artisan parcelles:normaliser-references --appliquer`
Annulation : `php artisan parcelles:normaliser-references --annuler=LOT`

Bundle fiche parcelle : `assets/Show-AL6bFLMH.js`, `assets/Show-LkUasefE.css`. App : `assets/app-BAcpWxa3.js`.

## LEÇON

Ne pas envoyer à l’IGN une variante à numéro court : l’API répond 400 et le journal passait en error. Ne pas appeler `makeDisposition` sans repli ASCII. Une collision cadastrale ne se fusionne pas dans cette commande.
