---
suivi: 1648
date: 2026-09-22
sujet: Scénario — enregistrement unique des sections modifiées
chantier: Foncier / Faisabilité
type: feature
statut: poussé
hash: f2cef366
fichiers:
  - resources/js/Pages/Foncier/Scenarios/Show.vue
  - tests/Unit/ScenarioEnregistrementUnique1648SourceTest.php
  - tests/Unit/ScenarioKpiBar1634SourceTest.php
  - tests/Unit/ScenarioHautDePageCompact1641SourceTest.php
  - tests/Unit/ScenarioEtudeFiRetouchesFicheTableur1647SourceTest.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - public/build/
  - docs/suivi/SUIVI_1648_scenario_enregistrement_unique.md
---

# SUIVI #1648 — enregistrement unique

## PROMPT ENVOYÉ

Remplacer les cinq boutons « Enregistrer » de section + le bouton « section
courante » de la barre par UN SEUL point de sauvegarde qui n’envoie QUE les
sections réellement modifiées, en série, avec arrêt et message explicite en cas
d’échec. Corriger le texte d’aide assiette (#1645). Aucun endpoint / calcul
modifié.

## FICHES LUES

- **#1634** — SECTIONS_ENREGISTRABLES, objection « tout enregistrer » (5 PUT).
- **#1645** — assiette hors calculs ; aide hypothétique fausse ; bouton assiette déjà redondant.
- **#1647** — prérequis déployé (hash rebase `a045df8a`).

## SYNTHÈSE — constats bruts (point 1)

### SECTIONS_ENREGISTRABLES
Cinq entrées `identite` / `assiette` / `fiche` / `grille` / `etude` avec `label`,
`short`, `save: () => save*()`, `editable: () => peutEditer*`.

### Suivi #1634 → #1648
Avant : `sectionActive` + enregistrement d’UNE cible. Après : ensemble
`sectionsModifiees` ; entrée via `onSectionInput` ; sortie via
`marquerSectionEnregistree` après succès PUT.

### Handlers et erreur validation
Tous via `putForm(form, url)` → Promise (`onSuccess` resolve / `onError` reject).
Payloads inchangés (reconstruction depuis refs). Erreurs restent sur le
`useForm` de la section (FormErrorsSummary).

## Enchaînement
`enregistrerDepuisBarre` : filtre `sectionsAEnregistrer` (dirty ∩ editable ∩
ORDRE_SECTIONS), `await section.save()` en série, stop sur reject + message
nommant échec / enregistrés / restants.

## LEÇON
Ne jamais marquer dirty comme « enregistré » avant le onSuccess Inertia.
Ne jamais boucler sur toutes les sections : seulement l’ensemble dirty.
