Skip to content

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 reseller et region sont modélisés à ce jour.

L'organisation porte un contact_email institutionnel (facultatif), distinct des e-mails personnels de ses membres.

Cycle de vie

pendingapprovedsuspendedjamais 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

RelationSens 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ésLes 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 approved seulement 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_id est interdit aux managers sur PATCH /api/organizations/{id}) — c'est un visuel de vitrine, pas un champ de profil libre.

Contributors

No contributors

Changelog

No recent changes