---
suivi: 1427
date: 2026-09-03
sujet: Widget Demandes juridiques — ARRÊT (modale Create.vue)
chantier: dashboard
type: diagnostic
statut: poussé
hash: 87935227
fichiers:
  - docs/suivi/SUIVI_1427_widget_demande_juridique.md
---

## PROMPT ENVOYÉ

SUIVI #1427 — widget Demandes juridiques (indicateurs + dépôt en modale).
Prérequis #1426. Clause d’arrêt si Create.vue exige une refonte pour la modale.

## FICHES LUES

- `#1426` sur origin/main (confirmé).
- `#1398` / `#1399` — juriste + Teams sur le chemin `store` de Create.
- `#1396` — pas de plancher hauteur.

## SYNTHÈSE

### Prérequis
`origin/main` = `24b6d7ce` / `c55a55e7` (#1426 liens_rapides présent).

### ÉTAPE 0 — base prod
**Inaccessible** ici (pas de `.env` / MySQL). Requêtes à lancer en prod : voir livrable.
Statuts **code** (pas inventés depuis prod) : `a_qualifier`, `en_cours`,
`en_attente`, `termine`, `annule` (+ legacy `cloturee`, `basculee`).
« Terminée » = `termine` ; `terminee_le` posé par `DemandeJuridiqueStatutResolver`
uniquement sur passage à `termine`.

### MesDemandes
Écran `/juridique/mes-demandes` (`MesDemandes.vue`) : DataTable des demandes du
user (demandeur ou suiveur ; juristes voient tout / filtre mes_dossiers).
Filtres colonnes locaux (statut, priorité…). Pas de query `?statut=` serveur.

### Create.vue — CLAUSE D’ARRÊT DÉCLENCHÉE
Page Inertia complète : `min-h-screen`, props serveur (`demandeur`,
`juriste_options`, `programme_select_meta`…), `router.post` → redirect show,
erreurs via `page.props.errors`. Réutiliser en modale = **refondre** (extraire
formulaire + adapter store pour rester sur le dashboard + props JSON).

Options exposées à Robin (aucune implémentée) :
- **A** (préférence exprimée) : widget indicateurs + bouton → `/juridique/demandes/create`
- **B** : lot dédié extraction formulaire partagé page/modale + store XHR
- **C** rejetée : formulaire dupliqué

### Accès dépôt (mesuré)
`create`/`store` : `abort_unless($user instanceof User, 403)` — tout utilisateur
authentifié. Nav : `peutVoirLigneJuridique = true`.

## DÉPLOIEMENT / TEST

Aucun code fonctionnel. Après choix A ou B : nouveau lot (ex. #1428).

## LEÇON

Une page Inertia « full page » (props + redirect + page.errors) n’est pas une
modale. La clause d’arrêt évite une refonte improvisée ou un double formulaire
qui divergerait avec #1398/#1399.
