Aller au contenu

Catalogue & abonnements

À quoi ça sert

Ce module gère le catalogue commercial de Jigi : les plans d'abonnement vendus aux tenants, les fonctionnalités (features) qui composent ces plans, les add-ons vendables séparément, et les codes promo applicables à la souscription. C'est ici que se construit l'offre commerciale affichée aux futurs clients lors de leur inscription.

Prérequis

Prérequis

  • Modules sous licence : PLATFORM (espace opérateur Jigi)
  • Permissions : platform.catalog.manage, platform.subscription.admin
  • Rôles : JIGI_OPERATOR, JIGI_ADMIN

Comment ça marche

Gérer les plans (écran principal, dans le menu)

  1. Ouvrir Catalogue → Plans (/admin-jigi/catalog/plans), seul écran du catalogue relié à la navigation.
  2. La liste affiche tous les plans existants (actifs et archivés). Cliquer sur Créer un plan ouvre une boîte de dialogue à 4 onglets :
  3. Identité — nom, description, code interne du plan.
  4. Tarification — prix mensuel/annuel.
  5. Quotas — limites incluses (nombre d'utilisateurs, de sociétés, etc. selon le plan).
  6. Visibilité — si le plan est visible publiquement à l'inscription ou réservé à un usage commercial interne.
  7. Actions disponibles sur un plan existant : Modifier (rouvre le même formulaire à 4 onglets), Activer/Archiver (bascule sa disponibilité sans le supprimer), Dupliquer (crée une copie à ajuster, pratique pour décliner une offre existante), et Consulter l'historique (journal des modifications du plan).
  8. Un plan archivé n'est plus proposé aux nouveaux clients mais reste appliqué aux tenants qui l'utilisent déjà.

Gérer les fonctionnalités (accessible par URL directe)

  1. Naviguer directement vers /admin-jigi/catalog/features — cet écran n'apparaît pas dans le menu latéral.
  2. Chaque fonctionnalité est définie par : un code technique unique, un nom en français (nameFr) et en anglais (nameEn), un module parent (RH, comptabilité, réservations…), un statut, une icône et un indicateur « visible dans le comparatif » qui contrôle son apparition dans le tableau de comparaison des plans affiché aux prospects.
  3. Ces fonctionnalités sont ensuite rattachées aux plans pour définir précisément ce qu'inclut chaque offre.

Gérer les add-ons (accessible par URL directe)

  1. Naviguer directement vers /admin-jigi/catalog/add-ons — également absent du menu.
  2. Les add-ons sont présentés sous forme de cartes et se déclinent en trois types : FEATURE (déblocage d'une fonctionnalité à la carte), USER_PACK (pack de sièges utilisateurs supplémentaires) et MODULE (module entier vendu en complément d'un plan de base).
  3. Un add-on peut être activé ou désactivé indépendamment de sa modification, pour le retirer temporairement de la vente sans perdre sa configuration.

Gérer les codes promo (accessible par URL directe)

  1. Naviguer directement vers /admin-jigi/promo-codes — non plus relié au menu.
  2. Trois types de remise sont supportés : PCT (pourcentage de réduction), FIXED (montant fixe déduit) et MONTHS_FREE (mois gratuits offerts).
  3. Créer, modifier ou supprimer un code promo depuis cet écran ; le code peut ensuite être saisi par un prospect lors de son inscription pour bénéficier de la remise.

Qui peut faire quoi

Permission requise Rôles concernés
platform.catalog.manage JIGI_OPERATOR, JIGI_ADMIN
platform.subscription.admin JIGI_OPERATOR, JIGI_ADMIN
Action JIGI_OPERATOR JIGI_ADMIN
Gérer les plans, fonctionnalités, add-ons (platform.catalog.manage) ✅ ✅
Gérer les codes promo (platform.subscription.admin) ✅ ⚠️ non attribué dans les migrations actuelles

Historique de la permission catalogue

platform.catalog.manage était initialement manquante pour JIGI_OPERATOR, ce qui provoquait un « Accès refusé » au chargement de la page tenant (sélecteur de plan). Corrigée par la migration V138__operator_catalog_permission.sql, qui l'a attribuée à la fois à JIGI_OPERATOR et JIGI_ADMIN.

Détails techniques

Détails techniques
  • Endpoints Plans (PlanAdminController, base /admin-jigi/catalog/plans), tous en platform.catalog.manage : GET/POST racine, GET/PUT/DELETE /{planId}, POST /{planId}/activate, /archive, /duplicate, GET /{planId}/audit.
  • Endpoints Fonctionnalités (FeatureAdminController, base /admin-jigi/catalog/features), en platform.catalog.manage : GET/POST racine, GET /all, GET/PUT /{code}.
  • Endpoints Add-ons (AddOnAdminController, base /admin-jigi/catalog/add-ons), en platform.catalog.manage : GET/POST racine, GET/PUT/DELETE /{addOnId}, POST /{addOnId}/activate.
  • Endpoints Codes promo (PromoCodeAdminController, base /admin-jigi/promo-codes), en platform.subscription.admin : GET/POST racine, GET/PUT/DELETE /{id}.
  • Frontend : frontend/src/app/admin-jigi/catalog/plans/page.tsx, catalog/features/page.tsx, catalog/add-ons/page.tsx, promo-codes/page.tsx — ces trois derniers ne sont pas reliés dans layout.tsx.
  • Les pages catalogue appellent directement fetch() plutôt que le client Axios partagé utilisé ailleurs dans admin-jigi — une incohérence technique à connaître si un bug de headers (tenant, auth) apparaît spécifiquement sur ces écrans.

Cas d'erreur et FAQ

Comment retirer temporairement un plan de la vente sans le supprimer ? Utilisez le bouton Archiver sur la fiche du plan. Les tenants qui l'utilisent déjà continuent de fonctionner normalement ; seul l'affichage aux nouveaux prospects change.

Comment créer une offre proche d'une offre existante sans repartir de zéro ? Utilisez Dupliquer sur le plan source, puis ajustez le nom, les tarifs ou les quotas de la copie.

Où gère-t-on les modules vendus en supplément d'un plan ? Dans les add-ons, de type MODULE. Les packs de sièges supplémentaires sont de type USER_PACK, et le déblocage ponctuel d'une fonctionnalité est de type FEATURE.

Un opérateur me dit ne pas trouver l'écran des codes promo, où est-il ? Il n'est pas dans le menu latéral d'admin-jigi. Il faut naviguer directement vers /admin-jigi/promo-codes.

Une fonctionnalité doit-elle obligatoirement apparaître dans le tableau comparatif public ? Non — l'indicateur « visible dans le comparatif » de l'écran Fonctionnalités permet de créer des fonctionnalités internes ou en test qui n'apparaissent pas aux prospects.

Voir aussi