Organisation (Organization)
En une phrase : l'acteur économique partenaire de Travelise — l'entité avec laquelle on commerce, qui dispose de son propre portail et ne voit que ses propres données.
Rôle métier
L'organisation est la brique du cloisonnement multi-portails : chaque partenaire (et l'équipe Travelise elle-même) agit à travers une organisation, et une requête « en tant qu'organisation » ne montre que les données de celle-ci. Deux types existent aujourd'hui (OrganizationType) :
reseller— revendeur : émet des cartes-cadeaux de road-trip et suit leurs activations ;region— région partenaire : le territoire/l'office à travers lequel des tours sont vendus.
Le README produit évoque aussi des agences et des acteurs touristiques ; côté données, seuls
reselleretregionsont modélisés à ce jour.
L'organisation porte un contact_email institutionnel (facultatif), distinct des e-mails personnels de ses membres.
Cycle de vie
pending → approved ⇄ suspended — jamais de retour à pending.
pending— candidature : le flux public d'auto-inscription crée l'organisation et son organisateur, mais rien n'est actif (pas d'e-mail, pas d'accès).approved— un super-admin a validé la candidature : l'organisateur reçoit alors (une seule fois) son invitation, et les membres peuvent agir sous le contexte de l'organisation.suspended— sanction / gel : l'accès de tous les membres à ce portail est coupé immédiatement, sans toucher à leurs comptes personnels ni à leurs autres organisations.
Détail des flux : Identité & accès — Candidature d'organisation.
L'organisation par défaut « Travelise »
Une organisation revendeur nommée Travelise existe dans tous les environnements. C'est la « maison » : quand une carte-cadeau est émise sans désigner de partenaire (génération interne, import de l'ancien système), elle est rattachée à Travelise. Son nom est réservé (le signup public le refuse).
Relations métier
| Relation | Sens métier |
|---|---|
| ↔ Utilisateurs (via Membership) | Le personnel de l'organisation ; chaque membre y tient un rôle (manager / employee) propre à cette organisation |
← Codes d'activation (issuing_organisation_id) | Les cartes-cadeaux que l'organisation a émises — la base de son suivi commercial et de sa facturation ; supprimer l'organisation emporte ses codes. Le listing super-admin des organisations expose par ligne le total émis et le stock restant, comptés depuis la vue de statut |
← Tours (partner_organization_id) | Les road-trips vendus à travers ce partenaire ; une organisation ne peut pas être supprimée tant qu'elle a des tours (on ne fait pas disparaître un catalogue en silence) |
← Tours (region_organization_id) | Pour une organisation de type region : les road-trips rattachés à son territoire ; lien facultatif et informatif — supprimer la région détache ses tours (SET NULL) |
→ Image (primary_image_id) | L'image principale (vitrine) de l'organisation — pour une region, le visuel des cartes de sélection présentées au voyageur qui démarre un tour ; facultative, supprimer l'image ne fait que rompre le lien (SET NULL) |
| ← Rôles scopés | Les attributions de rôle des membres sont rattachées à l'organisation (fonction « teams ») |
| ← Journal d'audit (subject) | Les actions dont l'organisation est l'objet (émission de lots de codes, changement de statut…) |
Règles métier
- Une organisation
approvedseulement peut agir : le statut est le disjoncteur de tout le portail. - Le statut n'est jamais modifiable par l'organisation elle-même — seul un super-admin approuve ou suspend.
- L'unicité du nom est contrôlée à la création via l'API, mais pas en base : l'import de l'ancien système fait du find-or-create par nom exact.
- Le trombinoscope (membres + rôles + statut d'appartenance) est la vue de référence de l'organisation ; le rôle d'un membre n'a de sens que rapporté à cette organisation.
- L'image principale est curatée par la plateforme : seul un super-admin l'attache ou la détache (
primary_image_idest interdit aux managers surPATCH /api/organizations/{id}) — c'est un visuel de vitrine, pas un champ de profil libre.

