Aller au contenu

Vision de la plateforme — Hybride PRD+FSD

Produit : Papillon HR Suite + ALTARYS ENTERPRISE HR Suite Périmètre géographique : CI (Côte d'Ivoire) — MVP
Version : 1.0
Date : 25/02/2026
Auteur : ANALYST (Claude Code)


PARTIE A — Exigences du produit (PRD)


A.1 Résumé

ALTARYS ENTERPRISE développe une plateforme SaaS multi-Tenants pour la gestion des ressources humaines et les finances d'entreprise, spécialement conçue pour les entreprises opérant dans le cadre juridique de l'OHADA (Organisation pour l'harmonisation en Afrique du droit des affaires) dans 17 États membres.

Le problème

Les entreprises de la zone OHADA, en particulier les PME, gèrent leurs ressources humaines et leur paie à l'aide de feuilles de calcul Excel, de registres papier registres et des processus manuels. Cela entraîne :

  • Risque de non-conformité : les actes uniformes de l'OHADA, les normes comptables SYSCOHADA et les codes du travail nationaux imposent des obligations complexes et spécifiques à chaque pays. Les processus manuels entraînent des erreurs dans les déclarations CNPS, les déclarations fiscales et les registres des employés.
  • Inefficacité opérationnelle : approbation des congés via WhatsApp, suivi des présences sur papier, calcul manuel des fiches de paie dans Excel... Les responsables RH consacrent 60 à 80 % de leur temps à des tâches administratives au lieu de se concentrer sur des tâches stratégiques.
  • Fragilité des données : pas de piste d'audit, pas de sauvegarde, pas d'intégrité des données. La perte d'un fichier Excel entraîne la perte de l'historique des paies.
  • Problèmes de connectivité : en Afrique occidentale et centrale, l'internet est intermittent, ce qui signifie que les solutions exclusivement basées sur le cloud ne fonctionnent pas au moment où les employés en ont le plus besoin.

La solution

ALTARYS propose deux marques SaaS à partir d'une base de code unique :

Marque Cible Employés Phase
Papillon HR Suite PME (TPE/PME) 2–350 Phase 1 : mois 1 à 18 (priorité principale)
ALTARYS ENTERPRISE HR Suite Grandes entreprises (ETI + Grands Comptes) 351–5 000+ Phase 2 : Mois 18+

La plateforme offre 14 fonctionnalités RH/financières modulaires ainsi qu'une base Control Plane non commercialisable, toutes conçues offline-first, mobile-first et conformes à l'OHADA par défaut.

Objectif d'échelle

Plus de 100 000 entreprises clientes en 5 ans.

Pays pilote

Côte d'Ivoire (CI). Expansion : Bénin + Cameroun (mois 9), RDC (mois 15), Sénégal (mois 18), puis déploiement progressif dans les autres pays de l'OHADA.


A.2 Architecture à deux marques : pourquoi une base de code unique

Décision : ALTARYS exploite deux marques commerciales, mais conserve une base de code backend unique déployée sur différentes infrastructures. Il s'agit d'une décision architecturale fondamentale que toutes les équipes doivent comprendre.

Pourquoi une base de code unique est la bonne solution

Préoccupation Deux bases de code Base de code unique (choisie)
Correction de bogues Corriger deux fois, tester deux fois, déployer deux fois Corriger une fois, tester une fois, déployer partout
Correctif de sécurité Doubler la surface d'attaque à maintenir Une surface, un correctif
Développement de fonctionnalités Décider pour chaque fonctionnalité quelle base de code l'obtient Construire une fois, contrôler via la configuration
Taille de l'équipe Développeur solo + petite équipe — la maintenance de 2 bases de code n'est pas viable Viable avec une petite équipe
Tests Deux suites de tests, deux pipelines CI Une suite de tests couvre les deux marques
Cohérence des API Les API évoluent avec le temps, les modèles de données divergent Cohérence garantie

Différences entre les marques

Dimension Papillon HR Suite (PME) ALTARYS ENTERPRISE HR Suite
Code Identique Identique
Frontend frontend/ — chaleureux, mobile-first, offline-first, UX tolérante frontend-enterprise/ — données denses, desktop-first, opérations par lots, UX pour utilisateurs expérimentés
Profil de la base de données Base de données partagée (MVP) Schéma par Tenant ou base de données par Tenant (MVP) ou BYO-DB (MVP)
Déploiement Serveurs partagés Serveurs dédiés (ETI) ou cluster dédié (Grands Comptes)
Module gating Modules standard Modules/fonctionnalités standard + réservés aux entreprises
SLA 99,5 % 99,9 % (contractuel)
Limites de débit API Standard Supérieur
Quotas de stockage Basés sur le segment (S1-S6) Plus élevés ou illimités
Tarification Grille S1-S6 (voir §A.8) Tarification personnalisée pour les entreprises
Assistance Libre-service + e-mail Gestionnaire de compte dédié

Segmentation des Tenants

Segment Marque Fourchette d'effectifs Description
PME (TPE/PME) Papillon HR Suite 2–350 6 sous-segments (S1-S6)
ETI(Entreprise de Taille Intermédiaire) ALTARYS ENTERPRISE 351–4 999 Mid-market
GC (Grands Comptes) ALTARYS ENTERPRISE 5 000+ Grande entreprise

Modèle d'architecture

Même image Docker / Même JAR Spring Boot
        ├── Déploiement Papillon (infrastructure partagée)
        │ └── Base de données partagée, espace de noms Kubernetes partagé
        │ └── SLA de 99,5 %, ressources partagées
        └── Déploiement d'entreprise (infrastructure dédiée)
              └── Schéma par Tenant ou base de données par Tenant
              └── SLA de 99,9 %, ressources dédiées
              └── Cluster potentiellement dédié par Grand Compte

Enterprise -only (consolidation multi-entités, SSO/SAML, chaînes d'approbation avancées, opérations par lots à grande échelle, rôles personnalisés, accès API pour l'intégration ERP) existent dans la même base de code, mais sont contrôlées via le module gating + les indicateurs de marque/niveau sur l'entité Tenant.

La bibliothèque de composants partagés (packages/shared-components/) utilise l'injection de thème : les deux interfaces utilisent les mêmes composants, mais ceux-ci sont rendus différemment en fonction du thème de la marque.


A.3 Personnages utilisateurs

P1 : Directeur général (DG) / PDG —

  • Utilisations : tableaux de bord, approbations (auto-approbations en tant que propriétaire de l'entreprise), rapports de haut niveau
  • Compétences numériques : Moyenne à élevée
  • Appareil : ordinateur portable + téléphone
  • Préoccupation principale : « Mon entreprise est-elle conforme ? Montrez-moi les chiffres. »
  • Contexte Papillon : souvent propriétaire de l'entreprise (gérant SARL). Peut également être le responsable des ressources humaines dans les très petites entreprises (S1-S2).
  • Contexte de l'entreprise : PDG professionnel avec des équipes RH/finances dédiées. A besoin de tableaux de bord exécutifs, pas d'écrans opérationnels.

P2 : Responsable RH / Directeur des ressources humaines —

  • Utilisations : dossiers des employés (HR Core), intégration/départ (Employee Mgmt), absences, supervision de la paie
  • Compétences numériques : moyennes
  • Appareil : principalement un ordinateur de bureau, un téléphone pour les approbations
  • Préoccupation principale : « Traiter rapidement les demandes de congé, garantir la conformité OHADA, suivre le cycle de vie des employés. »
  • Contexte Papillon : souvent le conjoint du directeur général ou un employé de confiance assumant plusieurs fonctions. En transition depuis Excel/papier. A besoin d'une expérience utilisateur accompagnée.
  • Contexte de l'entreprise : directeur des ressources humaines professionnel gérant une équipe de responsables RH. A besoin d'opérations par lots, de rapports avancés, de workflows de délégation.

P3 : Comptable / Accountant —

  • Utilisations : lignes budgétaires, engagements, dépenses, comptabilité, lecture des fiches de paie
  • Compétences numériques : moyennes à élevées (utilise beaucoup Excel)
  • Appareil : ordinateur de bureau (deux écrans de préférence)
  • Préoccupation principale : « Conformité SYSCOHADA, équilibre des comptes, piste d'audit. »
  • Contexte Papillon : souvent un comptable externe (cabinet comptable) gérant 5 à 20 entreprises clientes. ** Nécessite un accès multi-Tenants** via un commutateur de Tenants.
  • Contexte de l'entreprise : Contrôleur financier interne avec une équipe dédiée.

P4 : Employé / Employee —

  • Utilisations : Demandes de congés, consultation des fiches de paie, pointage à l'arrivée/au départ, consultation de base du profil en libre-service
  • Compétences numériques : Faibles à moyennes
  • Appareil : Téléphone Android (souvent d'entrée de gamme, âgé de plus de 8 ans, connectivité intermittente)
  • Préoccupation principale : « Soumettre facilement ma demande de congé, vérifier mon salaire, consulter mon profil. »
  • Contexte Papillon : Peut ne pas avoir d'adresse e-mail. Activation du compte par SMS. Nécessite une simplicité absolue.
  • Contexte de l'entreprise : Meilleure maîtrise du numérique. Dispose d'une adresse e-mail professionnelle. Attend une expérience utilisateur moderne et soignée.

P5 : Freelance commercial / Vendeur freelance — [PAPILLON UNIQUEMENT]

  • Utilisations : CRM interne — prospects, opportunités, conversion prospect→Tenant, commissions
  • Compétences numériques : moyennes
  • Appareil : principalement le téléphone (toujours en déplacement)
  • Préoccupation principale : « Suivre mes prospects et consulter mes commissions. »
  • Remarque : ce persona travaille POUR ALTARYS (ou une société de conseil partenaire), et non pour un Tenant.

P6 : Partenaire consultant / société de conseil partenaire — [PAPILLON UNIQUEMENT]

  • Utilisations : CRM interne — présente Papillon à ses clients, suit les recommandations, partage des revenus (~10 %)
  • Compétences numériques : élevées
  • Appareil : ordinateur portable + téléphone
  • Préoccupation principale : « Suivre les clients que j'ai référés et ma part des revenus. »
  • Remarque : accède au CRM en tant que Tenant « opérateur » spécial.

P7 : Administrateur Système / Administrateur de plateforme —

  • Utilisations : plan de contrôle — gestion des Tenants, gestion des utilisateurs, facturation, surveillance de la plateforme
  • Compétences numériques : élevées
  • Appareil : ordinateur de bureau
  • Préoccupation principale : « Intégrer de nouvelles entreprises, gérer les abonnements, dépanner, surveiller la santé de la plateforme. »

A.4 User stories

US-PV-001 : Statut spécial du propriétaire de l'entreprise

En tant que propriétaire de l'entreprise (gérant/DG), je souhaite que la plateforme reconnaisse mon statut spécial et me laisse choisir si je suis un employé (salarié) ou indépendant, afin que la paie, la CNPS et la gestion des congés me traitent correctement.

Critères d'acceptation : - Étant donné que je suis propriétaire de l'entreprise, lorsque je suis signalé comme indépendant, je n'apparais pas dans la paie, je n'ai pas de fiche de paie et je n'ai pas de solde de congés. - Étant donné que je suis propriétaire de l'entreprise, lorsque je suis signalé comme salarié, alors je suis également un employé avec un bulletin de paie, des cotisations CNPS et des droits à congés. - Étant donné que je suis le propriétaire de l'entreprise, lorsqu'une unité organisationnelle n'a pas de responsable attribué, je suis alors l'approbateur de secours pour les employés de cette unité.

US-PV-002 : Auto-exportation des employés

En tant qu' employé, je souhaite télécharger mes propres données (profil, bulletins de paie, historique des congés) au format PDF/ZIP, afin de pouvoir exercer mon droit à la portabilité des données en vertu de la loi n°2013-450 de la CI.

Critères d'acceptation : - Étant donné que je suis un employé avec un compte actif, lorsque je navigue vers mon profil, je trouve une option « Exporter mes données ». - Étant donné que je demande l'exportation des données, lorsque l'exportation est générée, elle inclut mon profil, tous mes bulletins de paie et l'historique de mes congés dans un fichier ZIP téléchargeable.


A.5 Exigences non fonctionnelles

Exigence Cible Remarques
Temps de réponse < 2 secondes pour tout chargement de page sur une connexion 3G Critique pour l'utilisation mobile en Afrique de l'Ouest
Capacité hors ligne Navigation complète hors ligne. Écritures simples (pointage, saisie des dépenses, projet de congé) hors ligne. Les approbations et les opérations financières nécessitent une connexion. Les écritures en attente sont synchronisées dans les 30 secondes suivant la reconnexion. Stratégie d'écriture hors ligne sélective
Disponibilité 99,5 % (Papillon), 99,9 % (Entreprise, contractuel) ~3,6 h / ~43 min d'indisponibilité/mois respectivement
Isolation des données Aucune fuite de données entre les Tenants — vérifiable et testable Chaque requête de base de données inclut le contexte du Tenant
Accessibilité Conformité WCAG AA ; texte minimum de 16 px ; cibles tactiles de 48 px Téléphones Android à petit écran
Prise en charge des navigateurs Chrome 90+, Firefox 90+, Safari 15+ Couvre 95 %+ des utilisateurs ouest-africains
Prise en charge des appareils Principalement les téléphones Android (modèles de plus de 8 ans), les tablettes, les ordinateurs de bureau Appareils d'entrée de gamme avec une mémoire RAM limitée
Conservation des données Paie/comptabilité : 10 ans (OHADA AUDCIF). Données personnelles des employés : anonymisées après la période de grâce suivant le départ du Tenant. Appliquée même sans le module ADVDOC
Utilisateurs simultanés 500 par Tenant au lancement, extensible à 5 000 Les Tenants d'entreprise peuvent atteindre un nombre plus élevé
Sauvegarde Sauvegardes quotidiennes automatisées avec conservation pendant 30 jours
Localisation Français principal. Devise XOF (0 décimale). Dates au format JJ/MM/AAAA. Espace comme séparateur des milliers. Anglais (CM bilingue) dans la V2
Objectif d'échelle Plus de 100 000 entreprises Tenants dans les 5 ans Pilote la base de données partagée comme profil par défaut

A.6 Les 14 modules + plan de contrôle

Carte des modules

┌─────────────────────────────────────────────────────────────────────────┐
│ PLAN DE CONTRÔLE (Fondation) │
│ Gestion des Tenants · Gestion des utilisateurs · Authentification (Keycloak) · RBAC · Facturation │
│ Module Gating · Configuration du pays · Données organisationnelles et maîtresses · Piste d'audit │
│ Service de notification · Base de référence des employés · Pièce jointe de document de base (MinIO)│
└─────────────────────────┬───────────────────────────────────────────────┘
                          │ Chaque module dépend du plan de contrôle
                   ┌───────────────┼───────────────────────────────────┐
          │               │                                  │
   ┌──────┴──────┐  ┌─────┴──────┐  ┌──────────────────────┐ │
   │OPERATIONAL  │  │ FINANCE &  │  │ TALENT &             │ │
   │    HR       │  │ COMPLIANCE │  │ DEVELOPMENT          │ │
   ├─────────────┤  ├────────────┤  ├──────────────────────┤ │
   │1. HR Core   │  │7. Expense  │  │10. Performance       │ │
   │2. Emp Mgmt  │  │8. Commit   │  │11. Skills/GPEC       │ │
   │3. Absence   │  │   +BUDMGT  │  │12. Learning          │ │
   │4. QR Attend │  │9. Payroll  │  │13. Recruitment (ATS) │ │
   │5. Time&Act  │  │            │  │                      │ │
   │6. HSE       │  │            │  │                      │ │
   └─────────────┘  └────────────┘  └──────────────────────┘ │
                                    ┌────────────────────────┘
                                    │ PLATFORM SERVICES
                                    ├──────────────────────┐
                                    │14. Adv Doc Mgmt      │
                                    └──────────────────────┘

Tableau récapitulatif des modules

# Module Code Vendable ? Dépendances fortes Dépendances faibles (événements) MVP ?
Plan de contrôle CP Non (fondation) Aucune
1 Noyau RH HRCORE Oui Plan de contrôle → Absence, présence, paie
2 Gestion des employés EMPMGT Oui Noyau RH ou base CP → Paie ❌ Post-MVP
3 Congés et absences ABSMGT Oui Plan de contrôle (employé) → Paie
4 Présence QR QRCONTR Oui Plan de contrôle (employé) → Paie
5 Temps et activités TIMACT Oui Plan de contrôle (employé) → Paie ❌ Post-MVP
6 HSE HSEMGT Oui Plan de contrôle (employé) ❌ Post-MVP
7 Gestion des dépenses EXPMGT Oui (inclut BUDMGT) Lignes budgétaires (auto) → Comptabilité ❌ Post-MVP
8 Gestion des engagements COMMIT Oui (inclut BUDMGT) Lignes budgétaires (auto) → Comptabilité
Lignes budgétaires BUDMGT Non (automatiquement inclus) Plan de contrôle ✅ (avec COMMIT)
9 Paie PAYROL Oui CP, Absence, Présence → Comptabilité
10 Performance et objectifs PERFOB Oui CP (employé, manager) ❌ Post-MVP
11 Compétences et GPEC GPEC Oui CP (employé, poste) ❌ Post-MVP
12 Apprentissage et formation LTRAIN Oui Compétences et GPEC ❌ Post-MVP
13 Recrutement (ATS) ATSMGT Oui CP (postes, organisation) → HR Core/Emp Mgmt ❌ Post-MVP
14 Gestion avancée des documents ADVDOC Oui CP (MinIO, périmètre du Tenant) Améliore tous les modules ❌ Post-MVP

CRM interne — Cas particulier

Le CRM interne (CRMMGT) n'est PAS un module destiné aux Tenants. Il s'agit d'un outil interne à ALTARYS utilisé par :

  1. Les commerciaux indépendants d'ALTARYS — vente directe, à la commission
  2. Les sociétés de conseil partenaires — ventes indirectes/recommandations, partage des revenus à hauteur d'environ 10 % avec ALTARYS

ALTARYS et les sociétés partenaires accèdent au CRM en tant que Tenants « opérateurs » spéciaux. Le CRM est gratuit — il s'agit d'un centre de coûts ALTARYS, et non d'un module générateur de revenus. L'accès des partenaires est financé par l'accord de partage des revenus. Le CRM doit faire la distinction entre les commerciaux directs (modèle à commission) et les sociétés partenaires (modèle de partage des revenus).


A.7 Carte de dépendance des modules

Graphique de dépendance

Control Plane (foundation for ALL modules incl. Organization & Master Data)
      ├── Organization & Master Data (absorbed into CP for MVP):
      │     ├── Organizational units (entity, site, department — flexible tree)
      │     ├── Position/job catalog
      │     ├── Employee categories (cadre, agent de maîtrise, employé, ouvrier + custom)
      │     ├── Contract type reference (CDD, CDI, Stage, Apprentissage, Journalier)
      │     ├── Manager hierarchy (org-unit-based, owner as fallback)
      │     └── Cost centers (V2)
      ├── HR Core (HRCORE) ── extends CP employee entity
      │     │                  (optional module — enriches baseline employee file)
      │     │
      │     └── Employee Management (EMPMGT) ── depends on HR Core OR CP baseline
      │           │   (administrative process layer over employee record)
      │           │   Can operate standalone on CP baseline (reduced feature set)
      │           │
      │           └──~~> Payroll (exit settlements, status change impacts)
      ├── Absence Management ──────────~~> Payroll (unpaid leave deductions)
      ├── QR Attendance ───────────────~~> Payroll (overtime, late deductions)
      ├── Time & Activities ───────────~~> Payroll (hours, overtime, night/weekend)
      ├── HSE ── depends on: Employee data (Control Plane or HR Core)
      ├── Budget Lines Management (BUDMGT) ── NOT sellable alone
      │       │   Auto-included when Expense Mgmt OR Commitment Mgmt is purchased.
      │       │   Deactivates only when NEITHER is active.
      │       │
      │       ├── Commitment Management ──~~> Accounting (journal entries)
      │       │
      │       └── Expense Management ─────~~> Accounting (journal entries)
      ├── Internal CRM (operator-only, uses CP auth only)
      │       │   NOT a tenant-facing module
      │       │
      │       └──~~> Control Plane (ProspectConvertedToTenantEvent)
      ├── Payroll ─────────────────────~~> Accounting (salary journal entries)
      │       │     MVP: payslip generation only (no payment order files)
      │       │     Post-MVP: + payment orders (requires HR Core bank info)
      │       │
      │       └── depends on: Employee data (CP or HR Core),
      │                       Absence data, Attendance data
      ├── Accounting / General Ledger
      │       └── depends on: SYSCOHADA chart of accounts (seeded at setup)
      ├── Advanced Document Management (ADVDOC)
      │       │   Platform-wide document engine (MinIO backend)
      │       │   Independent — no hard dependencies on other app modules
      │       │
      │       └── Enhances: HR Core, Emp Mgmt, Expense, Commitment,
      │                     HSE, Payroll (payslip archival), Accounting
      ├── Performance & Objectives ── depends on: Employee data, Manager hierarchy
      ├── Skills & GPEC ── depends on: Employee data, Position catalog
      │       │
      │       └── Learning & Training ── depends on: Skills & GPEC
      └── Recruitment (ATS) ── depends on: Position catalog, Org units
              └──~~> HR Core / Employee Mgmt (candidate → employee conversion)
Légende : ── = dépendance forte (doit exister). ~~> = dépendance faible (événements/flux de données) .

Événements intermodules

Événement Publié par Consommé par Charge utile (champs clés)
EmployeeCreated CP (ou HR Core si actif) Absence, Présence, Paie employeeId, tenantId, contractType, startDate
EmployeeUpdated CP (ou HR Core si actif) Modules mettant en cache les données des employés employeeId, tenantId, changedFields[]
EmployeeTerminated Emp Mgmt (ou CP si EMPMGT inactif) Absence, Présence, Paie employeeId, tenantId, terminationDate, reason
EmployeeOnboarded Employee Mgmt HR Core, Paie employeeId, tenantId, effectiveDate, contractDetails
EmployeeOffboarded Gestion des employés HR Core, Absence, Présence, Paie employeeId, tenantId, dateDeDépart, typeDeDépart, motifDeDépart
ContractRenewed Gestion des employés Paie employeeId, tenantId, newContractType, newEndDate
ContractAmended Gestion des employés Paie employeeId, tenantId, amendmentType, effectiveDate, changes[]
EmployeeReassigned Gestion des employés Absence, Engagement, Budget employeeId, tenantId, oldUnitId, newUnitId, effectiveDate
LeaveApproved Gestion des absences Paie employeeId, leaveType, startDate, endDate, isPaid
LeaveCancelled Gestion des absences Paie employeeId, leaveRequestId
AttendanceRecorded Présence QR Paie employeeId, date, clockIn, clockOut, overtimeMinutes
CommitmentApproved Gestion des engagements Lignes budgétaires commitmentId, budgetLineId, amount
CommitmentCancelled Gestion des engagements Lignes budgétaires commitmentId, budgetLineId, amountToRelease
PayrollComputed Paie Comptabilité tenantId, month, journalEntries[]
DocumentVersioned Gestion avancée des documents Module d'origine documentId, tenantId, entityType, entityId, version
RetentionPolicyApplied Gestion avancée des documents Audit documentId, tenantId, action, policyName
OrganisationUnitCreated Org & Données de base Lignes budgétaires, Rapports unitId, tenantId, type, name, parentId
OrganisationUnitDeactivated Données organisationnelles et maîtresses Lignes budgétaires, rapports unitId, tenantId, deactivatedDate
PositionCreated Données organisationnelles et maîtresses GPEC (V2) positionId, tenantId, title, categoryId
ManagerChanged Org & Données de base Absence, Engagement, Gestion des employés employeeId, tenantId, oldManagerId, newManagerId, effectiveDate
ProspectConvertedToTenant CRM interne Plan de contrôle prospectId, tenantData, salespersonId, channel

Dépendances API (synchrones)

Appelant Appels Point de terminaison (conceptuel) Objectif
Paie CP / HR Core GET /api/v1/employees/{id} Récupérer les informations salariales des employés
Paie CP / HR Core GET /api/v1/employees/{id}/bank-info Informations de paiement (post-MVP)
Gestion des employés CP / HR Core GET /api/v1/employees/{id} Lire le dossier de l'employé
Gestion des employés CP PATCH /api/v1/employees/{id}/status Exécuter la transition du cycle de vie
Gestion des engagements Lignes budgétaires GET /api/v1/budget-lines/{id}/balance Vérifier le budget disponible
Gestion des engagements Lignes budgétaires POST /api/v1/budget-lines/{id}/reserve Réserver le montant engagé
Gestion des absences CP GET /api/v1/org-units/{id}/manager Obtenir l'approbateur pour l'unité
Tout module CP GET /api/v1/auth/permissions Vérifier les autorisations utilisateur
Tout module ADVDOC (si actif) POST /api/v1/documents Stocker le document avec gestion des versions
Tout module ADVDOC (si actif) GET /api/v1/documents?entityType=X&entityId=Y Récupérer les documents de l'entité

A.8 Facturation et modèle commercial [PAPILLON UNIQUEMENT — MVP]

Segments de Tenants (Papillon HR Suite)

Segment Nombre d'employés Modèle de tarification
S1 2–12 Prix mensuel fixe
S2 13–29 Prix mensuel fixe
S3 30–49 Prix mensuel fixe
S4 50–99 Par utilisateur/mois + frais de plateforme (FP)
S5 100–199 Par utilisateur/mois + frais de plateforme (FP)
S6 200–350 Par utilisateur/mois + frais de plateforme (FP)

Fréquence de facturation

  • Facturation mensuelle disponible pour tous les Tenants.
  • Facturation annuelle disponible : le Tenant paie pour 12 mois et bénéficie de 14 mois (2 mois gratuits en bonus, PAS une réduction). Il s'agit d'une incitation à la valeur perçue, et non d'une réduction de prix.

Essai gratuit

  • Essai gratuit de 14 jours disponible pour les Tenants qui s'inscrivent eux-mêmes.
  • Accès complet à tous les modules sélectionnés pendant la période d'essai (sans restriction).
  • Après 14 jours sans paiement → le statut passe à PAYMENT_REQUIRED (lecture seule).
  • Le Tenant peut payer à tout moment pour débloquer l'accès complet.

Formule de calcul des frais de plateforme (S4-S6 uniquement)

FP = [1 + (x - 1) × 15 %] × Taux de base
où x = nombre de modules actifs
Segment 1 module 2 modules 3 modules 4 modules 5+ modules
S4 (50-99) 360 000 414 000 468 000 522 000 576 000
S5 (100-199) 540 000 621 000 702 000 783 000 864 000
S6 (200-350) 660 000 759 000 858 000 957 000 1 056 000

Tous les montants sont en FCFA/mois.

Prix des modules (individuels)

Module S1 S2 S3 S4 S5 S6
Absences 12 000 15 000 25 000 500/ u 450/u 400/u
Présence QR 5 000 10 000 30 000 300/u 300/u 300/u
Notes de frais (NDF) 5 000 10 000 30 000 550/u 550/u 650/u
Engagement/Budget (EB) 10 000 20 000 50 000 1 400/u 1 500/u 1 500/u
Paie 30 000 50 000 80 000 1 500/u 1 400/ u 1 400/u
RH de base 12 000 15 000 25 000 1 250/u 1 150/u 1 150/u
Évaluation/Performance 5 000 15 000 35 000 1 100/u 1 200/u 1 350/u

*S1-S3 : FCFA/mois fixe. S4-S6 : FCFA/utilisateur/mois + FP. *

Tarifs des packs

Pack Modules inclus S1 S2 S3 S4 S5 S6
Contrôle Absence + QR 15 000 20 000 30 000 800/u 750/u 700/u
Finance NDF + EB 15 000 30 000 75 000 1 850/u 1 850/u 1 850/u
Essentiel Core RH + Absences 20 000 25 000 45 000 1 700/u 1 600/u 1 550/u
Standard Essentiel + QR 25 000 30 000 75 000 2 250/u 2 150/u 2 200/u
Complet Standard + NDF + Eval 30 000 45 000 100 000 3 800/u 3 800/u 3 950/u

Quotas de stockage (pièces jointes de base)

Segment Quota de stockage
S1-S2 1 Go
S3 3 Go
S4 5 Go
S5 10 Go
S6 25 Go
  • ** Avertissement** à 75 % de la capacité : le Tenant est averti et invité à acheter de l'espace de stockage supplémentaire.
  • Blocage total à 100 % : les téléchargements sont bloqués jusqu'à ce que le Tenant achète davantage d'espace de stockage ou supprime des fichiers.
  • Espace de stockage supplémentaire disponible à l'achat (prix à déterminer).

Service payant d'archivage des données

Lorsqu'un Tenant désactive un module ou quitte la plateforme, ALTARYS propose un service payant d'archivage : conservation des données pendant toute la période de conformité OHADA de 10 ans dans un stockage à froid. Il s'agit d'une source de revenus supplémentaire.

Tarification pour les entreprises [ENTREPRISES UNIQUEMENT — V2]

Tarification personnalisée pour les entreprises à définir au cours des mois 12-13. Non incluse dans ce PRD.


A.9 Paysage concurrentiel

Positionnement stratégique

Papillon HR Suite se positionne comme le SaaS RH natif conforme à l'OHADA pour les PME africaines francophones, avec une tarification modulaire, aucune contrainte et une expérience utilisateur mobile-first capable de fonctionner hors ligne.

Comparaison concurrentielle

Concurrent Segment Forces Faiblesses Différenciateur ALTARYS
Excel / Papier Toutes les PME Universel, familier, gratuit Aucune conformité, aucune piste d'audit, sujet aux erreurs, risque de perte de données Automatisation + conformité + expérience utilisateur agréable
SOCIUM 50-150 Position forte en Afrique francophone Paie OHADA moins raffinée Paie OHADA native plus modulaire
Workpay Micro à 150 Panafricain, très bon marché pour les micro-entreprises Rapports limités, focus OHADA limité Conformité OHADA plus approfondie, ensemble de modules plus riche
SeamlessHR 50-150 Fort en Afrique anglophone Moins adapté aux marchés francophones Français natif, OHADA natif
* Sage Paie & RH* 50-150 Reconnaissance historique de la marque Coût d'entrée élevé (modèle de licence) Modèle SaaS, coût total de possession réduit, expérience utilisateur moderne
BambooHR 50-350 Ensemble de fonctionnalités HCM riche Non optimisé pour l'OHADA/l'Afrique Natif OHADA, hors ligne d'abord, tarification en XOF
SAP SuccessFactors 150-350+ Plateforme HCM complète Trop grande pour les PME, très coûteuse Taille adaptée aux PME, tarification locale
PaySpace 150-350 Rapports avancés Coûts supplémentaires, tarification complexe Tarification modulaire transparente
iSmartRecruit 50-150 Recrutement avancé SIRH généraliste faible Suite RH complète au-delà du recrutement
Bento Payroll Micro Simple, axé sur la paie Paie uniquement Suite RH complète

Principaux facteurs de différenciation

  1. Conformité native à l'OHADA : comptabilité SYSCOHADA, intégration CNPS/CNSS, code du travail CI intégré — et non ajouté.
  2. Tarification modulaire adaptée aux PME africaines : segments S1-S6 avec tarification en XOF. Pas de dollar américain, pas de tarification par poste pour une entreprise de 5 personnes.
  3. Offline-first : fonctionne en 3G, fonctionne hors ligne. Essentiel en Afrique de l'Ouest.
  4. Mobile-first : conception 360px Android-first. Cibles tactiles de 48px.
  5. Pas de verrouillage : facturation mensuelle, abonnements modulaires, exportation des données disponible.
  6. Priorité au français : interface utilisateur, assistance, documentation, tout en français.
  7. Paiement local : CinetPay (Orange Money, Wave, MTN Mobile Money) — pas seulement les cartes de crédit.

A.10 Portée du MVP

Dans le MVP

  • Pays : Côte d'Ivoire uniquement
  • Langue : français uniquement
  • Devise : XOF uniquement (0 décimale)
  • Profil DB : les 4 profils — A (base de données partagée), B (schéma par Tenant), C (base de données par Tenant), D (base de données BYO)
  • 7 modules : plan de contrôle + absences + présence QR + lignes budgétaires (incluses automatiquement avec l'engagement) + engagement + CRM interne + paie
  • Remarque : les lignes budgétaires s'activent automatiquement car la gestion des engagements est en MVP
  • Application web : responsive, mobile -first (360px)
  • PWA : installable sur l'écran d'accueil du téléphone
  • Hors ligne : navigation complète + écritures sélectives (pointage, saisie des dépenses, projet de congé). Les approbations/opérations financières nécessitent une connexion.
  • Pièce jointe de document de base : téléchargement/téléversement simple via MinIO (tous les modules)
  • Application de la conservation de base : conservation OHADA de 10 ans pour les documents de paie/comptabilité, même sans ADVDOC
  • Paie : génération de fiches de paie et calcul des salaires uniquement. Pas de fichiers d'ordres de paiement.
  • SMS : passerelle SMS de base pour les liens d'activation de compte/création de mot de passe uniquement
  • Utilisateur multi-Tenant : connexion unique + sélecteur de Tenant (cas d'utilisation d'un cabinet comptable)
  • Facturation : mensuelle + annuelle (14 mois pour le prix de 12). Intégration de CinetPay.
  • Essai gratuit de 14 jours pour les Tenants auto-intégrés

Hors MVP (V2+)

  • Règles nationales du Bénin et du Cameroun (objectif pour le mois 9)
  • Prise en charge de la devise XAF
  • Langues anglaise et portugaise
  • Applications mobiles natives (iOS/Android)
  • Rapports et analyses avancés
  • Génération de documents (contrats, certificats) — partie intégrante d'ADVDOC V2
  • Intégration avec des systèmes externes (banques, portails gouvernementaux)
  • Authentification SSO/OAuth
  • Notifications générales par SMS (au-delà de l'activation du compte)
  • Préférences de notification au niveau des employés
  • Module RH Core (dossier complet des employés)
  • Module de gestion des employés (couche des processus administratifs)
  • Module avancé de gestion des documents (gestion des versions, conservation, recherche)
  • Modules de gestion des dépenses et de comptabilité
  • HSE, temps et activités, performances, compétences et GPEC, apprentissage, recrutement
  • Rôles personnalisés par Tenant
  • Configuration des conventions collectives
  • Structures multi-entités/groupes
  • Fonctionnalités de la marque d'entreprise (ALTARYS ENTERPRISE HR Suite)
  • Centres de coûts
  • Organigramme graphique
  • Grades, classifications, familles d'emplois
  • Organisations matricielles

Ordre de construction des modules (réalité technique)

Ordre Module Justification Cible
0 Shell host noyau d'acceuil du frontend, authentification, navigation, PWA, hors ligne — prouve la plateforme Sprint 0
1 Control Plane Fondements : Tenants, utilisateurs, rôles, employés (référence), facturation, données organisationnelles et maîtresses Sprint 1
2a Gestion des absences Premier module métier ; dépend des employés (Control Plane) Sprint 2
2b Présence QR Parallèle à Absence ; dépend des employés (Control Plane) Sprint 2
3a Gestion des lignes budgétaires Requis par l'engagement ; inclus automatiquement Sprint 3
3b Gestion des engagements Dépend des lignes budgétaires ; premier module financier Sprint 3
4 CRM interne Relativement indépendant ; nécessite uniquement l'authentification du CP Sprint 3-4
5 Paie Le plus complexe ; nécessite les données relatives aux employés, aux absences et aux présences. MVP : fiches de paie uniquement Sprint 4-5

Dates cibles commerciales (ambitieuses)

Module Objectif commercial
Absences + Présence QR Mars 2026
Notes de frais (NDF) Avril 2026
Engagement / Budget (EB) Mai 2026
Paie Juin 2026
RH de base Juillet 2026
Évaluation / Performance Novembre 2026

Remarque : les objectifs commerciaux sont ambitieux et peuvent différer des dates de livraison techniques. L'ordre de construction technique (ci-dessus) fait autorité pour la planification du développement.


A.11 Questions en suspens

Ces points doivent être clarifiés avant ou pendant la mise en œuvre :

# Question Priorité Statut
OQ-01 Autorisation de transfert transfrontalier de données ARTCI : l'hébergement se trouve en Europe. Autorisation ARTCI requise en vertu de la loi n °2013-450. Processus non lancé. Potentiellement bloquant pour le MVP. 🔴 CRITIQUE Non résolu — consultation juridique nécessaire
OQ-02 Calcul de l'ITS (Impôt sur Traitements et Salaires) : Tranches, taux et méthode pour CI non couverts dans la recherche sur la vision de la plateforme. Reporté à la recherche juridique sur le module Paie. 🟡 ÉLEVÉ Reporté au PRD Paie
OQ-03 Sources primaires des taux de cotisation CNPS : Pension (14 %), PF (5 %), Maternité (0,75 %), AT/MP(2-5 %), CMU (1 000 FCFA) — toutes issues de sources secondaires ou de l'ordonnance de 2012. Nécessite une nouvelle recherche avec les citations du décret actuel. 🟡 ÉLEVÉ Reporté au PRD Paie
OQ-04 Vérification des plafonds CNPS : 70 000 FCFA/mois (PF/Maternité/AT) et 3 375 000 FCFA/mois (pension) — citation au niveau du décret et clarification nécessaires (plafond sur le salaire de base ou sur le montant de la cotisation ?). 🟡 ÉLEVÉ Reporté au PRD Paie
OQ-05 Seuils de sélection automatique du profil DB pour la V2 : à partir de quel nombre d'employés les Tenants passent-ils du profil A → B → C ? Nombre d'employés uniquement ou également niveau du plan ? 🟢 MOYEN Portée de la V2
OQ-06 Tarification du stockage supplémentaire : combien coûte le stockage supplémentaire par Go pour les Tenants qui dépassent leur quota ? 🟢 MOYEN Décision de tarification nécessaire
OQ-07 Spécificités de la forme juridique SAS : les sociétés SAS ont-elles des obligations sociales ou fiscales différentes de celles des SARL en CI ? Pertinent pour le marché cible. 🟢 MOYEN Nécessite des recherches
OQ-08 Taxes d'apprentissage et de formation en CI : les taux et les seuils d'applicabilité ne sont pas couverts par la recherche sur la vision de la plateforme. 🟢 MOYEN Reporté au PRD Paie
OQ-09 Article exact du registre des employés en CI (Registre d'Employeur) : la recherche cite « Art. 18.x » — format provisoire. L'article exact de la loi 2015-532 doit être confirmé. 🟢 MOYEN Nécessite vérification
OQ-10 Modèle de tarification pour les entreprises : tarification personnalisée pour les segments ETI et Grands Comptes. 🟢 FAIBLE Mois 12-13
OQ-11 Tarification ADVDOC : tarification du module autonome à déterminer. 🟢 FAIBLE Post-MVP

A.12 Temporairement validé

Ces éléments sont mis en œuvre tels quels, mais signalés pour vérification ou mise à jour ultérieure :

# Élément Valeur actuelle Risque Action requise
TV-01 Configuration de l'exercice fiscal Par défaut, janvier-décembre, mais le Tenant peut personnaliser. L'OHADA impose l'année civile (AUDCIF Art. 7). Les Tenants qui dérogent à cette règle le font à leurs propres risques en matière de conformité. La plateforme affiche un avertissement. Confirmation juridique que la plateforme peut autoriser la modification sans engager sa responsabilité.
TV-02 Taux de cotisation CI CNPS (à titre indicatif uniquement — NON prêt à être mis en œuvre) Retraite : 14 % (7,7 % employeur + 6,3 % employé). PF : 5 %. Maternité : 0,75 %. AT/MP : 2-5 % . CMU : 1 000 FCFA/personne (500+500). Source : Cleiss.fr et ordonnance de 2012. Les taux peuvent avoir changé. Nouvelle recherche avec citations des décrets primaires avant la mise en œuvre du module Paie.
TV-03 Plafonds CI CNPS(à titre indicatif uniquement) Plafond PF/Maternité/AT : 70 000 FCFA/mois. Plafond pension : 3 375 000 FCFA/mois. Source secondaire uniquement. Le plafond de 70 000 FCFA semble étrangement bas. À vérifier auprès du barème officiel CI de la CNPS.

PARTIE B — Spécifications fonctionnelles (FSD)


B.1 Règles fonctionnelles de base

Statut de propriétaire de l'entreprise

Règle Description
FR-PV-001 Chaque Tenant a exactement UN propriétaire d'entreprise pour MVP. Le propriétaire est identifié lors de l'intégration (auto-intégration : la personne qui crée le compte ; CRM/Admin : désigné lors de la création).
FR-PV-002 Le propriétaire de l'entreprise dispose d'un champ owner_employment_status avec deux valeurs : INDEPENDANT (par défaut) ou SALARIE.
FR-PV-003 SI owner_employment_status = INDEPENDANT ALORS le propriétaire est uniquement un utilisateur (et non un employé). Pas de fiche de paie, pas de cotisations CNPS, pas de solde de congés. Il peut approuver les demandes et accéder aux tableaux de bord via son rôle DG.
FR-PV-004 SI owner_employment_status = SALARIE ALORS le propriétaire est ÉGALEMENT créé en tant qu'employé. Il reçoit une fiche de paie, ses cotisations CNPS sont calculées et son solde de congés est suivi.
FR-PV-005 SI une unité organisationnelle n'a pas de responsable attribué, ALORS le propriétaire de l'entreprise est l'approbateur de secours pour les demandes des employés de cette unité (congés, engagements, dépenses).
FR-PV-006 Le propriétaire de l'entreprise approuve lui-même ses propres demandes (congés, dépenses, etc. ). Aucune approbation externe n'est requise pour le MVP.
FR-PV-007 [V2] Prise en charge de plusieurs propriétaires d'entreprise par Tenant (par exemple, SARL avec co-gérants). Chacun peut être indépendamment salarié ou indépendant.

Structure organisationnelle

Règle Description
FR-PV-010 La structure organisationnelle est une arborescence flexible avec une profondeur illimitée. Chaque nœud possède un id, tenant_id, name, type (ENTITY | SITE | DEPARTMENT | CUSTOM), parent_id (FK auto-référencé), status (ACTIVE | INACTIVE), manager_id (FK vers Employee, nullable).
FR-PV-011 Le nœud racine (type=ENTITY) est automatiquement créé lors de l'intégration du Tenant à partir du nom de l'entreprise. Il ne peut être ni supprimé ni désactivé.
FR-PV-012 Lors de l'intégration, le système crée 5 à 6 départements par défaut sous l'entité racine : Direction Générale, Ressources Humaines, Comptabilité, Commercial, Production. L'administrateur du Tenant peut les renommer, les supprimer (désactiver) ou en ajouter d'autres.
FR-PV-013 Aucune suppression définitive des unités organisationnelles. Désactivation uniquement. L'intégrité des données historiques doit être préservée.
FR-PV-014 Chaque employé est affecté à une seule unité organisationnelle (FK). La réaffectation crée un enregistrement historique avec effective_date.

Chaîne d'approbation (basée sur l'unité organisationnelle)

Règle Description
FR-PV-020 Le circuit d'approbation est basé sur l'unité organisationnelle : l'approbateur d'un employé est le manager_id de l'unité organisationnelle à laquelle il est affecté.
FR-PV-021 SI l'unité organisationnelle de l'employé n'a pas de manager_id attribué, ALORS l'approbateur revient au propriétaire de l'entreprise (FR-PV-005 ).
FR-PV-022 SI l'employé EST le responsable de l'unité organisationnelle, ALORS l'approbateur est le manager_id de l'unité organisationnelle parent. Si le parent n'a pas de responsable, le propriétaire de la société est désigné.
FR-PV-023 Le propriétaire de la société (DG) s'approuve lui-même. Ses demandes sont automatiquement approuvées avec le statut SELF_APPROVED et consignées dans la piste d'audit.
FR-PV-024 [V2] Chaînes d'approbation à plusieurs niveaux (N+1 → N+2 → DG, en fonction des seuils de montant). Organisations matricielles (responsable fonctionnel + hiérarchique). Délégation du pouvoir d'approbation.

Module Gating

Règle Description
FR-PV-030 Le plan de contrôle suit les abonnements aux modules par Tenant dans un tableau tenant_modules : tenant_id, module_code, status (ACTIVE | INACTIVE | TRIAL), activated_date, deactivated_date.
FR-PV-031 Codes des modules vendables : HRCORE, EMPMGT, ABSMGT, QRCONTR, TIMACT, EXPMGT, COMMIT, PAYROL, HSEMGT, PERFOB, GPEC, LTRAIN, ATSMGT, ADVDOC.
FR-PV-032 Modules non vendables inclus automatiquement : BUDMGT (s'active lorsque EXPMGT OU COMMIT est ACTIF ; se désactive uniquement lorsque AUCUN des deux n'est ACTIF).
FR-PV-033 Le plan de contrôle et les données de base organisationnelles sont toujours actifs. Jamais bloqués.
FR-PV-034 Contrôle au niveau de l'API : chaque point de terminaison API vérifie si le Tenant demandeur dispose du module requis ACTIF. SI le module est INACTIF, renvoyer HTTP 403 avec le message « Module non souscrit ».
FR-PV-035 Contrôle au niveau du frontend : les éléments de navigation pour les modules non souscrits sont masqués ou affichés sous forme d'« invites de mise à niveau » (opportunité de vente incitative).
FR-PV-036 SI ADVDOC est ACTIF, TOUS les modules passent automatiquement en mode versionné avec conservation des données.
FR-PV-037 SI EMPMGT est ACTIF mais HRCORE est INACTIF, la gestion des employés fonctionne sur l'entité employé de base CP (ensemble de fonctionnalités réduit mais fonctionnel).

Rétrogradation des modules

Règle Description Portée
FR-PV-040 SI un Tenant désactive un module précédemment actif, les données du module deviennent en lecture seule pendant 6 mois. V2
* FR-PV-041* Pendant la période de 6 mois en lecture seule, le Tenant a la possibilité d'exporter les données du module (CSV/Excel/ZIP). V2
FR-PV-042 Après 6 mois, les champs enrichis sont masqués dans l'interface utilisateur. Les données sont conservées dans la base de données mais invisibles pour le Tenant. * V2*
FR-PV-043 ALTARYS propose un service payant d'archivage des données : conservation des données dans un stockage à froid pendant toute la période de conformité OHADA de 10 ans. Si le Tenant souscrit à ce service, les données restent conservées dans le stockage à froid. V2
*FR-PV-044 * SI le Tenant n'achète PAS le service d'archivage ET que la période de lecture seule de 6 mois est écoulée, ALORS les données sont automatiquement archivées dans un stockage à froid (elles ne sont pas supprimées). ALTARYS les conserve pour se conformer à l'OHADA, mais elles ne sont pas accessibles au Tenant sans réabonnement ou achat du service d'archivage. V2

Comportement MVP : dans MVP, la désactivation d'un module le définit immédiatement comme INACTIVE. Les données du module sont conservées dans la base de données, mais ne sont pas accessibles via l'interface utilisateur. La période de 6 mois READONLY_GRACE, l'état HIDDEN et le service d'archivage (FR-PV-040 à FR-PV-044) sont tous en V2.

Flux d'importation des employés

Règle Description
FR-PV-050 L'administrateur du Tenant peut importer en masse des employés via le téléchargement d'un fichier Excel.
FR-PV-051 Après le téléchargement, le système analyse le fichier Excel et affiche un tableau de confirmation modifiable présentant tous les employés importés. L'administrateur peut modifier n'importe quel champ directement dans le tableau avant de valider.
FR-PV-052 Pour chaque employé du tableau, l'administrateur doit sélectionner un mode de contact préféré : E-MAIL ou SMS. Cette étape est obligatoire, car certains employés ne disposent pas d'adresse e-mail.
FR-PV-053 Lors de la soumission : le système crée des enregistrements d'employés, crée des comptes d'utilisateurs et envoie des liens de création de mot de passe via le canal sélectionné (e-mail ou SMS) pour chaque employé.
FR-PV-054 Les liens de création de mot de passe par SMS nécessitent l'intégration d'une passerelle SMS de base (voir FR-PV-080).

Stratégie hors ligne

Règle Description
FR-PV-060 L'application est entièrement navigable hors ligne (PWA + Service Worker pour l'application shell, IndexedDB pour le cache de données).
FR-PV-061 Écritures hors ligne (mises en file d'attente dans IndexedDB, synchronisées lors de la reconnexion dans les 30 secondes) : pointage d'arrivée/de départ, saisie/brouillon de dépenses, brouillon de demande de congé, affichage du profil de l'employé.
FR-PV-062 Opérations en ligne uniquement : actions d'approbation (approbation de congés, approbation d'engagements), opérations financières (calcul des salaires, réservation budgétaire), activation/désactivation de modules, gestion des utilisateurs, opérations de facturation.
FR-PV-063 Un indicateur d'état de synchronisation est toujours visible dans l'interface utilisateur.
FR-PV-064 Enregistrement automatique dans tous les champs du formulaire. Aucune perte de données en cas de perte de connexion.

Accès utilisateur multi-Tenants

Règle Description
FR-PV-070 Une même personne peut être utilisateur de plusieurs Tenants simultanément (par exemple, un comptable externe gérant 5 entreprises clientes).
FR-PV-071 Une adresse e-mail/un numéro de téléphone = un compte Keycloak. L'utilisateur se connecte une seule fois et voit apparaître un sélecteur de Tenant répertoriant tous les Tenants auxquels il appartient.
FR-PV-072 L'utilisateur peut passer d'un Tenant à l'autre dans l'application sans avoir à se réauthentifier. Le JWT est réémis avec le tenant_id sélectionné.
FR-PV-073 Les rôles et les autorisations sont par Tenant : un utilisateur peut être comptable dans le Tenant A et employé dans le Tenant B.

## Notifications

Règle Description
FR-PV-075 Notifications dans l'application via WebSocket (en temps réel lorsque l'utilisateur est en ligne, mises en file d'attente pour une livraison hors ligne).
FR-PV-076 Notifications par e-mail pour les actions critiques (congés approuvés/refusés, paie prête, avertissements d'expiration de CDD, activation de compte).
FR-PV-077 Les préférences de notification sont contrôlées par l'administrateur pour MVP : l'administrateur du Tenant configure les événements qui déclenchent les notifications par e-mail/dans l'application pour chaque rôle.
FR-PV-078 [V2] Préférences de notification au niveau des employés (activation/désactivation par type de notification).

Passerelle SMS

Règle Description
FR-PV-080 MVP intègre une passerelle SMS de base (Twilio, Orange SMS API ou fournisseur CI local) pour les liens d'activation de compte/création de mot de passe uniquement.
** FR-PV-081** La même infrastructure de passerelle SMS est réutilisée pour les SMS de notification générale dans la V2. Le travail de la V2 consiste à créer le moteur de préférences de notification et les déclencheurs événementiels, et non la plomberie SMS.
FR-PV-082 [V2] Notifications SMS générales (congés approuvés, paie prête, etc.) utilisant la même passerelle.

Conservation des données et confidentialité

Règle Description
FR-PV-090 La conservation de base OHADA est TOUJOURS appliquée, quel que soit le statut du module ADVDOC : les documents de paie et les documents comptables ne peuvent pas être supprimés avant 10 ans (exigence AUDCIF).
FR-PV-091 Les entrées de la piste d'audit sont immuables : elles ne peuvent être ni supprimées ni modifiées. Elles sont conservées pendant au moins 10 ans.
Règle Description
FR-PV-095 Tous les employés peuvent consulter un profil de base en lecture seule affichant les données de référence du plan de contrôle : nom, e-mail, téléphone, service, poste, type de contrat, responsable, date d'embauche. Ce profil est disponible quel que soit le statut du module HR Core.
FR-PV -096 SI HR Core est ACTIF, alors la vue du profil est enrichie avec : les coordonnées personnelles, les contacts d'urgence, la photo, les informations bancaires, les pièces jointes, l'historique des modifications.

Exercice fiscal

Règle Description
FR-PV-100 L'exercice fiscal est par défaut de janvier à décembre (année civile) pour tous les Tenants de la zone OHADA.
FR-PV-101 Les Tenants peuvent personnaliser le mois de début de l'exercice fiscal. SI un Tenant remplace la valeur par défaut, ALORS la plateforme affiche un avertissement : « L'OHADA (AUDCIF Art. 7) impose une clôture fiscale à la fin de l'année civile (31 décembre). Le non-respect de cette exigence peut entraîner des risques de non-conformité. »
FR-PV-102 L'avertissement est consigné dans la piste d'audit. Le Tenant assume la responsabilité de la conformité pour les exercices financiers non calendaire.

Détection des Tenants en double

Règle Description
FR-PV-105 Lors de l'intégration d'un Tenant, le système effectue une recherche approximative sur : le nom de l'entreprise (flou), le pays et l'adresse e-mail de l'administrateur.
FR-PV-106 SI un doublon potentiel est détecté, l'intégration n'est PAS bloquée. Au lieu de cela, la correspondance est signalée pour examen par l'administrateur ALTARYS dans la console d'administration.
FR-PV-107 L'administrateur ALTARYS peut fusionner, lier ou rejeter les doublons signalés.

Politique RCCM

Règle Description
FR-PV-110 Le RCCM (Registre du Commerce et du Crédit Mobilier) est facultatif lors de l'intégration.
FR-PV-111 SI le RCCM n'est pas fourni dans les 3 mois suivant l'activation, le statut du Tenant devient ACTIVE_INCOMPLETE et le compte + les modules souscrits deviennent en lecture seule -only jusqu'à ce que le RCCM soit fourni.
FR-PV-112 Ce délai de grâce correspond au statut ACTIVE_INCOMPLETE défini dans le cycle de vie du Tenant (voir §B.2).

B.2 Machines à états

Machine à états du cycle de vie du Tenant

stateDiagram-v2
    [*] --> PENDING_VERIFICATION : Auto-inscription (e-mail non encore vérifié)
    [*] --> PENDING_VALIDATION : canal CRM (approbation du responsable requise)
    [*] --> PENDING : canal Admin (création directe)

    PENDING_VERIFICATION --> PENDING : e-mail vérifié
    PENDING_VALIDATION --> PENDING : approuvé par le responsable CRM

    EN ATTENTE --> ACTIF : Provisionné + paiement par méthode API collecté
    EN ATTENTE --> ACTIF_PAIEMENT_EN ATTENTE : Provisionné + virement bancaire choisi
    EN ATTENTE --> ACTIF_INCOMPLET : Provisionné + payé mais informations légales manquantes
    EN ATTENTE --> PAIEMENT_REQUIS : Provisionné + paiement par méthode API échoué
    EN ATTENTE --> ESSAI : Provisionné + essai gratuit commencé (14 jours)

    ESSAI --> PAIEMENT_REQUIS : Essai de 14 jours expiré sans paiement
    ESSAI - -> ACTIVE : Paiement encaissé pendant la période d'essai

PAYMENT_REQUIRED --> ACTIVE : Paiement encaissé (méthode API)
PAYMENT_REQUIRED --> ACTIVE_INCOMPLETE : Payé mais informations légales manquantes
PAYMENT_REQUIRED --> ACTIVE_PAYMENT_PENDING : Passage au virement bancaire

ACTIVE_PAYMENT_PENDING - -> ACTIF : Virement bancaire reçu
ACTIF_PAIEMENT_EN_ATTENTE --> SUSPENDU : 10 jours écoulés sans paiement

ACTIF_INCOMPLET --> ACTIF : Informations légales complétées
ACTIF_INCOMPLET --> ACTIF_INCOMPLET_EN_LECTURE_SEULE : 3 mois écoulés sans que les informations aient été complétées

ACTIF - -> SUSPENDU : Abonnement expiré (délai de grâce de 10 jours) OU suspension manuelle par l'administrateur
ACTIF --> SUPPRIMÉ : Le Tenant démissionne

    SUSPENDU --> ACTIF : Paiement reçu ou réactivation par l'administrateur
    SUSPENDU --> SUPPRIMÉ : Délai de grâce expiré

    SUPPRIMÉ --> [*] : Suppression temporaire (données conservées conformément à la règle des 10 ans de l'OHADA)

Définitions des statuts clés :

Statut Signification Niveau d'accès
PENDING_VERIFICATION E-mail non encore vérifié (auto-inscription) Aucun accès
PENDING_VALIDATION En attente de l'approbation du responsable CRM Aucun accès
EN ATTENTE En attente d'approvisionnement Aucun accès
ESSAI Essai gratuit actif (14 jours) Accès complet aux modules sélectionnés
PAYMENT_REQUIRED Échec du paiement via la méthode API ou expiration de l'essai Lecture seule (tous les modules)
ACTIVE_PAYMENT_PENDING Virement bancaire choisi, délai de grâce de 10 jours Accès complet
ACTIVE_INCOMPLETE Payé mais informations RCCM/légales manquantes Accès complet (délai de grâce de 3 mois)
ACTIVE_INCOMPLETE_READONLY 3 mois sans informations légales complètes Lecture seule
ACTIVE Entièrement actif et payé Accès complet
SUSPENDED Abonnement expiré ou suspension administrative Lecture seule pendant 10 jours, puis bloqué
DELETED Suppression temporaire Aucun accès. Données conservées conformément à l'OHADA.

Machine à états du cycle de vie des employés

stateDiagram-v2
    [*] --> ACTIF : Employé créé (intégré)

    ACTIF --> EN CONGÉ : Début de la période de congé
    ACTIF --> SUSPENDU : Suspension administrative
    ACTIF --> RÉSILIÉ : Départ/résiliation

    EN CONGÉ --> ACTIF : Fin de la période de congé
    EN CONGÉ --> RÉSILIÉ : Résiliation pendant le congé

    SUSPENDU --> ACTIVE : Levée de la suspension
    SUSPENDED --> TERMINATED : Licencié pendant la suspension

    TERMINATED --> [*] : État final (données conservées)

Module Subscription State Machine

Statuts MVP : INACTIVE, TRIAL, ACTIVE uniquement.

stateDiagram-v2
    [*] --> INACTIVE : Module non acheté

    INACTIF --> ESSAI : Essai commencé
    INACTIF --> ACTIF : Module acheté

    ESSAI --> ACTIF : Payé après l'essai
    ESSAI --> INACTIF : Essai expiré

    ACTIF --> READONLY_GRACE : Module désactivé (délai de grâce de 6 mois) [V2]
    ACTIF --> ACTIF : Renouvelé

    READONLY_GRACE --> HIDDEN : 6 mois écoulés [V2]

    HIDDEN --> ACTIVE : Réactivé (données restaurées et visibles) [V2]

Remarque V2 : READONLY_GRACE et HIDDEN ne sont pas disponibles dans MVP. Dans MVP, la désactivation d'un module le ramène immédiatement à l'état INACTIVE (données conservées dans la base de données mais inaccessibles). La période de grâce de 6 mois et les états de données masquées sont des fonctionnalités de la V2.


B.3 Tableaux de décision

Statut du Tenant après l'intégration

Canal Mode de paiement Résultat du paiement Informations légales complètes ? → Statut
Auto Méthode API Réussi Oui ACTIF
Auto Méthode API Réussi Non (RCCM manquant) ACTIF_INCOMPLET
Auto Méthode API Échec PAYMENT_REQUIRED
Auto Virement bancaire En attente ACTIVE_PAYMENT_PENDING
Auto Essai gratuit N/A TRIAL
CRM Méthode API Réussi Oui ACTIVE
CRM Méthode API Réussi Non ACTIVE_INCOMPLETE
CRM Virement bancaire En attente ACTIVE_PAYMENT_PENDING
Admin Méthode API Réussi Oui ACTIVE
Admin Virement bancaire En attente ACTIVE_PAYMENT_PENDING

Décision relative au circuit d'approbation

L'unité organisationnelle de l'employé a-t-elle un responsable ? L'employé EST-IL le responsable ? L'unité parent a-t-elle un responsable ? → Approuvant
Oui Non Responsable de l'unité organisationnelle
Oui Oui Oui Responsable de l'unité parent
Oui Oui Non Propriétaire de l'entreprise (auto-approbation si propriétaire)
Non Propriétaire de l'entreprise

Capacité d'écriture hors ligne

Type d'opération Capacité hors ligne ? Comportement de synchronisation
Pointage d'arrivée / Pointage de départ ✅ Oui Mise en file d'attente dans IndexedDB, synchronisation lors de la reconnexion
Saisie des dépenses (brouillon) ✅ Oui Mise en file d'attente, synchronisation lors de la reconnexion
Demande de congé (brouillon) ✅ Oui Mise en file d'attente, synchronisation lors de la reconnexion
Affichage du profil ✅ Oui (mis en cache) Lecture à partir du cache IndexedDB
Approbation des congés ❌ Non Nécessite une connexion
Approbation des engagements ❌ Non Nécessite une connexion
Calcul de la paie ❌ Non Nécessite une connexion
Réservation budgétaire ❌ Non Nécessite une connexion
Gestion des utilisateurs ❌ Non Nécessite une connexion
Opérations de facturation ❌ Non Nécessite une connexion

B.4 Exigences en matière de données

Modèle de données à trois niveaux pour les employés

Niveau 1 — Plan de contrôle (toujours présent) :
  Employé de base : nom, prénom, e-mail, téléphone, numéro d'employé,
  type_de_contrat_id (FK), org_unit_id (FK), position_id (FK),
  category_id (FK ou dérivé de Position→Catégorie),
  date_d'embauche, statut (ACTIF | EN CONGÉ | SUSPENDU | LICENCIÉ),
  contact_préféré (EMAIL | SMS)
  ↓ Suffisant pour que les fonctions Absence, Présence et Paie fonctionnent. 
  ↓ MVP Payroll utilise uniquement cette couche.

Couche 2 — HR Core (facultatif, vendable) : 
  Enrichi : date_of_birth, nationality, national_id_number, 
  marital_status, dependents_count, photo, emergency_contacts[], 
  bank_info (bank_name, account_number, IBAN), 
  current_contract_snapshot (start, end, probation_end, salary, grade), 
  pièces jointes[], historique des modifications[] 
  ↓ Dossier du personnel complet 
  ↓ Post-MVP : les informations bancaires permettent les ordres de paiement de la paie.

Couche 3 — Gestion des employés (facultative, vendable) : 
  Couche de processus : événements d'intégration[], événements de départ[], 
  historique des contrats[], historique des réaffectations[], 
  suivi de la période d'essai, suivi du renouvellement des CDD, 
  chronologie des événements immuables[], exportations de conformité 
  ↓ « Actes administratifs » — gestion formelle des processus RH

Résumé des entités clés

Entité Module propriétaire Portée du Tenant Champs clés
Tenant Plan de contrôle N/A (est la portée) company_name, country_code, employee_count, db_profile, status, onboarding_channel, fiscal_year_start_month, owner_user_id, owner_employment_status
Utilisateur Plan de contrôle Oui email, name, phone, tenant_associations [], statut
Employé Plan de contrôle Oui nom_de_famille, prénom, e-mail, téléphone, numéro_d'employé, type_de_contrat, identifiant_unité_organisationnelle, identifiant_poste, identifiant_catégorie, date_d'embauche, responsable (via l'unité organisationnelle), statut, contact_préféré
Unité organisationnelle Org & données de référence Oui nom, type, parent_id, manager_id, statut
Poste Org & données de référence Oui titre, description, category_id, department_id, statut
Catégorie d'employé Org & données de référence Oui nom, code, country_code, sort_order, is_system (prédéfinie ou personnalisée)
Contrat Type Données organisationnelles et données de base Oui nom, code, code_pays, durée_maximale_en_mois
Module_Tenant Plan de contrôle Oui code_module, statut, date_activation, date_désactivation
Entrée_audit Plan de contrôle Oui id_utilisateur, type_entité, id_entité, action, valeur_avant, valeur_après, tim estamp
CountryConfig Plan de contrôle Non (à l'échelle de la plateforme) code_pays, exercice_fiscal, type_config, données_config, date_d'entrée_en_vigueur

B.5 Implications multi-Tenants

Préoccupation Base de données partagée Schéma par Tenant Base de données par Tenant Base de données BYO
Isolation des Tenants Colonne tenant_id dans chaque table. Chaque requête inclut WHERE tenant_id = ?. Isolation du schéma. Les requêtes ne nécessitent pas de filtre tenant_id (le schéma EST le filtre). Isolation complète de la base de données. Pool de connexions par Tenant. Le Tenant fournit la connexion. Isolation complète.
Contrôle des modules Table tenant_modules dans la base de données partagée. Même table dans le schéma du Tenant. Même table dans la base de données du Tenant. Même table dans la base de données du Tenant.
Configuration du pays Table à l'échelle de la plateforme (pas au niveau du Tenant). Tous les Tenants lisent à partir de la même configuration. Identique — table à l'échelle de la plateforme dans un schéma partagé. Identique — base de données de la plateforme, pas base de données du Tenant. Identique — base de données de la plateforme.
Piste d'audit Lignes au niveau du Tenant dans la table d'audit partagée. Table d'audit par schéma. Table d'audit par base de données. Table d'audit par base de données.
Données organisationnelles et données de référence Lignes au niveau du Tenant. Tables par schéma. Tables par base de données. Tables par base de données.
Utilisateur multi-Tenant Table de mappage utilisateur→Tenant. JWT réémis à chaque changement de Tenant. L'utilisateur existe dans la base de données de la plateforme. Le changement de Tenant modifie le contexte du schéma. L'utilisateur existe dans la base de données de la plateforme. Le changement de Tenant modifie la connexion à la base de données. Identique.

Principe de conception : concevez d'abord pour BYO-DB (cas le plus difficile), puis simplifiez. Le modèle de données doit fonctionner sans dépendre des JOIN entre Tenants.


B.6 Dépendances entre modules

Détaillé dans §A.7 (événements et dépendances API). Principes clés :

  1. Les limites des modules Spring sont sacrées : les modules communiquent via des événements d'application pour les opérations asynchrones et via l'API REST pour les lectures synchrones. Ne jamais effectuer d'appels de méthode directs au-delà des limites des modules.
  2. Les noms d'événements sont des contrats : modifier le nom ou la charge utile d'un événement constitue une modification majeure. Les schémas d'événements doivent être versionnés.
  3. Les points de terminaison API sont des contrats : le backend sert à la fois les frontends Papillon et Enterprise. Les points de terminaison doivent être indépendants de l'interface utilisateur : ils doivent renvoyer des données, pas une présentation.
  4. Le contrôle des modules est appliqué au niveau de l'API : chaque point de terminaison vérifie TenantContext pour l'activation du module avant le traitement.

PARTIE C — Contraintes et limites


C.1 Conformité réglementaire — CI (Côte d'Ivoire)

Cadre supranational OHADA

L'OHADA fournit un *droit commercial supranational * via 11 actes uniformes. Actes clés pour ALTARYS :

Acte uniforme Pertinence Impact sur la plateforme
AUDCIF (Comptabilité) Cadre comptable révisé SYSCOHADA (2017). Plan comptable obligatoire. Clôture de l'année civile. Données de base du module comptable. Exercice fiscal par défaut janvier-décembre. Conservation des documents pendant 10 ans.
* AUSCGIE* (Sociétés commerciales) Formes de sociétés (SARL, SAS, SA, EI). Seuils pour les commissaires aux comptes. Champ « forme de société » du Tenant. Implications pour la catégorie des employés.
AUPSRVE (Recouvrement de créances) Règles de saisie sur salaire. Règles de retenue sur salaire (V2).

Critique : l'OHADA *

PAS* harmonise le droit du travail. Chaque pays a son propre Code du travail, son propre système de sécurité sociale et ses propres règles fiscales. La plateforme doit être configurable par pays, et non uniforme pour l'OHADA.

Droit du travail CI

  • Code du travail : Loi n°2015-532 du 20 juillet 2015
  • Types de contrats : CDI, CDD (max. 2 ans, renouvelable une fois par OHADA), Stage, Apprentissage, Journalier
  • Catégories d'employés : Cadre, Agent de maîtrise, Employé, Ouvrier (selon la Convention Collective Interprofessionnelle de CI)
  • Seuil de délégation du personnel : >10 employés (Décret n°2024-901 du 16 octobre 2024)
  • Règlement intérieur : obligatoire pour les entreprises de plus de 10 salariés
  • Employés de maison : explicitement hors du champ d'application d'ALTARYS. La plateforme cible uniquement les entreprises formelles.

Confidentialité des données en Côte d'Ivoire

  • Loi* : Loi n°2013-450 relative à la protection des données à caractère personnel
  • Autorité : ARTCI (Autorité de Régulation des Télécommunications/TIC de Côte d'Ivoire)
  • Transfert transfrontalier : nécessite l'autorisation formelle de l'ARTCI pour les données hébergées en dehors de la CEDEAO
  • Droits des employés : droit d'accès, de rectification et de portabilité des données personnelles
  • Implications pour la plateforme :
  • 🔴 ACTION CRITIQUE : l'autorisation de l'ARTCI pour le transfert transfrontalier de données N'A PAS ENCORE ÉTÉ DEMANDÉE. L'hébergement est prévu en Europe. Cela pourrait bloquer le MVP. Une consultation juridique est nécessaire immédiatement.

  • La fonctionnalité d'auto-exportation des employés (FR-PV-092) répond au droit à la portabilité.

  • Une politique de confidentialité et des accords de traitement des données doivent être mis en place.

CI Sécurité sociale (à titre indicatif uniquement — NON prêt à être mis en œuvre)

⚠️ Les taux suivants sont fournis à titre informatif uniquement. Ils proviennent de sources secondaires (Cleiss.fr) et d'une ordonnance de 2012. Ils DOIVENT faire l'objet de nouvelles recherches avec des citations de décrets primaires avant la mise en œuvre du module Paie.

Cotisation Taux Part de l'employeur Part de l'employé Plafond
Retraite 14 % 7,7 % 6,3 % 3 375 000 FCFA/mois
Prestations familiales (PF) 5 % 5 % 0 % 70 000 FCFA/mois
Maternité 0,75 % 0,75 % 0 % 70 000 FCFA/mois
Accidents du travail (AT/MP) 2-5 % 2-5 % 0 % 70 000 FCFA/mois
CMU (Santé) 1 000 FCFA/personne 500 FCFA 500 FCFA Forfait

Source : Cleiss.fr, barèmes CNPS CI, ordonnance n°2012-03. [À TITRE INDICATIF UNIQUEMENT — source non vérifiée, à confirmer auprès de la CNPS CI avant la mise en service de la paie]

Impôt CI (à titre indicatif uniquement)

  • ITS (Impôt sur Traitements et Salaires) : tranches et taux NON couverts par la recherche sur la plateforme. Renvoyé à la recherche juridique du module Paie.
  • ** Identifiant fiscal** : format IDU (Identifiant Unique) pour les entreprises CI.

SYSCOHADA 2017

  • Plan comptable standard applicable dans les 17 États membres de l'OHADA.
  • Préconfiguré lors de l'intégration du Tenant dans le cadre de la configuration du pays.
  • Principales classes de comptes pour les RH/la paie : classe 6 (charges), en particulier les comptes 64x (frais de personnel) et 66x (cotisations sociales).
  • L'exercice fiscal DOIT se terminer le 31 décembre conformément à l'article 7 de l'AUDCIF (voir TV-01 pour la décision de remplacement de la plateforme).

C.2 Exigences de localisation — CI

Aspect Exigence
Langue Français (langue principale et par défaut). Toutes les chaînes de l'interface utilisateur sont externalisées via i18n.
Devise XOF (franc CFA BCEAO). Aucune décimale. Affichage : 15 000 FCFA.
Format de date JJ/MM/AAAA
Format des nombres Espace comme séparateur de milliers : 1 000 000
Conventions de nommage Nom de famille en premier dans les contextes formels : KOUASSI Jean-Pierre
Format du numéro de téléphone Mobile CI : +225 XX XX XX XX XX (10 chiffres après l'indicatif du pays)
Heures d'ouverture Habituellement : 8h-12h, 14h30-17h30 (avec pause déjeuner). 40 h/semaine.
Jours fériés Définis par an dans le moteur de configuration du pays. ~12-14 par an pour la CI.
À venir : anglais Mode bilingue Cameroun (V2, mois 9+)
À venir : Portugais Guinée-Bissau (V2+)

C.3 Exigences en matière de sécurité

Exigence Mise en œuvre
Authentification Keycloak (OIDC/OAuth2). E-mail + mot de passe pour MVP. SSO/SAML pour Enterprise V2.
Revendications JWT user_id, tenant_id,country_code, roles[]. Rôles uniquement dans JWT — autorisations résolues côté serveur et mises en cache par session.
Isolation des Tenants Chaque requête de base de données inclut le contexte du Tenant. Le filtre Spring Security extrait tenant_id de JWT et définit TenantContext. Aucune fuite de données entre Tenants.
Modèle d'autorisation RBAC : mappage rôle → autorisation. Format d'autorisation : module.entity.action (par exemple, absence.leave_request.approve). Contrôle par module : autorisation refusée si le module est inactif.
Rôles par défaut DG, RH Manager, Comptable, Employé, Manager (attribués lors de l'intégration). Rôles personnalisés dans la version 2.
Piste d'audit Chaque création/mise à jour/suppression génère une entrée d'audit immuable. Valeurs avant/après au format JSON. Conservées pendant 10 ans.
Chiffrement HTTPS partout. Données au repos chiffrées (PostgreSQL TDE ou chiffrement du disque).
CAPTCHA Requis sur point de terminaison public d'auto-intégration. Limitation du débit sur tous les points de terminaison publics.
Données financières BigDecimal UNIQUEMENT pour tous les calculs financiers. Jamais double/flottant.
Politique en matière de mots de passe Minimum 8 caractères, majuscules et minuscules + chiffres. Géré par Keycloak.
Gestion des sessions Expiration JWT (configurable, 1 heure par défaut). Jetons d'actualisation.

# C.4 Hors champ

Les éléments suivants ne font explicitement PAS partie de la vision MVP de la plateforme :

Élément Raison Quand
Pays au-delà de CI MVP uniquement CI BJ + CM au mois 9, RDC au mois 15, SN au mois 18
Devise XAF Zone CEMAC (Cameroun) Mois 9 avec extension CM
Interface utilisateur en anglais/portugais Marchés anglophones et lusophones V2+
Profils DB B, C, D Schéma par Tenant, DB par Tenant, BYO-DB MVP
Applications mobiles natives iOS/Android V2+ (PWA sert les mobiles pour MVP)
SSO / OAuth / SAML Exigence informatique de l'entreprise Entreprise V2
Notifications générales par SMS Seulement SMS d'activation de compte dans MVP V2
Rôles personnalisés par Tenant Rôles par défaut uniquement pour MVP V2
Conventions collectives Paramètres par défaut du Code du travail uniquement V2
Structures multi-entités / groupes Entité unique par Tenant pour MVP V2 (Entreprise)
Centres de coûts Budget par service uniquement pour MVP V2
Employés de maison / domestiques Règles CNPS différentes, hors marché cible Exclus définitivement
Fichiers d'ordres de paiement des salaires MVP calcule les fiches de paie, pas de fichiers de virement bancaire Post -MVP (nécessite les informations bancaires HR Core)
Génération de documents (contrats, certificats) Partie intégrante d'ADVDOC V2 Post-MVP
Intégration avec les portails bancaires/gouvernementaux Processus manuels pour MVP V2+
Plusieurs propriétaires d'entreprise par Tenant Propriétaire unique pour MVP V2
Rapports avancés / BI Rapports standard uniquement pour MVP V2
Fonctionnalités de marque d'entreprise UX dense, opérations par lots, SSO, etc. Préparation du frontend pendant les mois 12 et 13, ventes pendant le mois 18
Limitation du débit API par Tenant Niveau IP de base sur les points de terminaison publics uniquement V2
Organisations matricielles Hiérarchie simple pour MVP V3 (Entreprise)

Exigences en matière d'infrastructure partagée (transversales)

Authentification et autorisation

  • Keycloak en tant que fournisseur d'identité (OIDC/OAuth 2)
  • MVP : domaine Keycloak unique, Tenants différenciés par des revendications JWT
  • JWT contient : user_id, tenant_id, country_code, roles[]
  • Autorisations résolues côté serveur à partir des mappages rôle→autorisation, mises en cache par session
  • Connexion via e-mail + mot de passe. Récupération du mot de passe via e-mail.
  • Prise en charge des utilisateurs multi-Tenants : compte Keycloak unique, sélecteur de Tenant dans l'application
  • V2+ : SSO/OAuth, domaine par Tenant d'entreprise pour l'isolation des silos

Résolution multi-Tenants

  • Tenant résolu à partir du jeton JWT à chaque requête
  • Le filtre Spring Security extrait tenant_id et country_code à partir du JWT → définit TenantContext (ThreadLocal / ScopedValue)
  • Chaque service et référentiel en aval utilise TenantContext pour définir la portée de l'accès aux données
  • 4 profils de base de données pris en charge (MVP : base de données partagée et base de données par Tenant uniquement)

Piste d'audit

  • Chaque création/mise à jour/suppression est enregistrée : qui, quand, quoi, valeurs avant/après (JSON)
  • Immuable — pas de suppression, pas de modification
  • Consultable par les administrateurs des Tenants (filtrable par entité, utilisateur, plage de dates)
  • Limité au Tenant (l'administrateur du Tenant ne voit que la piste d'audit de son Tenant)
  • L'administrateur de la plateforme peut effectuer des requêtes sur tous les Tenants
  • Conservé pendant au moins 10 ans (OHADA AUDCIF)

Assistance hors ligne

  • PWA avec Service Worker pour la mise en cache de l'application
  • IndexedDB pour la file d'attente d'écriture hors ligne et le cache de lecture
  • Indicateur d'état de synchronisation toujours visible
  • Enregistrement automatique de tous les champs du formulaire
  • Écritures hors ligne sélectives (voir FR-PV-060 à FR-PV-064)

i18n / Localisation

  • Français comme langue principale et par défaut
  • Toutes les chaînes utilisateur sont externalisées dans des fichiers de traduction
  • Format de la date : JJ/MM/AAAA
  • Format des nombres : espace comme séparateur des milliers
  • Devise : XOF avec 0 décimale

Service de notification

  • Dans l'application : WebSocket (en temps réel), mise en file d'attente pour une livraison hors ligne
  • E-mail : actions critiques, activation de compte, alertes
  • SMS : liens d'activation de compte/mot de passe uniquement (MVP)
  • Préférences de notification contrôlées par l'administrateur (MVP)

Pièce jointe de document de base

  • Backend MinIO pour le stockage de tous les documents des Tenants
  • Téléchargement/téléversement simple (pas de gestion des versions sans ADVDOC)
  • Compartiments de stockage au niveau du Tenant
  • Quotas de stockage appliqués par segment (S1-S6)
  • Conservation pendant 10 ans imposée par l'OHADA pour les documents de paie/comptabilité, indépendamment d'ADVDOC

Moteur de configuration par pays

  • Basé sur une base de données (non codé en dur) — l'administrateur peut effectuer des mises à jour sans redéploiement
  • Versionné par exercice fiscal
  • Stocke : barèmes fiscaux, taux de cotisations sociales, droits à congés, jours fériés, plan comptable SYSCOHADA, catégories par défaut, types de contrats par défaut
  • MVP : CI uniquement. Mois 9 : ajouter BJ + CM.

Glossaire (langage universel)

Concept (FR) Concept (EN) Définition Utilisé par
Tenant Tenant Une entreprise cliente utilisant la plateforme. Identifiée par tenant_id. Chacune dispose de son propre espace de données. Tous les modules
Employé Employé Une personne employée par un Tenant. Possède un type de contrat, un service, un poste, une catégorie. Base de référence dans CP ; enrichi par HR Core. HR Core, Emp Mgmt, Absence, Attendance, Payroll, etc.
Dossier du Personnel Dossier de l'employé Enregistrement complet des données de l'employé. Appartient à HR Core. HR Core, Emp Mgmt
Acte Administratif Événement administratif Enregistrement formel et immuable d'une action RH (intégration, départ, réaffectation). Emp Mgmt
Exercice Fiscal Exercice fiscal Période comptable de 12 mois. Par défaut, janvier-décembre (OHADA). Configurable avec avertissement. Budget, Engagement, Dépense, Comptabilité
Ligne Budgétaire Ligne budgétaire Montant alloué à une catégorie de dépenses au cours d'un exercice fiscal. Lignes budgétaires, Engagement, Dépense
Engagement Engagement Engagement formel à dépenser (par exemple, bon de commande). Réserve budgétaire. Gestion des engagements, Lignes budgétaires
Type de Congé Type de congé Catégorie d'absence (congés annuels, maladie, maternité). Chacune est soumise à des règles. Gestion des absences
Bulletin de Paie Bulletin de paie Document mensuel de calcul du salaire. Brut, déductions, net. Paie
Utilisateur Utilisateur Personne pouvant se connecter. Dispose de rôles/autorisations. Peut être ou non un employé. CP, tous les modules
Rôle Rôle Ensemble nommé d'autorisations (DG, responsable RH, comptable, employé, responsable). CP, appliqué partout
Entrée d'Audit Entrée d'audit Journal immuable indiquant qui a fait quoi, quand et à quelle entité. Tous les modules
Document Document Fichier joint à une entité. Pièce jointe de base en natif ; gestion des versions/conservation via ADVDOC. Tous les modules
Gérant / Propriétaire Propriétaire de l'entreprise Représentant légal/propriétaire du Tenant. Statut spécial : salarié ou indépendant. CP
Module Commercial Module vendable Une fonctionnalité achetable (14 au total). Réservée par Tenant. CP (restriction)
Plan de Base Plan de contrôle Base de la plateforme. Toujours actif. Non commercialisable. Tous les modules
Unité Organisationnelle Unité organisationnelle Nœud dans l'arborescence organisationnelle flexible (entité, site, service). Org & Master Data
Poste Poste Emploi/fonction dans le catalogue. Lié à la catégorie d'employé. Org & Master Data
Catégorie de Salarié Catégorie d'employé Classification juridique (Cadre, Agent de maîtrise, Employé, Ouvrier). Affecte CNPS/ITS. Org & Données de base, Paie
Opérateur Opérateur Tenant Tenant spécial pour le personnel d'ALTARYS et les entreprises partenaires. Utilisé pour le CRM interne. CRM

Annexe : Résumé détaillé des modules

1. HR Core (HRCORE) — MVP

  • Système d'enregistrement des employés (dossier du personnel)
  • Enrichit la base de référence CP avec des données personnelles, des informations bancaires, des contacts d'urgence, des photos, des documents
  • Affichage du profil en libre-service, importation en masse, recherche avancée
  • Module optionnel vendable — La base de référence CP dessert tous les modules sans lui

2. Gestion des employés (EMPMGT) — Post-MVP

  • Couche de processus administratifs (actes administratifs)
  • Événements d'intégration/de départ, cycle de vie des contrats, suivi des réaffectations
  • Alertes de période d'essai et de renouvellement de CDD, exportations de conformité
  • Peut fonctionner sur la base CP sans HR Core (ensemble de fonctionnalités réduit)

3. Gestion des congés et des absences (ABSMGT) — MVP

  • Types d'absences, règles d'accumulation, soldes individuels
  • Demandes des employés, chaîne d'approbation basée sur l'unité organisationnelle
  • Documents justificatifs, historique, exportation de la paie
  • Règles spécifiques à chaque pays via Country Config

4. Contrôle des présences par code QR (QRCONTR) — MVP

  • Génération de codes QR, scan mobile, enregistrement de l'horodatage
  • Géolocalisation optionnelle, détection des retards/absences
  • Historique quotidien, exportations CSV/Excel, vues du responsable

5. Temps et activités (TIMACT) — Post-MVP

  • Gestion des plannings, cycles de travail, rotations
  • Saisie avancée des temps, heures supplémentaires, travail de nuit/week-end
  • Suivi des activités/projets, exportation des salaires

6. HSE (HSEMGT) — Post-MVP

  • Visites médicales, évaluations de la condition physique
  • Accidents du travail, registres réglementaires, suivi des EPI
  • Évaluations des risques, alertes de conformité

7. Gestion des dépenses (EXPMGT) — Post-MVP

  • Saisie des dépenses, catégories, photos des reçus, workflows d'approbation
  • Rapprochement, exportation comptable, expérience utilisateur axée sur le mobile
  • Nécessite des lignes budgétaires (incluses automatiquement)

8. Gestion des engagements (COMMIT) — MVP

  • Création de demandes, affectation aux centres de coûts, approbations à plusieurs niveaux
  • Suivi de la consommation, analyse des engagements par rapport aux dépenses réelles
  • Nécessite des lignes budgétaires (incluses automatiquement)

9. Paie (PAYROL) — MVP

  • Configuration des éléments de paie, calculs, génération des fiches de paie
  • MVP : fiches de paie uniquement, pas d'ordres de paiement
  • Déclarations sociales/fiscales, exportation comptable
  • Module le plus complexe — nécessite des données stables sur les employés, les absences et les présences

10-13. Talents et développement — Post-MVP

  • Performance et objectifs (PERFOB) : évaluations, commentaires, indicateurs clés de performance
  • Compétences et GPEC (GPEC) : cadre de compétences, analyse des écarts, planification de la relève
  • Apprentissage et formation (LTRAIN) : catalogue de formations, sessions, budgets
  • Recrutement/ATS (ATSMGT) : offres d'emploi, pipeline de candidats, embauche

14. Gestion avancée des documents (ADVDOC) — Post-MVP

  • Moteur de documents à l'échelle de la plateforme (backend MinIO)
  • Gestion des versions, politiques de conservation, gestion du cycle de vie, recherche avancée
  • Améliore les fonctionnalités de base de tous les modules en matière de pièces jointes lorsqu'il est actif
  • Prix : à déterminer (module vendable séparément)

*Ce PRD+FSD a été produit par la personnalité ANALYST sur la base d'un entretien exhaustif avec le Business Analyst/Product Owner. Il sert de référence fondamentale pour TOUS les PRD, documents d'architecture et spécifications de conception ultérieurs au niveau des modules. *

Tous les PRD au niveau des modules doivent faire référence à ce document pour : l'infrastructure partagée, les événements inter-modules, les conventions de modèle de données, la segmentation des Tenants, la logique de la chaîne d'approbation, la stratégie hors ligne et le cadre réglementaire.