Aller au contenu

Index des articles :

Module du plan de contrôle : control-plane Nombre total d'articles : 30 Source : docs/architecture/control-plane-arch.md (approuvé) Référence PRD : docs/prd/control-plane-prd.md Référence de conception : docs/design/control-plane-design.md Contexte de marque : [LES DEUX] Papillon HR Suite + ALTARYS ENTERPRISE HR Suite Date : 27/02/2026 Dernière mise à jour : 10/03/2026 (CP-003, CP-004, CP-005, CP-006, CP-007, CP-008, CP-009, CP-010, CP-011, CP-012, CP-013 scindés)


Graphique des dépendances

CP-001 (TenantContext + Auth Foundation)
    ├── CP-001bis (Country Reference Data: Attendance Config + Overtime Bands) ← Platform DB only, no business logic
    ├── CP-002 (Tenant CRUD + Lifecycle)
    │       ├── CP-005 (Org Structure + Reference Data) ← also depends on CP-004
    │       │       └── CP-017 (Employee CRUD + Matricule)
    │       │               └── CP-018 (Employee Offline + Manager Hierarchy + PRE_HIRE)
    │       ├── CP-006 (Country Config: Tax Brackets + Social Contributions)
    │       │       └── CP-019 (Country Config: Holidays + Caching + Validation)
    │       ├── CP-007 (Module Gating Backend: Interceptor + BUDMGT Rule)
    │       │       └── CP-020 (Module Gating: Suspended Tenant + Module Catalog API)
    │       │               └── CP-021 (Module Gating Frontend: Navigation + Upsell Cards)
    │       └── CP-008 (Self-Registration Form + Duplicate Detection) ← depends on CP-001 through CP-007
    │               ├── CP-022 (Email Verification + Trial/Payment Flow)
    │               │       └── CP-024 (Provisioning Pipeline)
    │               ├── CP-023 (Module Selection + Pack Detection UI)
    │               ├── CP-013 (Channel B: CRM Creates Tenant + Emails + Auth)
    │               │       └── CP-030 (Channel B: Opt-Out + Commission + Provisioning)
    ├── CP-003 (User Entity + Invitation Flow) ← also depends on CP-002
    │       ├── CP-014 (Permission Resolution + Module Gating)
    │       ├── CP-015 (User Management UI Enhancements)
    │       ├── CP-010 (Notification Backend + Templates)
    │       │       └── CP-027 (Notification UI)
    │       └── CP-011 (Tenant Switch Backend + Switcher UI)
    │               └── CP-028 (Tenant Switch UX)
    ├── CP-004 (Audit Trail Backend Service)
    │       ├── CP-016 (Audit Trail UI + Access Control)
    │       └── CP-005 (Org Structure + Reference Data)
    └── CP-009 (Invoice Generation + Pricing Engine) ← depends on CP-001 through CP-005
            ├── CP-025 (Subscription Management + Module Add/Remove)
            └── CP-026 (Billing Cycle + XOF Compliance)

CP-012 (Admin Console: Tenant List + Payments + Suspension) ← depends on CP-001 through CP-010
    └── CP-029 (Admin Console: Module Override + Country Config + Metrics)

Liste des récits

# Story ID Title Depends On Complexity Status
1 CP-001 TenantContext + Auth Foundation None L ✅ Merged
1b CP-001bis Country Reference Data: Attendance Config + Overtime Bands CP-001 S 🔲 Not started
2 CP-002 Tenant CRUD + Lifecycle State Machine CP-001 L ✅ Merged
3 CP-003 User Entity + Invitation Flow CP-001, CP-002 M 🔲 Not started
4 CP-004 Audit Trail Backend Service CP-001 M 🔲 Not started
5 CP-005 Organization Structure + Reference Data CP-001, CP-002, CP-004 M 🔲 Not started
6 CP-006 Country Config: Tax Brackets + Social Contributions CP-001, CP-002 S 🔲 Not started
7 CP-007 Module Gating Backend (Interceptor + BUDMGT Rule) CP-001, CP-002 M 🔲 Not started
8 CP-008 Self-Registration Form + Duplicate Detection CP-001–CP-007 M 🔲 Not started
9 CP-009 Invoice Generation + Pricing Engine CP-001–CP-005 L 🔲 Not started
10 CP-010 Notification Backend Service + Templates CP-001–CP-003 M 🔲 Not started
11 CP-011 Tenant Switch Backend + Switcher UI CP-003 M 🔲 Not started
12 CP-012 Admin Console: Tenant List + Payments + Suspension CP-001–CP-010 L 🔲 Not started
13 CP-013 Channel B: CRM Creates Tenant + Emails + Auth CP-008 S 🔲 Not started
14 CP-025 Subscription Management + Module Add/Remove CP-009 M 🔲 Not started
15 CP-026 Billing Cycle + XOF Compliance CP-009 M 🔲 Not started
16 CP-027 Notification UI (Bell, Unread Count, Offline Queuing) CP-010 S 🔲 Not started
17 CP-028 Tenant Switch UX (Performance, Dashboard, Roles) CP-011 S 🔲 Not started
18 CP-029 Admin Console: Module Override + Country Config + Metrics CP-012 M 🔲 Not started
19 CP-030 Channel B: Opt-Out + Commission + Provisioning CP-013 S 🔲 Not started
20 CP-014 Permission Resolution + Module Gating CP-003 M 🔲 Not started
21 CP-015 User Management UI Enhancements CP-003 S 🔲 Not started
22 CP-016 Audit Trail UI + Access Control CP-004 M 🔲 Not started
23 CP-017 Employee CRUD + Matricule CP-005 L 🔲 Not started
24 CP-018 Employee Offline + Manager Hierarchy + PRE_HIRE CP-017 M 🔲 Not started
25 CP-019 Country Config: Holidays + Caching + Validation CP-006 S 🔲 Not started
26 CP-020 Module Gating: Suspended Tenant + Module Catalog API CP-007 S 🔲 Not started
27 CP-021 Module Gating Frontend: Navigation + Upsell Cards CP-020 M 🔲 Not started
28 CP-022 Email Verification + Trial/Payment Flow CP-008 M 🔲 Not started
29 CP-023 Module Selection + Pack Detection UI CP-008 M 🔲 Not started
30 CP-024 Provisioning Pipeline CP-022 L 🔲 Not started

Ordre de mise en œuvre

Séquence recommandée pour le profil « DEVELOPER » :

Semaine 1 — Bases (peut être partiellement mise en parallèle)

  1. CP-001

— TenantContext + Bases de l'authentification — Toutes les autres étapes en dépendent. Commencez par là.

  1. CP-004

— Service backend de piste d'audit — Peut démarrer immédiatement après CP-001. Pas de front-end. Infrastructure partagée.

  1. CP-002

— Tenant CRUD + Lifecycle — Nécessite CP-001. Entité métier principale.

  1. CP-003

— User Entity + Invitation Flow — Nécessite CP-001 + CP-002. Permet l'authentification.

  1. CP-014

— Permission Resolution + Module Gating — Back-end uniquement. Nécessite CP-003.

  1. CP-016

— Interface utilisateur de piste d'audit + contrôle d'accès — Front-end pour l'audit. Nécessite CP-004.

Semaine 2 — Données de référence + filtrage

  1. CP-015

— Améliorations de l'interface utilisateur de gestion des utilisateurs — Badges de statut + détection multi-tenant. Nécessite CP-003.

  1. CP-006

— Configuration par pays : tranches d'imposition + cotisations sociales — Données de référence backend uniquement. Nécessite CP-001 + CP-002.

  1. CP-019

— Configuration par pays : jours fériés + mise en cache + validation — Étend CP-006 avec les jours fériés, les grilles salariales et la mise en cache.

  1. CP-007

— Contrôle d'accès aux modules (back-end) — Intercepteur du mécanisme de revenus + règle BUDMGT. Nécessite CP-001 + CP-002.

  1. CP-020

— Contrôle d'accès aux modules : tenant suspendu + API du catalogue — Étend CP-007 avec les écritures suspendues + l'endpoint du catalogue.

  1. CP-005

— Structure organisationnelle + Données de référence — Nécessite CP-001, CP-002, CP-004.

  1. CP-017

— CRUD employés + Matricule — Gestion des employés en ligne. Nécessite CP-005.

  1. CP-018

— Employés hors ligne + Hiérarchie des responsables + PRE_HIRE — Finalisation hors ligne en priorité. Nécessite CP-017.

Semaines 2–3 — Tranches d'intégration

  1. CP-008

— Formulaire d'auto-inscription + Détection des doublons — Étape 1 de l'intégration. Nécessite CP-001–CP-007.

  1. CP-022

— Vérification par e-mail + Flux d'essai/de paiement — Vérification du token + transition de statut. Nécessite CP-008.

  1. CP-023

— Sélection de modules + interface utilisateur de détection de packs — Interface utilisateur de l'étape 2. Nécessite CP-008. Peut être exécuté en parallèle avec CP-022.

  1. CP-024

— Pipeline de provisionnement — Pipeline asynchrone en 9 étapes. Nécessite CP-022.

  1. CP-021

— Interface de sélection des modules — Navigation + cartes de vente incitative. Nécessite CP-020.

  1. CP-010

— Backend de notification + modèles — Nécessaire pour CP-024 pour les e-mails d'intégration.

  1. CP-009

— Génération de factures + moteur de tarification — Chiffre d'affaires. Nécessite le nombre d'employés de CP-005.

Semaine 3 — Histoires complémentaires + fractionnées

  1. CP-011

— Backend de changement de tenant + interface utilisateur du sélecteur — Fonctionnalité de l'espace de gestion. Nécessite uniquement CP-003.

  1. CP-025

— Gestion des abonnements + Ajout/Suppression de modules — Frontend pour la facturation. Nécessite CP-009.

  1. CP-026

— Cycle de facturation + Conformité XOF — Basculateur de cycle de facturation. Nécessite CP-009.

  1. CP-027

— Interface utilisateur de notification — Sonnerie, menu déroulant, mise en file d'attente hors ligne. Nécessite CP-010.

  1. CP-028

— Expérience utilisateur de changement de tenant — Miniatures du tableau de bord, performances. Nécessite CP-011.

  1. CP-013

— Canal B : le CRM crée un tenant + e-mails + authentification — Petit. Contrat d'interface pour le module CRM.

  1. CP-030

— Canal B : désinscription + commission + provisionnement — Complète le canal B. Nécessite CP-013.

Semaine 3 à Sprint 2 — Console d'administration CP-012

— Console d'administration : liste des tenants + paiements + suspension — Application d'administration principale. Dépend de CP-001 à CP-010.

  1. CP-029

— Console d'administration : remplacement de module + configuration par pays + métriques — Étend l'application d'administration. Nécessite CP-012.


Remarques sur la parallélisation

Dans les limites des contraintes de dépendance, ces paires peuvent être développées en parallèle : - CP-004 (Audit) ‖ CP-002 (Tenant) — les deux dépendent uniquement de CP-001 - CP-006 (Configuration du pays) ‖ CP-007 (Contrôle d'accès aux modules) — les deux dépendent de CP-001 + CP-002 - CP-014 (Résolution des autorisations) ‖ CP-015 (Interface utilisateur de gestion des utilisateurs) ‖ CP-016 (Interface utilisateur d'audit) — tous indépendants après CP-003/CP-004 - CP-019 (Jours fériés + Cache) ‖ CP-020 (Suspendu + Catalogue) — sous-tâches indépendantes de CP-006/CP-007 - CP-022 (Vérification de l'adresse e-mail) ‖ CP-023 (Interface utilisateur de sélection de module) — les deux dépendent de CP-008 - CP-010 (Backend des notifications) ‖ CP-011 (Changement de tenant) — les deux dépendent de CP-003 - CP-009 (Facturation) ‖ CP-008 (Inscription) — chaînes de dépendances différentes - CP-025 (Interface utilisateur d'abonnement) ‖ CP-026 (Cycle de facturation) — les deux dépendent de CP-009 - CP-027 (Interface utilisateur de notification) ‖ CP-028 (Expérience utilisateur de changement de tenant) — indépendants l'un de l'autre - CP-013 (API du canal B) ‖ CP-012 (Console d'administration) — chaînes de dépendances différentes - CP-029 (Fonctionnalités supplémentaires d'administration) ‖ CP-030 (Fonctionnalités supplémentaires du canal B) — chaînes de dépendances différentes


Historique des scissions

Les stories ont été scindées le 03/10/2026 afin de réduire le nombre de cas d'acceptation (AC) par story (objectif : 2 à 4 AC chacune) :

Original ACs Split Into ACs Each
CP-003 (9 ACs) AC-017–AC-025 CP-003 (3), CP-014 (3), CP-015 (2) 3, 3, 2
CP-004 (8 ACs) AC-026–AC-033 CP-004 (4), CP-016 (4) 4, 4
CP-005 (12 ACs) AC-034–AC-045 CP-005 (4), CP-017 (4), CP-018 (4) 4, 4, 4
CP-006 (6 ACs) AC-046–AC-051 CP-006 (3), CP-019 (3) 3, 3
CP-007 (9 ACs) AC-052–AC-060 CP-007 (4), CP-020 (2), CP-021 (3) 4, 2, 3
CP-008 (13 ACs) AC-061–AC-073 CP-008 (4), CP-022 (4), CP-023 (3), CP-024 (2) 4, 4, 3, 2
CP-009 (10 ACs) AC-074–AC-083 CP-009 (4), CP-025 (3), CP-026 (3) 4, 3, 3
CP-010 (7 ACs) AC-082–AC-088 → renumbered AC-107–AC-113 CP-010 (4), CP-027 (3) 4, 3
CP-011 (6 ACs) AC-089–AC-094 CP-011 (3), CP-028 (3) 3, 3
CP-012 (split prior) CP-012, CP-029
CP-013 (split prior) CP-013, CP-030

Renumérotation des AC (CP-010) : les AC-082 à AC-088 d'origine entraient en conflit avec les AC-082 à AC-083 de CP-009. Renumérotés en AC-107 à AC-113.

Renumérotation des AC (CP-002) : L'AC-017 (tâche planifiée pour ACTIVE_INCOMPLETE → SUSPENDED) est entré en conflit avec l'AC-017 (liste des utilisateurs) du CP-003. Renuméroté en AC-114.


Carte des versions de la migration Flyway

Attribué par ordre de mise en œuvre pour éviter les conflits. Aucune lacune n'est autorisée au sein de chaque base de données.

Base de données de la plateforme :

Version Story Migration
V001 CP-002 create_tenant
V002 CP-003 create_users_roles_permissions
V003 CP-006 create_country_config_tax_social
V004 CP-019 create_country_config_holidays_grids
V005 CP-010 create_notification_templates

Base de données des tenants :

Version Story Migration
V001 CP-002 create_tenant_settings
V002 CP-004 create_audit_entry_partitioned
V003 CP-005 create_org_unit
V004 CP-005 create_position_category (+ seed CI data)
V005 CP-017 create_employee (+ matricule_counters)
V006 CP-018 create_manager_history
V007 CP-009 create_invoice_payment
V008 CP-009 create_counters (invoice_counters)
V009 CP-010 create_notification

Rapport sur la qualité de la décomposition

  • [x] Exhaustivité : les 13 tranches verticales de l'architecture sont toutes couvertes (8 d'entre elles sont divisées en sous-stories, soit 30 au total)
  • [x] Aucun critère d'acceptation orphelin : les 7 user stories du PRD (US-CP-001 à US-CP-007) sont toutes couvertes
  • [x] Aucun écran orphelin : les 22 écrans de conception (16 pour les tenants + 6 pour l'administration) sont tous affectés à des stories
  • [x] Autonomie : chaque fichier de story comprend toutes les entités, les DTO, les endpoints, les états de l'interface utilisateur, la traduction en français et les critères d'acceptation nécessaires à la mise en œuvre
  • [x] Exactitude des dépendances : DAG vérifié — aucune dépendance circulaire, aucune story ne dépend d'une story ultérieure
  • [x] Identifiants cohérents : CP-001 à CP-030
  • [x] Texte en français inclus : tous les états de l'interface utilisateur comportent le texte français exact issu du cahier des charges de conception
  • [x] Spécifique aux règles OHADA : les règles réglementaires incluent les références aux articles et les formules
  • [x] Hors champ explicit : chaque story énumère ce qu'elle NE couvre PAS
  • [x] Critères testables : critères d'acceptation au format Given/When/Then (AC-001–AC-094, AC-107–AC-114)
  • [x] Dimensionnement des stories : toutes les stories comportent 2 à 4 critères d'acceptation (après découpage)