---
suivi: 1174
date: 2026-08-04
sujet: Commercial — nettoyage UI/validation + échéances + agence libre
chantier: commercialisation
type: fix
statut: poussé
hash: 4f6d67c5
fichiers:
  - resources/js/Pages/Programmes/Acquereur/Show.vue
  - resources/js/Components/Commercialisation/LotsGrillePanel.vue
  - resources/js/Pages/Commercial/Index.vue
  - resources/js/Pages/Annuaire/Create.vue
  - resources/js/Pages/Annuaire/Edit.vue
  - resources/js/Components/Programmes/AcquereursGrillePanel.vue
  - app/Http/Requests/UpdateAcquereurFicheRequest.php
  - app/Http/Controllers/ReservationController.php
  - app/Services/ReservationAcquereurUpdateService.php
  - app/Services/AlerteService.php
  - app/Models/Contact.php
  - tools/diag/diag_commercial_incoherences_1171.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - docs/suivi/SUIVI_1174_commercial_nettoyage_ui.md
  - public/build/
---

## PROMPT ENVOYÉ

SUIVI #1174 — nettoyage commercial (après #1172). Groupes A–E + décision Robin :
retirer commentaires UI (doublon observations), conserver responsable_suivi_id.
Aucune migration, colonnes conservées.

## SYNTHÈSE

### Fiches lues
- `SUIVI_1171` / `SUIVI_1163` / `SUIVI_1157` / `SUIVI_1172` / `SUIVI_1173`.

### Groupe A — dates
Bloc « Suivi du dossier » : envoi notaire, RDV signature, limite + réelle accord,
prév. + réelle acte. `date_sru_fin_delai` RO. Aussi sur modale réserver.

### Groupe B — retirés UI
banque_* · courtier · odf · source_decouverte · notoriete · date_option ·
date_justif_fonds · date_offre_pret · date_reelle_depot_demande · **commentaires**
(décision Robin : doublon `reservation_observations`).
**Banque** : visible sous Financement (pas introuvable) — jamais rempli → retiré.
**Conservé** : `responsable_suivi_id` (alimente AlerteService, voir ci-dessous).

### Groupe C — whitelists purgées
Revente · EDD · SSP · acompte legacy · dates/memos hors UI · champs groupe B
dont commentaires. `agence_nom` conservé (E). `frais_inclus` non touché.

### Groupe D
- `pret` retiré de `Contact::TYPES_FINANCEMENT` + Annuaire + labels grille.
- `FINANCEMENT_OPTIONS` mort grille : supprimé.
- Index Commercial : colonne TMA retirée.
- Table `lots` : vestige confirmé, pas de DROP.

### Mapping type_financement
| Libellé | Posté / stocké |
|---------|----------------|
| Comptant | comptant |
| Prêt bancaire | pret_bancaire |
| PTZ | ptz |
| Mixte | mixte |
| Investissement | investissement |
| Condition suspensive de vente… | condition_suspensive_vente |
| Autre | autre |

### Groupe E — agence
Saisie libre (#1163) + `appliquerExclusionMutuelleAgence`. Diag liste
commission sans FK.

### AlerteService × responsable_suivi_id
**Dépendance OUI** : `upsertReservationAlerte` pose `user_id = responsable_suivi_id`
et tente un email à la création d’alerte.
**Émises aujourd’hui ? NON** : `GENERATION_ACTIVE = false` coupe
`synchroniserAlertesReservationAcquereur` (et le batch). L’email est de plus
stubbé (`Log::info` « Email désactivé »). Conserver le champ UI pour quand
la génération sera réactivée.

### À signaler (non corrigé)
Acompte / remises divergents : IDs via diag Q4 en prod.

## DÉPLOIEMENT-TEST

1. `git pull` ; `optimize:clear` ; `view:clear` ; `journal:sync`
2. Smoke tests 1–10 du prompt (+ commentaires absents ; responsable suivi présent)
3. KPI remises ; coherence 0

## LEÇON

Une colonne « Prochaine échéance » sans dates saisissables est un faux progrès.
Purger une whitelist avant de vérifier le payload front = anti-silence qui casse.
`responsable_suivi_id` à 0 % n’est pas « mort » si le producteur d’alertes est off.
