---
suivi: 1107
date: 2026-07-30
sujet: Foncier — socle d’audit des modifications + édition inline (fiche parcelle)
chantier: module-foncier
type: feature
statut: poussé
hash: ce5a105a
fichiers:
  - database/migrations/2026_07_30_231000_create_entity_field_audits_table.php
  - app/Models/EntityFieldAudit.php
  - app/Models/Concerns/AuditsFieldChanges.php
  - app/Services/Foncier/FieldAuditService.php
  - app/Models/Parcelle.php
  - app/Http/Controllers/Foncier/ParcelleController.php
  - app/Http/Controllers/Foncier/ProprietaireController.php
  - routes/web.php
  - resources/js/Components/Foncier/InlineEditableField.vue
  - resources/js/Pages/Foncier/Parcelles/Show.vue
  - resources/js/Pages/Foncier/Parcelles/Index.vue
  - resources/js/Pages/Foncier/Parcelles/Form.vue
  - resources/js/Pages/Foncier/Proprietaires/Show.vue
  - resources/js/Pages/Foncier/Dossiers/Show.vue
  - resources/js/Layouts/AppShell.vue
  - tests/Feature/Foncier/FoncierAuditInlineSourceTest.php
  - tests/Feature/Foncier/FoncierAuditInlineParcelleTest.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - public/build/
  - docs/suivi/SUIVI_1107_foncier_audit_et_edition_inline.md
---

## PROMPT ENVOYÉ

SUIVI #1107 — socle d’audit + édition inline fiche parcelle, retrait quote-part UI,
renommage Prospection → Parcelles.

## PHASE 1 — AUDIT

Aucun mécanisme polymorphe réutilisable (pas de package auditing, pas de trait générique).
Patterns proches mais non réutilisables tels quels : `reservation_historique`,
`location_audits_candidature` (append-only), `facture_historique`.
`proprietaire_access_logs` = ACCÈS RGPD uniquement (view/anonymise), pas modifications.

Décision : nouvelle table `entity_field_audits` + trait `AuditsFieldChanges`
(inspiré append-only LocationAudit + ligne champ-par-champ).

## LIVRÉ

- Socle audit append-only + filtrage sensible (`foncier.prix`) + anonymisation RGPD
  (hook Proprietaire::anonymiser + CHAMPS_PERSONNELS_PROPRIETAIRE)
- InlineEditableField + PATCH `parcelles.champ.update` (liste blanche serveur)
- Historique sur fiche parcelle ; bouton Modifier retiré (route edit conservée)
- Quote-part absente de l’UI ; colonne DB conservée
- Menu/titres « Parcelles »

## LEÇON

Un endpoint de mise à jour par champ est une porte ouverte sans liste blanche ; et un
historique non filtré rouvre par l’audit ce que la permission ferme.
