---
suivi: 1871
date: 2026-10-13
sujet: Négociations en lecture seule puis tâches à levée automatique
chantier: foncier
type: evolution
statut: en cours
hash: 7e7260847
fichiers:
  - resources/js/Pages/Foncier/Dossiers/Show.vue
  - tests/Feature/Foncier/FoncierNegociationListeLectureSeule1871Test.php
  - tests/Feature/Foncier/FoncierOffreStatutInline1198SourceTest.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - public/build/
  - docs/suivi/SUIVI_1871_taches_negociations_levee.md
  - database/migrations/2026_10_13_181000_add_levee_to_tasks_table.php
  - app/Support/Foncier/TacheConditionLevee.php
  - app/Services/Foncier/TacheLeveeAutomatiqueService.php
  - app/Services/Foncier/FoncierTacheLeveeRattrapage.php
  - app/Services/Foncier/TacheLeveeAffichage.php
  - app/Http/Middleware/DeclencheFoncierAlertes.php
  - app/Models/Task.php
  - app/Http/Controllers/MesTachesController.php
  - app/Http/Controllers/Foncier/DossierFoncierController.php
  - resources/js/Components/Foncier/DossierSyntheseTab.vue
  - resources/js/Pages/MesTaches/Index.vue
  - resources/js/Components/TachesSuivi/MesTachesOperationalListItem.vue
  - tests/Feature/Foncier/FoncierTacheLevee1871Test.php
---

# SUIVI #1871 — Lots A, B, C du diagnostic #1870

## Fiches lues

- #1870 (transcript, phase 1, aucun fichier) — fait foi. Menu vide : `optionsDepuis` retire le statut courant (`OffreStatutTransitions.php:125-141`), PrimeVue affiche un blanc. La fiche garde le libellé et les sept codes.
- #1198 / #1202 — le select de liste était le chemin de modification. Ce lot A revient sur #1202 pour la liste seulement.
- #1077 — cloche créée au balayage, jamais relue. Lot C coupera l’émission de `offre_expiration`, pas les cloches déjà posées.
- #1125 — la « clôture » ferme une tâche `tasks`, pas la cloche. Une tâche commentée n’était pas fermée : le moteur B ferme quand même.
- #1716 — archivage / corbeille ferme les tâches du dossier. Les nouvelles tâches doivent y passer.

## PROMPT ENVOYÉ

Phase 2 des lots A + B + C du diagnostic #1870. Statut non modifiable depuis la liste. Tâche attribuée au responsable principal du dossier, sinon premier responsable, sinon créateur. Une tâche se ferme dès que sa condition est remplie. Offre acceptée → tâche « Préparer la promesse ». Trois commits.

## Lot A — liste en lecture seule

Colonne Statut de « Historique des négociations » : pastille `statut_libelle`, couleur par code. Plus de `OffreStatutInline`, plus de PATCH depuis la liste. `optionsDepuis` n’est pas modifié (le statut courant reste hors des options). Fiche offre : champ Statut, « Réponse du destinataire », « marquer envoyée » inchangés.

| Élément | Route ou déclencheur | Droit | Effet en base |
|---|---|---|---|
| Pastille statut liste | affichage `Dossiers/Show.vue` | lecture du dossier | aucun |
| Champ statut fiche | PATCH `/foncier/offres-foncieres/{id}/champ` | `foncier.gestion` + modification du dossier | `offres_foncieres.statut` |
| Réponse du destinataire | POST `repondre` | idem | statut, date de réponse, commentaire |
| Marquer envoyée | PUT marquer-envoyée | idem, depuis `a_envoyer` | `envoyee`, `date_offre` |

## Lot B — moteur de levée

Colonnes `condition_levee`, `levee_at`, `levee_motif`, `levee_par_user_id` sur `tasks`. Huit codes déclarés. `TacheLeveeAutomatiqueService::leverOuvertes` ferme toute tâche ouverte de la condition, y compris commentée ou « en cours » : `auto_closed`, `closed_reason = cause_resolue`, motif dans la description et dans `levee_motif`. `levee_par_user_id` reste null. Le rattrapage est appelé dans `DeclencheFoncierAlertes::terminate`, même verrou `foncier_alerte_runs`. Aucune famille enregistrée dans ce commit : le lot C branche les négociations. Panneau « Tâches à faire » sur la synthèse du dossier, historique motif + date ; même historique dans Mes tâches, onglet Opérationnelles.

| Élément | Route ou déclencheur | Droit | Effet en base |
|---|---|---|---|
| Levée | appel dans la transaction métier | celui de l’événement | `tasks` fermée, `levee_*` |
| Rattrapage | `DeclencheFoncierAlertes::terminate` | session web, après 8 h, une fois par jour | selon les familles enregistrées |
| Affichage dossier | GET fiche dossier | lecture du dossier | aucun |
| Affichage Mes tâches | GET `/mes-taches` | utilisateur connecté | aucun |

## LEÇON

#1202 avait ouvert tous les sauts de statut depuis la liste du dossier. Robin revient sur cette décision (#1871) : la liste est en lecture seule. Le statut se change sur la fiche (champ, formulaire Réponse, marquer envoyée). Ne pas « réparer » le menu vide en réinjectant le statut courant dans `optionsDepuis` : la liste ne propose plus de menu.
