---
suivi: 1473
date: 2026-09-07
sujet: Tri défaut liste demandes juridiques (ouvertes puis fermées)
chantier: juridique / demandes
type: feature
statut: poussé
hash: ba0c4f1c
fichiers:
  - app/Support/Juridique/DemandeJuridiqueListQuery.php
  - tests/Unit/DemandeJuridiqueTriDefaut1473Test.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - docs/suivi/SUIVI_1473_tri_defaut_demandes_juridiques.md
---

# SUIVI #1473 — Tri défaut liste demandes juridiques

## PROMPT ENVOYÉ

Par défaut : ouvertes puis fermées (termine + annule), date décroissante
dans chaque groupe. Clic en-tête de colonne abandonne le regroupement.
Réutiliser STATUTS_OUVERTS du #1468. Pas de changement visuel.

## BASE GIT

```
git log --oneline -1 origin/main
a5bec75a chore(suivi): hash fiche #1472
```

(#1472 déjà sur main — zone commune DemandeJuridiqueController sérialisée ;
ce lot ne touche que ListQuery + tests + journal.)

## FICHES LUES

- **#1468** — STATUTS_OUVERTS ; cloturee/basculee hors ouverts.
- **#1442** — $groupesM365 (non touché : mesDemandes inchangé).

## MESURES

1. **Tri défaut serveur** : `DemandeJuridiqueListQuery::forUser`
   (~L33/L41) `orderByDesc('created_at')` puis `Controller::mesDemandes`
   `->get()` (pas de paginate).
2. **Flèches** : client PrimeVue — `MesDemandes.vue` DataTable
   `removable-sort` + colonnes `sortable` ; aucun param `sort` Inertia.
3. **Pagination** : ABSENTE — liste complète en mémoire. Regroupement
   serveur OK (pas de risque page 1/2). Posé dans ListQuery
   `applyDefaultOrder`.
4. **Statuts** : `DemandeJuridiqueKpiService::STATUTS_OUVERTS` (L32–36).
5. **Bascule / filtres** : filtre `toutes`/`mes_dossiers` avant order ;
   filtres colonnes + recherche = client sur le payload ordonné.

## Décision legacy

`cloturee` / `basculee` = FERMÉS (hors STATUTS_OUVERTS #1468, commenté
explicitement). CASE WHEN … ELSE 1 les place en fin de liste.

## Mapping

| statut | libellé | groupe | position défaut | source |
|--------|---------|--------|-----------------|--------|
| a_qualifier | À qualifier | ouvert | tête | KpiService::STATUTS_OUVERTS L33 |
| en_cours | En cours | ouvert | tête | L34 |
| en_attente | En attente | ouvert | tête | L35 |
| termine | Terminé | fermé | fin | hors ouverts |
| annule | Annulé | fermé | fin | hors ouverts |
| cloturee | Clôturée | fermé | fin | hors ouverts (#1468) |
| basculee | Basculee | fermé | fin | hors ouverts (#1468) |

## SYNTHÈSE

Aucun .vue modifié → pas de rebuild. KPI #1468 inchangé (constante lue).
Aucun droit modifié.

## Requête legacy (Robin)

```
SELECT statut, COUNT(*) AS nb
FROM demandes_juridiques
WHERE deleted_at IS NULL
  AND statut IN ('cloturee', 'basculee')
GROUP BY statut
ORDER BY statut;
```

## DÉPLOIEMENT

```
git pull origin main
find app/ config/ database/ -name "*.php" -exec touch {} +
php artisan view:clear
php artisan journal:sync
```

Pas de migrate. Pas de route:clear. OPcache touch obligatoire (PHP).

## LEÇON

Tri défaut serveur + tri colonne client = le clic abandonne naturellement
le regroupement sans paramètre sort. Pas de pagination = regroupement
serveur suffisant.
