Aller au contenu

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.

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.

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ôles editeur_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.
  • 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.

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.

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.