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)¶
- CP-001
— TenantContext + Bases de l'authentification — Toutes les autres étapes en dépendent. Commencez par là.
- CP-004
— Service backend de piste d'audit — Peut démarrer immédiatement après CP-001. Pas de front-end. Infrastructure partagée.
- CP-002
— Tenant CRUD + Lifecycle — Nécessite CP-001. Entité métier principale.
- CP-003
— User Entity + Invitation Flow — Nécessite CP-001 + CP-002. Permet l'authentification.
- CP-014
— Permission Resolution + Module Gating — Back-end uniquement. Nécessite CP-003.
- 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¶
- CP-015
— Améliorations de l'interface utilisateur de gestion des utilisateurs — Badges de statut + détection multi-tenant. Nécessite CP-003.
- CP-006
— Configuration par pays : tranches d'imposition + cotisations sociales — Données de référence backend uniquement. Nécessite CP-001 + CP-002.
- 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.
- 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.
- 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.
- CP-005
— Structure organisationnelle + Données de référence — Nécessite CP-001, CP-002, CP-004.
- CP-017
— CRUD employés + Matricule — Gestion des employés en ligne. Nécessite CP-005.
- 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¶
- CP-008
— Formulaire d'auto-inscription + Détection des doublons — Étape 1 de l'intégration. Nécessite CP-001–CP-007.
- CP-022
— Vérification par e-mail + Flux d'essai/de paiement — Vérification du token + transition de statut. Nécessite CP-008.
- 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.
- CP-024
— Pipeline de provisionnement — Pipeline asynchrone en 9 étapes. Nécessite CP-022.
- CP-021
— Interface de sélection des modules — Navigation + cartes de vente incitative. Nécessite CP-020.
- CP-010
— Backend de notification + modèles — Nécessaire pour CP-024 pour les e-mails d'intégration.
- 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¶
- CP-011
— Backend de changement de tenant + interface utilisateur du sélecteur — Fonctionnalité de l'espace de gestion. Nécessite uniquement CP-003.
- CP-025
— Gestion des abonnements + Ajout/Suppression de modules — Frontend pour la facturation. Nécessite CP-009.
- CP-026
— Cycle de facturation + Conformité XOF — Basculateur de cycle de facturation. Nécessite CP-009.
- CP-027
— Interface utilisateur de notification — Sonnerie, menu déroulant, mise en file d'attente hors ligne. Nécessite CP-010.
- CP-028
— Expérience utilisateur de changement de tenant — Miniatures du tableau de bord, performances. Nécessite CP-011.
- CP-013
— Canal B : le CRM crée un tenant + e-mails + authentification — Petit. Contrat d'interface pour le module CRM.
- 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.
- 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)