---
suivi: 1662
date: 2026-09-22
sujet: Tableau scénarios — ligne cliquable, colonne d'actions retirée
chantier: Foncier / Faisabilité
type: feature
statut: poussé
hash: dd0d9c15
fichiers:
  - resources/js/Pages/Foncier/Dossiers/Show.vue
  - tests/Unit/ScenarioLigneCliquable1662SourceTest.php
  - tests/Unit/ScenarioStatuts1660SourceTest.php
  - tests/Unit/ScenarioFicheColonnesOngletFaisabilite1655SourceTest.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - public/build/
  - docs/suivi/SUIVI_1662_scenarios_ligne_cliquable.md
---

# SUIVI #1662 — ligne de scénario cliquable

## PROMPT ENVOYÉ

Lot d'AFFICHAGE. Onglet Faisabilité du dossier : retirer
Ouvrir · Retenir · Abandonner · Suppr. La ligne entière ouvre
le scénario. Vérifier avant suppression que chaque action
reste accessible depuis l'écran du scénario (select statut
#1660, bouton Supprimer #1641), notamment l'exclusivité
`reduireAutresRetenus`. Aucun calcul, aucune migration,
aucune route supprimée. AppShell et Scenarios/Show.vue
intouchés. Rebase après #1661.

## FICHES LUES

- **#1660 LEÇON** — `reduireAutresRetenus` vit dans
  `ScenarioFaisabiliteController::update`, pas dans le bouton
  dossier. Le select identité poste le même PUT. Reset des
  autres retenus toujours vers `etude`. Largeur select
  `!w-[128px]`.
- **#1641** — bouton « Supprimer » dans la ligne du titre,
  `router.delete(props.destroy_url)`, même `destroy()`.
- **#1655 LEÇON** — infobulle assiette scrollable ; cinq
  indicateurs `classeSeuilScenario` intacts. Journal hors
  onglet Faisabilité.
- **#1661** — `Dossiers/Show.vue` en série ; rebase
  `origin/main` avant Vite.

Anti-collision : dernier numéro = **#1661**. **#1662 est libre.**

## SYNTHÈSE

### Actions avant (citées)

Voir livrable. Quatre boutons dans la dernière colonne.
Retenir masqué si déjà `retenu`, Abandonner si déjà
`abandonne`, le trio Retenir/Abandonner/Suppr. seulement si
`peut_update && !gele`.

### Preuve d'équivalence

Select scénario : `v-model="form.statut"` + `saveMeta()` →
`putForm(form, props.update_url)` → route
`foncier.dossiers.scenarios.update` → `update()` qui pose
`reduireAutresRetenus`, `retenu_par_id`, `date_retenu`.
Supprimer scénario : `destroy_url` → même `destroy()`.
Routes conservées.

### Accessibilité

Patron `Dossiers/Index.vue` + `role="link"` de
`Programmes/Index.vue`. Survol `hover:bg-[#F8FAFC]`.
`data-stop-row` sur la cellule assiette. Lien libellé
conservé (`@click.stop`) pour Ctrl+clic / clic milieu natifs ;
la ligne gère aussi Ctrl / clic milieu.

## DÉPLOIEMENT-TEST

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

Pas de migrate. `route:clear` inutile.

## LEÇON

Un bouton de liste qui POST/PUT vers `update()` n'a pas
d'effet propre : l'exclusivité vit dans le contrôleur. Le
retirer est sûr SI un autre écran poste le même payload
(ici le select + Enregistrer). Vérifier le chemin réel
(`update_url` vs une route dédiée) avant de supprimer.
Une ligne cliquable + infobulle : `data-stop-row` sur la
cellule, sinon le clic sur le tooltip cible ouvre la fiche.
Le test #1660 assertait les boutons dossier : un lot d'UI
suivant doit le mettre à jour, pas le laisser casser.
