Enterprise Domain
Definition
Une enterprise represente un tenant principal de la console d'administration.
Le type utile pour la console est enterprise. Le type personal existe dans le modele de donnees mais ne doit pas etre melange a la liste des entreprises administrables.
Champs observes
Champs frontend et backend actuellement relies au domaine:
idnametypelogo_idFrontVersionmaxOrganisationsmaxUsersenvironnementcreated_atupdated_at
References:
Regles metier
Visibilite
- un
super-adminpeut voir toutes les entreprises de typeenterprise - un
administrateurne peut voir que l'entreprise referencee parprofile.enterprise_id - un
utilisateurne peut pas appeler l'API de liste des entreprises
Important:
- une entreprise de type
personalne doit jamais apparaitre dans la liste des entreprises - ces entreprises sont des faux tenants techniques utilises pour la gestion des comptes personnels
- si
profile.enterprise_idpointe sur une entreprisepersonal, la liste retournee pour unadministrateurdoit etre vide
Implementation actuelle:
Tri et filtrage
- la liste doit etre triee par
name - la liste doit exclure les enregistrements dont
type != 'enterprise' - en particulier, les enregistrements
type = 'personal'sont exclus par defaut
Contexte d'entreprise courant
Le frontend maintient un contexte d'entreprise courant.
- pour un
super-admin, ce contexte peut etre change dynamiquement - pour un
administrateur, l'entreprise de reference provient deprofile.enterprise_id
Reference:
Selection par un super-admin
Le super-admin peut changer l'entreprise courante en mettant a jour son profile.enterprise_id.
Impact:
- la selection d'entreprise n'est pas seulement un etat frontend
- elle est persistee dans Supabase sur
profiles
Flux applicatifs
Lister les entreprises
Flux actuel:
- le frontend recupere le token de session Supabase
- le frontend appelle
GET /enterprisessur le backend - le backend verifie le token
- le backend charge
profileetrole - le backend retourne uniquement les entreprises de type
enterprisevisibles selon le role
Reference frontend:
Reference backend:
Charger une entreprise par identifiant
Etat actuel:
- le frontend appelle encore Supabase directement via
fetchById() - ce flux n'est pas encore migre vers
back
Impact:
- il est normal d'observer encore des appels
rest/v1/enterprises?id=eq.<id>
Decisions de conception
Pourquoi le backend filtre explicitement
La regle de visibilite est appliquee explicitement dans le service backend, meme si une partie des droits pourrait aussi etre exprimee via RLS.
Objectifs:
- rendre la regle lisible dans le code applicatif
- permettre des tests unitaires et d'integration precis
- eviter de faire reposer toute la comprehension metier sur des policies SQL
Pourquoi garder une migration progressive
Le domaine enterprises est migre pas a pas pour reduire le risque:
- d'abord la lecture de liste
- ensuite la lecture par identifiant
- ensuite les mutations
Cette approche permet de verifier chaque flux en condition reelle avant de migrer le suivant.
Risques connus
- certaines operations
enterpriserestent directes depuis le frontend vers Supabase - le contexte d'entreprise courant cote frontend depend encore de
fetchById()en direct - il existe une dependance forte a
profiles.enterprise_idpour le comportement des admins
Checklist de modification
Si une evolution touche le domaine enterprises, verifier:
- le role
super-admingarde-t-il une vision globale ? - le role
administrateurreste-t-il borne a sonenterprise_id? - les enregistrements de type
personalrestent-ils exclus ? - le tri par
nameest-il preserve ? - les tests unitaires et d'integration ont-ils ete adaptes ?