ADR 0044 – Le cockpit de l'éditeur est une application séparée
Statut : Décidée. Date : 04/10/2026. S’appuie sur EC-099 (rôles editeur_*) et la garde @SansOrganisation.
Contexte
Section intitulée « Contexte »L’équipe de l’éditeur doit enregistrer les organisations et leur créer des accès, voir la plateforme (modules, activités, étapes, packs, dictionnaire de données, routes d’API), publier packs, documents, règles générales et normes, suivre licences et facturation. Deux options : un espace réservé dans apps/backoffice (accès par rôle) ou une application à part.
Le back-office vit toujours dans une organisation (X-Organisation, RLS, organisation_id partout). Le cockpit n’a pas d’organisation et voit toutes les organisations.
Décision
Section intitulée « Décision »Une application apps/cockpit (React + Vite, TanStack Router/Query), servie sur son propre hôte.
- Même API : module
apps/api/src/cockpit/, routes sous/v1/editeur/..., toutes en@SansOrganisation(...). Pas de second service. - Même royaume Keycloak, client OIDC dédié
biotrace-cockpit(PKCE, MFA exigé), rôlesediteur_admin,editeur_parametrage,editeur_support. - Socle partagé :
packages/ui,api-client,i18n,schemas. Densité « Éditeur » ajoutée aux jetons « Registre » ; le vert reste réservé à « bio ». - L’administration d’une organisation par elle-même (utilisateurs, modules visibles) reste dans le back-office : le cockpit crée l’organisation et son premier administrateur.
Alternatives écartées
Section intitulée « Alternatives écartées »- Espace éditeur dans le back-office : code et libellés internes livrés dans le bundle des producteurs ; chaque écran porterait un test « suis-je éditeur ? » ; risque de fuite entre clients. Écartée.
- API séparée pour le cockpit : isolation d’exploitation sans besoin avéré, double déploiement et double contrat. Reportée tant que ce besoin n’existe pas.
Conséquences
Section intitulée « Conséquences »Un second bundle à construire et à déployer. Aucune dépendance nouvelle du socle. La connexion (PKCE, jetons en mémoire, renouvellement) est extraite du back-office dans le paquet interne packages/auth-web, partagé par les deux applications (CP-1) : une seule implémentation à tenir à jour. Ce paquet n’ajoute aucune dépendance externe.
Stratégie de sortie
Section intitulée « Stratégie de sortie »Les écrans ne parlent qu’à /v1/editeur/* par le client typé. Les rapatrier dans le back-office ne demanderait que de déplacer les routes et de retirer le client OIDC dédié, sans toucher à l’API.