---
suivi: 1557
date: 2026-09-15
sujet: Refonte synthèse dossier foncier
chantier: foncier
type: feature
statut: poussé
hash: 7be80474
fichiers:
  - app/Support/Foncier/FoncierReferentiels.php
  - app/Http/Controllers/Foncier/DossierFoncierController.php
  - resources/js/Components/Foncier/ParcelleMap.vue
  - resources/js/Components/Foncier/DossierSyntheseTab.vue
  - resources/js/Pages/Foncier/Dossiers/Show.vue
  - tests/Unit/DossierFoncier1445SourceTest.php
  - tests/Unit/DossierFoncier1557SourceTest.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - public/build/
  - docs/suivi/SUIVI_1557_refonte_synthese_dossier.md
---

# SUIVI #1557 — Refonte de la synthèse d’un dossier foncier

## PROMPT ENVOYÉ

Restructurer l’onglet Synthèse selon la maquette validée : en-tête compact,
carte d’emprise Leaflet (parcelles vivantes, labels, couleurs d’état, clic
nouvel onglet), cartes aperçu (parcelles, négociations, promesses, documents,
tâches). Retirer le bloc Écart de prix (données conservées), la Classe Sage,
les textes d’aide. Conserver l’édition (bouton Modifier) et les boutons
de chaînage #1556. Patron 860/1280, pas d’overflow-x-hidden. Rebase avant
build Vite. Push HECTAREG main.

## FICHES LUES

- **#1556 LEÇON** — Show.vue zone commune ; chaînage dans la synthèse ;
  rebase avant build. Impact : boutons Associer / Créer / Dissocier repris
  dans le nouvel en-tête, pas un bloc « Programme » séparé.
- **#1197 LEÇON** — édition inline, whitelist `champsInlineAutorises`,
  `prix_demande` conservé. Impact : bouton Modifier ouvre un dialogue avec
  les mêmes champs inline (sauf Classe Sage).
- **#1445** — Classe Sage sur le dossier. Impact : champ retiré de l’UI
  (imputation par le programme, #1556) ; whitelist et colonne conservées ;
  test source #1445 mis à jour.
- **#1449 / #1463 / #1271 / #1444** — paliers 860/1280, jamais
  `overflow-x-hidden`. Impact : `.dossier-foncier-page` + grille
  `minmax(0, 1fr)`.
- **#1289** — périmètre = `dossier_foncier_parcelle`. Impact : emprise
  via `DossierFoncierPerimetreService::parcelles()` (parcelles vivantes).

## SYNTHÈSE

En-tête : pastille statut·origine, libellé, référence·commune·enseigne,
responsable, boutons chaînage + Modifier.

Carte : `ParcelleMap` étendu (`features`), polygones colorés, numéro et
surface cadastrale au centroïde, `window.open` nouvel onglet. Géométries
orphelines exclues (join parcelles du périmètre, pas la table geometries
seule). Surfaces du sous-titre = somme des cadastrales tracées / totales
(ST_Area 4326 n’est pas en m² — non utilisé).

Palette : 7 états de cycle de vie colorés ; types fonciers + Autre = gris
neutre `EMPRISE_COULEUR_NEUTRE`.

Aperçus : 3 dernières lignes, montants à droite, liens vers les onglets.

Disparu de l’écran : Écart de prix, Classe Sage, textes d’aide cités.
Données et payload `indicateur_prix` conservés. Aucune migration.

## DÉPLOIEMENT-TEST

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

Pas de migrate. Cas : DF-2026-0003 carte + labels ; parcelle sans contour
→ encadré ; dossier sans contour → message ; clic nouvel onglet ; 1280 /
1100 / 800 px ; Modifier ; Associer / Créer / Dissocier.

## LEÇON

Ne jamais interroger `parcelle_geometries` sans joindre les parcelles
vivantes du périmètre : des lignes orphelines (parcelles soft-deleted)
produisent des polygones fantômes. ST_Area en SRID 4326 n’est pas une
surface en m² — afficher les cadastrales. Extraire l’onglet Synthèse
hors de Show.vue (zone commune) pour limiter les collisions de rebase.
La Classe Sage dossier n’a plus de surface UI : l’imputation passe par
le programme (#1556) ; ne pas recréer le sélecteur sur la synthèse.
