ADR-0027 — Le Cabinet senior devient un Kanban ; l'admin passe en modales¶
| Statut | 🟢 Accepté — 2026-06-22 ; implémenté (Cabinet.tsx réécrit, lib/Modal.tsx, lib/statuts.ts COLONNES_BOARD/colonneBoard, app/ui.css .al-kanban* ; tsc + next build verts) |
| Portée | Layout du Cabinet (vue senior). Remplace le segmented control d'ADR-0025 (D-UILAYOUT-1) et le master-detail d'ADR-0026 (D-MD-1). Aucune logique de workflow ni garde backend touchée. |
| Décision | La vue senior du Cabinet est un Kanban (6 colonnes = étapes du workflow, cartes = demandes), en lecture seule (pas de drag). Cliquer une carte ouvre le détail sous le board, avec ses actions en tête (le panneau d'actions droit disparaît). L'administration (nouvelle demande, équipe + pré-créer, clients + archiver) passe dans des modales. Junior/externe gardent une liste simple. |
| Réf. | ADR-0025 — Layout des écrans de file ; ADR-0026 — Master-detail & restreint (déclencheur « escamoter le panneau d'actions » réalisé ici) ; ADR-0006 — Personas staff ; ADR-0007 — Vues par persona & instigation ; DESIGN.md (modale = tâche focalisée) |
🎯 À retenir
Le workflow du Cabinet EST un pipeline (Soumise → Étude → Revue → Validée →
Audit → Livrée) : un Kanban où les colonnes sont ces étapes le rend lisible d'un
coup d'œil. On le garde en vue seule : déplacer une carte = une transition
gardée (assigner exige un junior, valider une note, auditer un verdict) ; un drag
contournerait ces gardes, donc pas de drag — les actions restent dans le détail.
Le détail riche (waterfall, tornado, journal) n'a pas sa place dans une modale
(DESIGN.md) : il s'ouvre sous le board. La modale, oui, mais pour les tâches
focalisées que sont les formulaires d'admin. Et comme on n'a plus d'accordéon, le
bug « la sélection bascule seule au rafraîchissement » disparaît : sel ne dépend
que des clics.
Contexte¶
Trois frictions menaient ici :
- Le segmented control + master-detail (ADR-0025/0026) empilait une file étroite et un détail ; l'ensemble restait dense et la file en colonne tassait les grands montants FCFA.
- Le panneau d'actions droit portait en permanence deux formulaires d'admin (pré-créer, nouvelle demande) sans rapport avec la demande sélectionnée — encombrant (déclencheur de réexamen pré-enregistré dans ADR-0026 : « escamoter le panneau d'actions »).
- Bug observé : l'accordéon de la file (ADR-0025/affinage) rouvrait la phase de la
demande sélectionnée à chaque tick de polling (
useAutoRefresh, 6 s), faisant « basculer » la sélection toute seule. Cause : un effet[sel, travaux]réécrivait l'état d'UI depuistravaux, rafraîchi en boucle.
Décision¶
- D-KANBAN-1 — Vue senior = Kanban, lecture seule. Six colonnes (
COLONNES_BOARD= étapes de laWorkflowBar) ;colonneBoard(statut)range chaque demande. La carte porte l'intitulé, la pastille de statut précis, le tenant, la DBO et l'assigné. Aucun drag : les transitions (assigner, valider, transmettre, auditer, livrer, renvoyer) restent gardées et passent par le détail. Cliquer une carte = sélectionner ; le détail s'ouvre sous le board (progression, synthèse, revue, journal) avec ses actions en tête (l'ancien panneau droit). Plus de colonne d'actions à l'extrême droite. - D-KANBAN-2 — Admin en modales. Trois boutons au-dessus du board ouvrent des modales
(tâches focalisées, DESIGN.md) : Nouvelle demande (instigation ADR-0007), Équipe
(roster + désactiver/réactiver + pré-créer un compte), Clients (annuaire + archiver).
Le composant
Modal(client isolé,lib/Modal.tsx) reprend l'identité de la modale de Revue ; il n'entre pas danslib/ui.tsxqui reste importable par des composants serveur. - D-KANBAN-3 — La sélection est à l'abri du polling.
selne dépend que des clics ; aucun effet ne le réécrit depuistravaux. Le rafraîchissement vivant (file + détail) reste, mais ne touche jamais la sélection. (Corrige le bug ci-dessus, structurellement : l'accordéon fautif n'existe plus.) - D-KANBAN-4 — Junior/externe : liste simple. Leur périmètre n'a qu'une ou deux étapes ; un Kanban y serait dégénéré. Ils gardent une liste pleine largeur (chip de statut par ligne), le détail s'ouvrant dessous comme pour le senior. Pas de boutons d'admin.
Conséquences¶
- Positif. Vue d'ensemble du pipeline immédiate (WIP par étape) ; board pleine largeur (plus de panneau droit qui serre) ; admin rangé (board propre) ; bug de bascule éliminé. Le détail riche reste une vue, pas une boîte.
- Limite assumée. Six colonnes demandent de la largeur : défilement horizontal du board
sous ~1050px (poste de travail sur écran large,
PRODUCT.md). Pas de drag (assumé : prix de l'intégrité des transitions gardées). - Pas de backend. Aucune route, schéma, garde modifiés ; pas de migration
_COLONNES_AJOUTEES. Le CSS master-detail/tab-bar d'ADR-0026 est retiré (remplacé par.al-kanban*).
Déclencheur de réexamen (pré-enregistré)¶
- Besoin réel de déplacer une carte à la souris (si les seniors réclament le drag) → réintroduire un drag qui ouvre la modale de transition au drop (saisie de l'obligatoire : junior, note, verdict), jamais un drag qui contourne les gardes.
- Board trop vide (si chaque colonne ne porte qu'une carte ou deux à l'usage) → reconsidérer un retour à une liste groupée plus compacte pour le senior.