Aller au contenu

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 depuis travaux, rafraîchi en boucle.

Décision

  • D-KANBAN-1 — Vue senior = Kanban, lecture seule. Six colonnes (COLONNES_BOARD = étapes de la WorkflowBar) ; 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 dans lib/ui.tsx qui reste importable par des composants serveur.
  • D-KANBAN-3 — La sélection est à l'abri du polling. sel ne dépend que des clics ; aucun effet ne le réécrit depuis travaux. 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.