Aller au contenu principal

Organisations et unités métier

L'écran Organisations et unités métier permet de construire la hiérarchie du tenant : les organisations, les unités métier qui leur appartiennent (avec une unité parente facultative), leur statut et leur description. Chaque changement est versionné et audité. Chemin dans le portail : /admin/organizations. Il sert aux administrateurs du tenant (tenant_admin) ; les autres membres du tenant le lisent.

Ce que montre l'écran​

Deux tableaux, l'un sous l'autre.

Organisations, avec Actualiser et Nouvelle organisation (affiché à tenant_admin seulement) :

ColonneContenu
SlugIdentifiant de l'organisation.
NomNom affiché.
DescriptionTexte libre (2000 caractères au plus).
Statutactive ou archived.
VersionNuméro de version, incrémenté à chaque changement.
Modifié parAuteur du dernier changement.
Mis à jourDate du dernier changement.

Unités métier, avec les filtres Organisation et Unité parente (identifiants) et le bouton Filtrer, puis Actualiser et Nouvelle unité métier (affiché à tenant_admin seulement) :

ColonneContenu
SlugIdentifiant de l'unité.
NomNom affiché.
OrganisationIdentifiant de l'organisation de l'unité.
Unité parenteIdentifiant de l'unité parente, vide pour une unité de premier niveau.
Statutactive ou archived.
VersionNuméro de version.
Mis à jourDate du dernier changement.

Un clic sur une ligne ouvre un panneau latéral avec la ligne elle-même (il n'y a pas de route de détail). Les deux listes sont paginées par slug. États vides : Aucune organisation et Aucune unité métier.

Actions​

Bouton ou actionCe qu'il faitAppel d'APIRôles
Ouverture de l'écran, ActualiserLit les organisations.GET /v1/organizationsMembre du tenant
Nouvelle organisation puis CréerFormulaire Slug (obligatoire), Nom (obligatoire), Description, Métadonnées (JSON, {} par défaut).POST /v1/organizationstenant_admin
Modifier (organisation)Boîte de dialogue Nom, Description, Statut (active, archived), Version attendue, puis Modifier.PATCH /v1/organizations/{id}tenant_admin
Organisation, Unité parente puis FiltrerRestreint les unités métier à une organisation ou à une unité parente.GET /v1/business-unitsMembre du tenant
Nouvelle unité métier puis CréerFormulaire Organisation (obligatoire, suggérée parmi les organisations), Unité parente (suggérée parmi les unités), Slug (obligatoire), Nom (obligatoire), Description, Métadonnées (JSON).POST /v1/business-units (suggestions : GET /v1/organizations, GET /v1/business-units)tenant_admin
Modifier (unité métier)Même boîte de dialogue que pour une organisation.PATCH /v1/business-units/{id}tenant_admin
Clic sur une ligneAffiche la ligne dans un panneau latéral.aucunMembre du tenant

Version attendue protège contre les changements concurrents : quand elle est remplie et diffère de la version courante, le serveur refuse le changement avec version_conflict.

Rôles​

D'après services/control-plane/src/eai/domains/tenancy/hierarchy.py : les listes exigent un principal rattaché à un tenant (require_tenant) ; la création et les changements exigent tenant_admin (platform_admin passe toujours). Le portail masque les boutons de création aux autres rôles (create.roles: ["tenant_admin"]) mais affiche Modifier à tous ; le serveur le refuse avec forbidden.

Tâches courantes​

Créer une organisation et ses unités métier​

  1. Créer l'organisation. Bouton Nouvelle organisation : Slug (retail), Nom, Description, puis Créer. Résultat attendu : le message Créé et une ligne en version 1. En cas d'échec : conflict (HTTP 409) si le slug existe ; invalid_metadata (HTTP 422) si les métadonnées sont refusées.
  2. Créer une unité de premier niveau. Bouton Nouvelle unité métier : choisissez l'Organisation, laissez Unité parente vide, saisissez Slug et Nom, puis Créer. Résultat attendu : une nouvelle ligne dont l'Unité parente est vide. En cas d'échec : not_found si l'identifiant d'organisation est inconnu.
  3. Créer une unité enfant. Même formulaire avec Unité parente sur l'unité créée ci-dessus. Résultat attendu : une ligne avec son parent. En cas d'échec : invalid_hierarchy (HTTP 422) si le parent appartient à une autre organisation.

Archiver une organisation sans perdre un changement concurrent​

  1. Lire la version courante. Regardez la colonne Version de la ligne. Résultat attendu : un nombre, par exemple 3. En cas d'échec : cliquez Actualiser.
  2. Modifier avec la version attendue. Menu de la ligne > Modifier, mettez Statut à archived et Version attendue à 3, puis Modifier. Résultat attendu : le message Terminé, statut archived, version 4. En cas d'échec : version_conflict (HTTP 409) signifie qu'une autre personne l'a modifiée entre-temps ; rechargez et recommencez.

Lister les unités d'une organisation​

  1. Filtrer. Collez l'identifiant de l'organisation dans Organisation et cliquez Filtrer. Résultat attendu : seules les unités de cette organisation. En cas d'échec : not_found si l'identifiant n'est pas valide.

Dépannage​

SymptômeCauseCorrection
Pas de bouton Nouvelle organisationVos rôles ne contiennent pas tenant_admin.Adressez-vous à un administrateur du tenant.
forbidden (HTTP 403) sur ModifierSeul tenant_admin modifie la hiérarchie.Adressez-vous à un administrateur du tenant.
version_conflict (HTTP 409)Version attendue diffère de la version courante.Actualisez, lisez la nouvelle version, appliquez de nouveau votre changement.
invalid_hierarchy (HTTP 422)L'unité parente appartient à une autre organisation.Choisissez un parent de la même organisation.
invalid_metadata (HTTP 422)Les métadonnées violent une contrainte de la base.Corrigez le JSON de Métadonnées.
conflict (HTTP 409) sur CréerLe slug existe déjà.Choisissez un autre slug.

Pages liées​