---
suivi: 1474
date: 2026-09-07
sujet: UI pièces demandées aux suiveurs (fiche + mes-taches + chronologie)
chantier: juridique / tâches opérationnelles
type: feature
statut: poussé
hash: 2269567c
fichiers:
  - resources/js/Pages/Juridique/Show.vue
  - app/Support/Juridique/DemandeJuridiquePresenter.php
  - app/Http/Controllers/MesTachesController.php
  - resources/js/utils/tacheSuiviLabels.js
  - tests/Unit/DemandePieceJuridiqueUi1474Test.php
  - tests/Unit/DemandePieceJuridiqueUi1474SourceTest.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - public/build/
  - docs/suivi/SUIVI_1474_demande_piece_juridique_ui.md
---

# SUIVI #1474 — UI pièces demandées aux suiveurs

## PROMPT ENVOYÉ

UI consommant le socle #1472 : bloc « Pièces demandées » sur la fiche,
`fiche_url` + rail PIÈCES dans Mes tâches, vérification chronologie
(#1469/#1471). Pas de modification du socle (hors flags Presenter additifs).

## BASE GIT

```
git log --oneline -1 origin/main
0d217701 chore(journal): entrée tri défaut demandes juridiques (#1473)
```

## FICHES LUES

- **#1472** — props `pieces_demandees` + flags, routes, TaskSync, Resolver.
- **#1470** — architecture, `peutAcceder` suiveur, `fiche_url` manquant.
- **#1471** — mapping `juridiqueChronologieNature.js`, orange réservé « en attente ».
- **#1469** — ChronologieBuilder : événements historiques → nature `evenement`.
- **#1473** — tri défaut ListQuery (non touché).
- **#1458** — pattern `fiche_url` / rail.

## MESURES (étape 1)

1. **Presenter** — `serializePieceDemandee` expose déjà id, libelle,
   echeance_*, fournie_*, est_fournie, destinataire/demandee_par/fournie_par,
   `peut_valider` / `peut_modifier` / `peut_supprimer`. Ajout additif
   `echeance_depassee` + tri non fournies puis fournies.
2. **Routes #1472** — store `{user_id,libelle,echeance_at}` ; echeance
   `{echeance_at}` ; destinataire `{user_id}` ; valider/destroy sans body.
3. **Suiveurs** — `demande.suiveurs` → `{id,nom,initiales}` exploitable pour
   le sélecteur (pas `suiveurs_options` Graph).
4. **Emplacement** — entre Pièces jointes et Commentaires (flux PJ → demande
   → discussion → historique).
5. **Chronologie** — événements #1472 déjà en nature `evenement` via
   historique + libellés Presenter ; builder **non modifié**.
6. **Couleur** — laisser gris-bleu `evenement` ; orange réservé #1471 « en
   attente », pas pour l’historique de pièces demandées.
7. **Mes tâches** — branche `demande_juridique_id` dans `erp_context` (déjà
   peuplé par DemandePieceJuridiqueTaskSync) → pas de N+1.

## TABLEAUX DE MAPPING

### Formulaire d’ajout

| Libellé affiché | Valeur postée | Champ DB | Libellé back |
|---|---|---|---|
| Libellé de la pièce | `libelle` | `demande_juridique_pieces_demandees.libelle` | libelle |
| Destinataire (suiveur) | `user_id` | `…user_id` | user_id |
| Échéance | `echeance_at` (YYYY-MM-DD) | `…echeance_at` | echeance_at |

### Rail Mes tâches

| Code TaskType | Libellé rail |
|---|---|
| `demande_piece_juridique` | `PIÈCES` |

## DÉCISION COULEUR CHRONOLOGIE

Conserver nature `evenement` (#64748B). Pas de nature orange dédiée :
l’orange est réservé à une future nature « en attente » (#1471) ; les
événements de pièces demandées sont des faits d’historique, pas un état
d’attente courant.

## ZONE COMMUNE

`Show.vue` / `MesTachesController` / Presenter : aucun autre lot non déployé
ne les touche hors chaîne #1472–#1473 déjà sur main. Lot droits DG en file
(#1475 diag) — **non touché** ici.

## SYNTHÈSE

Bloc UI + `fiche_url` + rail. Socle #1472 intact (TaskSyncService,
Service, FormRequests, Resolver). Rebuild Vite commité.

## DÉPLOIEMENT-TEST

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

Pas de `route:clear` (aucune route ajoutée). Pas de migrate. Pas de npm /
composer / optimize / config:cache sur OVH.

## LEÇON

Les flags de droits par ligne doivent venir du Presenter ; le front ne
recalcule jamais `peut_valider`. `fiche_url` via `erp_context` parent évite
le N+1 sur le taskable ligne. Emplacement PJ → pièces demandées →
commentaires : la demande de pièce n’est ni un upload ni un commentaire.
