Core HR (HRCORE) — Hybride PRD+FSD¶
Code du module : HRCORE
Produit : Papillon HR Suite + ALTARYS ENTERPRISE HR Suite
Pays concernés : CI (Côte d'Ivoire) — MVP
Version : 1.0
Date : 01/03/2026
Auteur : ANALYST (Claude Code)
PARTIE A — Exigences du produit (PRD)¶
A.1 Résumé¶
Le problème¶
Les entreprises en Côte d'Ivoire doivent tenir à jour un dossier du personnel pour chaque employé, conformément au Code du travail 2015 (loi n° 2015-532) et aux obligations d'enregistrement des employeurs. La plupart des PME gèrent cela à l'aide de dossiers papier, de feuilles de calcul Excel ou de photos de documents sur WhatsApp. Cela entraîne :
- Risque de non-conformité : documents obligatoires manquants (certificats médicaux, attestations CNPS, copies de pièces d'identité) découverts uniquement lors des inspections du travail.
- Fragilité des données : dossiers des employés dispersés dans des dossiers physiques, des clés USB et plusieurs fichiers Excel — aucune source unique de vérité.
- Inefficacité opérationnelle : les responsables RH passent des heures à rechercher des informations sur les employés, à générer manuellement des registres et à répondre aux demandes des employés concernant des certificats ou des informations sur leur profil.
- Risque lié à la confidentialité : les données personnelles sensibles (numéros d'identité nationaux, informations bancaires, dossiers médicaux) sont stockées dans des fichiers non protégés, sans piste d'audit ni contrôle d'accès.
La solution¶
Core HR (HRCORE) est la couche de données enrichies sur les employés qui transforme le dossier de base des employés du Control Plane en un dossier du personnel complet, conforme et consultable. Il s'agit :
- D'un module d'enrichissement des données : couche 2 au-dessus de l'entité de base des employés du Control Plane (couche 1). Il ajoute des données personnelles, des informations bancaires, des contacts d'urgence, des photos, des documents et la gestion des personnes à charge.
- PAS un module de processus : la gestion du cycle de vie des contrats, les workflows d'intégration/de départ, les événements administratifs, les déclarations, le suivi des périodes d'essai et les procédures de licenciement relèvent de Employee Management (EMPMGT). Core HR concerne les données, EMPMGT concerne les processus.
- Un module optionnel commercialisable : Les tenants qui n'utilisent pas Core HR utilisent la base de référence Control Plane, qui est suffisante pour les absences, les présences et la paie. Core HR enrichit le dossier des employés à des fins de conformité, de reporting et pour offrir une expérience utilisateur plus riche.
Position du module dans la plateforme¶
Control Plane (couche 1 — toujours présente)
└── Employé de base : nom, prénom, e-mail, téléphone,
numéro d'employé, type de contrat, unité organisationnelle, poste,
catégorie, date d'embauche, statut, contact préféré
↓ Suffisant pour les absences, les présences et la paie
Core HR (couche 2 — optionnel, vendable)
└── Employé enrichi : date_of_birth, nationality, national_id,
cnps_number, marital_status, dependents[], bank_info,
emergency_contacts[], photo, documents[], address,
gender, blood_type, place_of_birth, parents, qualifications,
previous_employer, change_history_view
↓ « Dossier du personnel » complet
Gestion des employés (couche 3 — facultative, commercialisable)
└── Couche de processus : intégration, départ, cycle de vie du contrat,
suivi de la période d'essai, événements administratifs, déclarations
↓ « Actes administratifs »
A.2 Personnages utilisateurs¶
P2 : Responsable RH / HR Manager —¶
- Utilisateur principal de Core HR
- Utilisations : crée et enrichit les profils des employés, gère les documents, génère le registre du personnel, gère les informations bancaires, répond aux demandes de données des employés
- Préoccupation principale : « Compléter les dossiers des employés, trouver rapidement les informations, être prêt pour les inspections. »
- Contexte Papillon : Souvent une seule personne (conjoint(e) du DG, assistant(e) de confiance) gérant 5 à 50 dossiers d'employés. Transition depuis le papier/Excel. Besoin de simplicité et d'accompagnement — par exemple, indicateurs visuels des dossiers d'employés incomplets.
- Contexte Entreprise : Responsable RH professionnel gérant des centaines de profils. Besoin d'opérations groupées et d'une saisie de données efficace. (Remarque : Core HR est sans différenciation de marque pour la V1.)
P1 : Directeur général (DG) / PDG —¶
- Utilisateur secondaire
- Utilisations : consulte les profils des employés, n'approuve rien dans Core HR (les workflows d'approbation se trouvent dans EMPMGT), accède aux tableaux de bord et aux statistiques
- Contexte Papillon : dans les très petites entreprises (S1-S2), le DG EST le responsable RH — la même personne occupe les deux fonctions.
P4 : Employé —¶
- Utilisateur en libre-service
- Utilisations : consulte son propre profil (enrichi lorsque HR Core est actif), met à jour ses coordonnées personnelles (téléphone, e-mail, adresse), gère ses contacts d'urgence, télécharge/met à jour sa photo
- Préoccupation principale : « Voir mes informations, mettre à jour mon numéro de téléphone, vérifier que mon numéro CNPS est correct. »
- Contexte Papillon : faible maîtrise du numérique, téléphone Android, connectivité intermittente. Besoin d'une simplicité absolue.
P3 : Comptable —¶
- Utilisateur financier en lecture seule
- Utilisations : lit les données financières des employés (informations bancaires, catégorie d'employé) pour le rapprochement des salaires/comptes
- Préoccupation principale : « Vérifier que les coordonnées bancaires correspondent aux registres de paie. »
- NE FAIT PAS : modifier les profils des employés, accéder aux données personnelles (numéro d'identification national, documents médicaux)
P-MGR : Manager (N+1) —¶
- Utilisateur en lecture seule de l'équipe
- Utilisations : consulte les profils de ses subordonnés directs (employés de son unité organisationnelle). Accès en lecture seule.
- Préoccupation principale : « Connaître les informations clés sur les membres de mon équipe sans passer par les RH. »
A.3 Users stories¶
US-HRCORE-001 : Profil d'employé enrichi¶
En tant que responsable RH, je souhaite enrichir le profil d'un employé avec des données personnelles, des contacts d'urgence, des informations bancaires, une photo et des documents, afin de conserver un dossier du personnel complet et conforme.
Critères d'acceptation :
- Étant donné que j'ai le module HRCORE actif et le rôle de responsable RH, Lorsque j'ouvre le profil d'un employé, je vois tous les champs de la couche 2 disponibles pour modification.
- Étant donné que je remplis tous les champs obligatoires de HR Core, lorsque j'enregistre le profil, le système consigne les modifications dans la piste d'audit et publie un événement EmployeeUpdated.
- Étant donné que je laisse le champ du numéro CNPS vide, lorsque j'enregistre, le système enregistre correctement mais crée une alerte persistante me rappelant d'enregistrer l'employé auprès du CNPS.
US-HRCORE-002 : Affichage du profil en libre-service des employés¶
En tant qu' employé, je souhaite afficher mon profil complet (données personnelles, résumé des informations bancaires, contacts d'urgence, documents), afin de pouvoir vérifier que mes informations sont correctes et à jour.
Critères d'acceptation : - Étant donné que je suis un employé avec un compte actif et que HR Core est actif pour mon tenant, lorsque je navigue vers « Mon profil », je vois alors mon profil enrichi avec toutes les données de couche 2. - Étant donné que je consulte mes informations bancaires, je ne vois alors que les 4 derniers chiffres de mon numéro de compte (affichage masqué). - Étant donné que je suis hors ligne, lorsque je consulte mon profil, je vois alors la version mise en cache de ma dernière connexion en ligne.
US-HRCORE-003 : Modification par l'employé en libre-service¶
En tant qu' employé, je souhaite mettre à jour mon numéro de téléphone, mon adresse e-mail personnelle, mon adresse, mes contacts d'urgence et ma photo, afin que mes informations restent à jour sans avoir à attendre le service RH.
Critères d'acceptation :
- Étant donné que je suis un employé, lorsque je modifie mon numéro de téléphone et que j'enregistre, la modification prend effet immédiatement (aucune approbation n'est nécessaire) et un événement EmployeeUpdated est publié.
- Étant donné que je suis hors ligne, lorsque je modifie mon adresse et que j'enregistre, la modification est mise en file d'attente dans IndexedDB et synchronisée lorsque la connexion est rétablie dans les 30 secondes.
- Étant donné que j'essaie de modifier mon numéro d'identité national, le champ est en lecture seule et le message « Contactez les RH pour modifier cette information » s'affiche.
US-HRCORE-004 : Gestion des informations bancaires¶
En tant que responsable RH, je souhaite gérer les informations bancaires des employés (nom de la banque, numéro de compte, IBAN/RIB), afin que le service de paie puisse traiter correctement les paiements de salaire (post-MVP).
Critères d'acceptation :
- Étant donné que j'ai le rôle de responsable RH ou de DG, lorsque je mets à jour les informations bancaires d'un employé, la modification est alors enregistrée dans la piste d'audit et un événement EmployeeBankInfoChanged est publié.
- Étant donné que je suis un employé, lorsque j'essaie de modifier mes informations bancaires, le champ est alors en lecture seule.
- Étant donné que je suis comptable, lorsque je consulte les informations bancaires d'un employé, je vois alors toutes les coordonnées bancaires (en lecture seule).
US-HRCORE-005 : Pièce jointe de document avec taxonomie¶
En tant que responsable RH, je souhaite joindre des documents au profil d'un employé avec des catégories structurées (contrat, certificat médical, identité, attestation CNPS, etc.), afin de pouvoir organiser et trouver facilement les documents et vérifier que les dossiers sont complets.
Critères d'acceptation : - Étant donné que je télécharge un document, lorsque je sélectionne une catégorie dans le menu déroulant, le document est stocké dans MinIO avec les métadonnées de la catégorie. - Étant donné que le système a pré-rempli les catégories, lorsque j'ai besoin d'une catégorie qui ne figure pas dans la liste, alors je peux contacter le DG/l'administrateur pour ajouter une catégorie personnalisée (V1 : gérée par l'administrateur ; V2 : création en ligne). - Étant donné que je consulte l'onglet « Documents » d'un employé, lorsque je filtre par catégorie, je ne vois alors que les documents de cette catégorie.
US-HRCORE-006 : Recherche plein texte des employés¶
En tant que responsable RH, je souhaite disposer d'un champ de recherche unique qui recherche les noms des employés et les champs configurables à l'aide de la recherche plein texte PostgreSQL, afin de pouvoir trouver rapidement n'importe quel employé sans avoir à naviguer dans des formulaires de filtrage complexes.
Critères d'acceptation :
- Étant donné que je tape « Kouassi » dans le champ de recherche, lorsque j'appuie sur Entrée, je vois tous les employés dont le nom ou le prénom correspond à « Kouassi ».
- Si je tape « Comptabilité » dans le champ de recherche, lorsque j'appuie sur Entrée, je vois tous les employés du service Comptabilité (le service est un champ de recherche par défaut).
- Si je suis directeur général/directeur des ressources humaines, lorsque je vais dans la configuration de la recherche, je peux ajouter ou supprimer des champs de l'index de recherche en texte intégral (par exemple, ajouter cnps_number ou national _id_number).
US-HRCORE-007 : Importation groupée d'employés¶
En tant que responsable RH ou DG, je souhaite importer en masse des employés via Excel avec les champs d'enrichissement HR Core inclus, afin de pouvoir migrer rapidement nos données existantes sur les employés au lieu de saisir les profils un par un.
Critères d'acceptation : - Étant donné que HR Core est actif, lorsque je télécharge le modèle d'importation, celui-ci inclut tous les champs de la couche 1 (CP) + les champs d'enrichissement de la couche 2 (HR Core). - Étant donné que je télécharge un fichier Excel rempli, lorsque le système l'analyse, je vois alors un tableau de confirmation modifiable avec les erreurs de validation mises en évidence (par exemple, numéros d'employés en double, format CNPS non valide). - Étant donné que certains champs HR Core sont laissés vides dans l'importation, lorsque je soumets, les employés sont alors créés avec les données fournies, sans échec de validation sur les champs HR Core facultatifs vides.
US-HRCORE-008 : Exportation du registre du personnel (Fascicule 1)¶
En tant que responsable RH, je souhaite exporter le registre du personnel (Fascicule 1 — données personnelles) sous forme de document PDF ou Excel conforme, afin d'être prêt pour les inspections du travail et les audits de la CNPS.
Critères d'acceptation : - Étant donné que je clique sur « Exporter le registre du personnel », lorsque l'exportation est générée, elle contient tous les employés actifs et licenciés avec les champs légalement requis (numéro d'enregistrement séquentiel, nom complet, date de naissance, nationalité, poste, catégorie, date d'embauche, numéro CNPS, etc.). - Étant donné que le numéro CNPS d'un employé est manquant, lorsque l'exportation est générée, le champ affiche « Non renseigné » et l'exportation inclut un résumé d'avertissement indiquant que les enregistrements sont incomplets.
US-HRCORE-009 : Gestion des photos des employés¶
En tant que responsable RH ou employé (libre-service), je souhaite télécharger et recadrer une photo d'employé pour son profil, afin que l'employé soit identifiable visuellement sur la plateforme et sur les badges d'identification.
Critères d'acceptation : - Lorsque je télécharge une photo, lorsque j'atteins l'étape du recadrage, je vois un outil de recadrage imposant un rapport d'aspect portrait de 3:4. - Une fois le recadrage confirmé, le système génère une vignette (48 px pour les vues en liste) et une version moyenne (150 px pour la fiche de profil), stockées dans MinIO. - Si la photo dépasse 2 Mo, lorsque je la télécharge, le message d'erreur « La photo ne doit pas dépasser 2 Mo » s'affiche.
US-HRCORE-010 : Gestion des personnes à charge¶
En tant que responsable RH, je souhaite gérer une liste détaillée des personnes à charge des employés (conjoint, enfants, autres personnes à charge) avec leurs informations personnelles, afin que le service de paie puisse calculer correctement les retenues fiscales (ITS) et les cotisations sociales (allocations familiales CNPS).
Critères d'acceptation :
- Étant donné que j'ajoute une personne à charge, lorsque je remplis le nom, la date de naissance, la relation (conjoint(e), enfant, autre personne à charge), le sexe, la personne à charge est alors enregistrée et dependents_count et number_of_children sont automatiquement recalculés.
- Étant donné que je marque un enfant à charge comme « scolarisé » et que je joins une attestation scolaire, alors l'indicateur school_attestation_attached est défini sur true.
- Si je supprime une personne à charge, alors les comptes sont recalculés et la modification est consignée dans la piste d'audit.
US-HRCORE-011 : Affichage de l'historique des modifications¶
En tant que responsable RH, je souhaite voir un historique lisible des modifications apportées au profil d'un employé, afin de pouvoir retracer qui a modifié quoi et quand à des fins d'audit et de conformité.
Critères d'acceptation : - Étant donné que j'ouvre l'onglet « Historique des modifications » d'un employé, lorsque je le consulte, je vois une liste chronologique des modifications avec : la date, l'utilisateur qui a effectué la modification, le nom du champ (en français), l'ancienne valeur, la nouvelle valeur. - Étant donné que l'historique des modifications provient de la piste d'audit de la plateforme (AuditEntry), lorsque je le consulte, les données d'audit brutes sont alors traduites dans un format français convivial.
US-HRCORE-012 : Alertes de données manquantes¶
En tant que responsable RH, je souhaite que le système m'alerte lorsque des informations essentielles manquent dans les profils des employés (numéro CNPS, certificat médical, pièce d'identité), afin que je puisse compléter les dossiers de manière proactive avant les inspections ou les audits.
Critères d'acceptation : - Étant donné que le numéro CNPS d'un employé est vide, lorsque je consulte le tableau de bord RH ou la liste des employés, je vois alors un badge d'alerte persistant. - Étant donné que l'alerte est active depuis plus de 30 jours, lorsque je consulte le tableau de bord, l'alerte est alors escaladée (surlignée en rouge) . - Étant donné que je remplis le numéro CNPS manquant, l'alerte est automatiquement supprimée.
A.4 Exigences non fonctionnelles¶
| Exigence | Cible | Remarques |
|---|---|---|
| Temps de chargement du profil | < 1,5 seconde avec une connexion 3G | Page de profil de l'employé (tous les onglets) |
| Temps de réponse de la recherche | < 500 ms pour une recherche en texte intégral avec jusqu'à 350 employés | PostgreSQL FTS doit être indexé |
| Importation en masse | Traitement de 500 employés en moins de 30 secondes | Tâche en arrière-plan avec indicateur de progression |
| Téléchargement de photos | < 3 secondes (téléchargement + recadrage + génération de vignettes) | Recadrage côté client, vignettes côté serveur |
| Exportation du registre | < 10 secondes pour 350 employés | Génération en arrière-plan avec lien de téléchargement |
| Affichage du profil hors ligne | Disponible dans les 200 ms à partir d'IndexedDB | Mis en cache lors du premier affichage en ligne |
| Modifications simultanées du profil | Modifications en ligne uniquement pour le responsable RH → aucun risque de conflit | Modifications en libre-service hors ligne → éditeur unique (l'employé), aucun conflit |
| Stockage des documents | Compartiment MinIO par tenant, soumis à des quotas de stockage par segment (S1-S6) | Conforme aux quotas de stockage de la vision de la plateforme §A.8 |
| Piste d'audit | Chaque création/mise à jour/suppression de données d'employé génère une entrée d'audit immuable | Exigence à l'échelle de la plateforme (FR-PV-090-091) |
A.5 Portée du MVP (Core HR V1)¶
Dans la V1 (première version de Core HR)¶
- Profil enrichi de l'employé (tous les champs de la couche 2 selon §B.1)
- Liste détaillée des personnes à charge (nom, date de naissance, lien de parenté, sexe, attestation scolaire)
- Contacts d'urgence (1 à 2 par employé)
- Photo de l'employé (téléchargement + recadrage côté client + génération de vignettes)
- Gestion des informations bancaires (écriture réservée aux RH, affichage masqué pour les employés, lecture complète pour les comptables)
- Pièce jointe avec taxonomie structurée (catégories prédéfinies par le système + catégories personnalisées par l'administrateur)
- Affichage du profil en libre-service pour les employés (enrichi lorsque Core HR est actif)
- Modification minimale en libre-service pour les employés (téléphone, e-mail personnel, adresse, contacts d'urgence, photo)
- Champ de recherche plein texte unique (PostgreSQL FTS, champs de recherche configurables)
- Importation groupée des employés (modèle dynamique incluant les champs HR Core)
- Exportation du Registre du personnel Fascicule 1 (PDF/Excel)
- Historique des modifications formaté (affichage de l'interface utilisateur sur la piste d'audit de la plateforme)
- Génération automatique du numéro d'employé (
{PREFIX}-{YEAR}-{MM}-{SEQ}) - Alertes de données manquantes (numéro CNPS, documents obligatoires)
- Matrice des autorisations : DG/RH complète, Manager lecture équipe, Comptable lecture financière, Employé libre-service
Hors V1 — Core HR V2 (améliorations futures)¶
- Champs personnalisés pour les employés (champs supplémentaires définis par le tenant au-delà du schéma standard)
- Exportation des données des employés vers Excel/CSV avec sélection des colonnes
- Gestion avancée des photos (téléchargement groupé de photos, génération d'un répertoire de photos)
- Libre-service pour les employés : demande de modification du profil avec workflow d'approbation (soumission de la modification des informations bancaires → approbation par les RH)
- Organigramme des employés (organigramme visuel)
- Répertoire des employés (répertoire des employés consultable à l'échelle de l'entreprise)
- Intégration avec les portails gouvernementaux (CNPS en ligne, e-impôts CI)
- Expansion multi-pays (champs et registres spécifiques aux pays BJ, CM)
- Politiques de conservation personnalisées par catégorie de documents (nécessite ADVDOC)
A.6 Questions ouvertes¶
| # | Question | Priorité | Statut |
|---|---|---|---|
| OQ-HRCORE-01 | Confidentialité des données CI (loi n°2013-450) : Core HR stocke les données les plus sensibles des employés (numéro d'identification national, informations bancaires, certificats médicaux, état civil). Quelles sont les obligations spécifiques en matière de collecte, de stockage et de traitement de ces données ? Quel consentement est requis de la part des employés ? L'employeur doit-il enregistrer le traitement des données auprès de l'ARTCI ? | 🔴 CRITIQUE | Non résolue — reportée depuis la vision de la plateforme OQ-01. Nécessite une recherche juridique ciblée sur la loi 2013-450 telle qu'elle s'applique au traitement des données RH par l'employeur. |
| OQ-HRCORE-02 | Statut actuel de la CCI 1977 : les catégories d'employés (cadre, agent de maîtrise, employé, ouvrier) sont issues de la CCI 1977. Cette convention a-t-elle été révisée ou remplacée ? Si oui, les noms et définitions des catégories ont peut-être changé. | 🟡 ÉLEVÉ | Non résolu. Utilisation des catégories CCI 1977 par défaut. Voir TV-HRCORE-01. |
| OQ-HRCORE-03 | Seuil de délégué du personnel (CI) : à partir de quel effectif les employeurs CI sont-ils tenus d'avoir des délégués du personnel ? Affecte les flux de travail des PME(cible Papillon : 2 à 350 employés). De nombreux tenants se situeront en dessous ou à proximité de ce seuil. | 🟡 ÉLEVÉ | Non résolu. Signalé dans l'audit juridique CHECK 4 + CHECK 5 écart n° 3. Pertinent pour EMPMGT plus que pour Core HR, mais le seuil affecte le tableau de bord du nombre d'employés que Core HR peut afficher. |
| OQ-HRCORE-04 | Conservation des documents : base légale : conservation de 10 ans adoptée (alignée sur l'OHADA AUDCIF pour plus de simplicité). Mais aucune base légale CI explicite n'a été trouvée pour la conservation des données personnelles des employés en particulier. La déduction de 5 ans (délai de prescription + audits CNPS) provient de la recherche juridique. À confirmer. | 🟢 MOYEN | Validé temporairement à 10 ans. Voir TV-HRCORE-02. |
| OQ-HRCORE-05 | Validation du format du numéro CNPS : quel est le format exact d'un numéro d'enregistrement CNPS CI ? Combien de chiffres/caractères ? Y a-t-il un chiffre de contrôle ? Le système doit valider le format lors de la saisie. | 🟢 MOYEN | Non résolu. À mettre en œuvre sous forme de texte libre avec validation regex facultative lorsque le format est confirmé. |
| OQ-HRCORE-06 | Exigences en matière de certificat d'aptitude médicale : quand un certificat doit-il être obtenu (avant l'embauche ? périodiquement ?) ? Par qui ? À quelle fréquence ? Coût à la charge de l'employeur ? A une incidence sur les contrôles d'exhaustivité des documents. | 🟢 MOYEN | Non résolu. Signalé dans l'audit juridique CHECK 5, lacune n° 13. Le module RH de base devrait assurer le suivi du document, mais la logique de fréquence/renouvellement pourrait relever du module HSE. |
| OQ-HRCORE-07 | Registre d'employeur : obligatoire pour toutes les tailles d'entreprise ? : Le registre de l'employeur en 3 fascicules est-il obligatoire pour tous les employeurs, quelle que soit leur taille, y compris ceux qui n'ont qu'un seul employé ? Cela affecte l'applicabilité de la fonctionnalité d'exportation du registre. | 🟢 MOYEN | Non résolu. Signalé dans l'audit juridique CHECK 4. Considéré comme obligatoire pour tous pour Core HR V1. |
A.7 Temporairement validé¶
| # | Élément | Valeur actuelle | Risque | Action requise |
|---|---|---|---|---|
| TV-HRCORE-01 | Catégories d'employés (CCI 1977) | Valeurs par défaut du système : Cadre, Cadre supérieur, Agent de maîtrise, Employé/Technicien, Ouvrier. Source : CCI 1977. | La CCI a peut-être été révisée. Les catégories et leurs définitions ont peut-être changé. | Vérifier l'état actuel de la CCI 1977. Si elle a été mise à jour, ajuster les catégories pré-définies. |
| TV-HRCORE-02 | Période de conservation des données des employés | 10 ans après la fin du contrat (conforme à la conservation des données salariales/comptables de l'OHADA AUDCIF). | Aucune base légale explicite dans le CI pour les données personnelles des employés en particulier. Il se peut que les données personnelles soient conservées trop longtemps, ce qui pourrait entrer en conflit avec les principes de minimisation des données de la loi 2013-450. | Confirmer auprès d'un conseiller juridique si la conservation des données personnelles (numéro d'identité national, informations bancaires) pendant 10 ans est proportionnée ou si une période plus courte avec anonymisation est requise. |
| TV-HRCORE-03 | CI Art. 14.x numérotation décimale | Les citations de recherche juridique utilisent une numérotation décimale (Art. 14.1, 14. 2, 14.4, etc.) pour le Code du travail 2015. | Ce format de numérotation n'a pas été vérifié par rapport à une copie physique/numérique de la loi. Il pourrait s'agir d'un artefact de Perplexity. | Vérification ponctuelle : vérifier le Code du travail 2015 CI actuel pour confirmer le format de numérotation des articles. Si cela est confirmé, toutes les citations sont fiables. |
PARTIE B — Spécifications fonctionnelles (FSD)¶
B.1 Modèle de données — Enrichissement des données sur les employés (couche 2)¶
Champs d'enrichissement des données sur les employés (Core HR s'ajoute à la base de référence CP)¶
| Champ | Type | Obligatoire ? | Modifiable par l'employé ? | Remarques |
|---|---|---|---|---|
last_name |
VARCHAR(100) | OUI | NON | Correction CP : remplace full_name. |
first_name |
VARCHAR(150) | OUI | NON | Peut contenir plusieurs prénoms (courant en CI : « Jean-Pierre Koffi ») |
date_of_birth |
DATE | OUI | NON | Format JJ/MM/AAAA |
place_of_birth |
VARCHAR(200) | NON | NON | Lieu de naissance — courant sur les formulaires administratifs CI |
gender |
ENUM(MALE, FEMALE) | OUI | NON | |
nationality |
VARCHAR(100) | OUI | NON | Par défaut : Ivoirienne |
national_id_number |
VARCHAR(50) | NON | NON | Numéro de CNI ou de passeport |
national_id_type |
ENUM(CNI, PASSPORT, TITRE_SEJOUR, OTHER) | NON | NON | Type de document d'identité |
cnps_registration_number |
VARCHAR(30) | NON (avec alerte) | NON | Facultatif à la création, alerte persistante en cas d'absence. Voir FR-HRCORE-020. |
tax_id |
VARCHAR(50) | NON | NON | Identifiant fiscal personnel (le cas échéant) |
marital_status |
ENUM(CELIBATAIRE, MARIE, DIVORCE, VEUF, UNION_LIBRE) | NON | NON | Affecte les déductions fiscales |
blood_type |
ENUM(A_POS, A_NEG, B_POS, B_NEG, AB_POS, AB_NEG, O_POS, O_NEG, UNKNOWN) | NON | NON | Informations médicales d'urgence |
father_name |
VARCHAR(200) | NON | NON | Courant dans les documents administratifs CI |
mother_name |
VARCHAR(200) | NON | NON | Courant dans les documents administratifs CI |
professional_qualifications |
TEXT | NON | NON | Diplômes, certifications (texte libre pour V1) |
previous_employer |
VARCHAR(200) | NON | NON | Pour les calculs de transfert/ancienneté |
previous_employer_exit_date |
DATE | NON | NON | Pour les calculs de continuité d'ancienneté |
Champs d'adresse (semi-structurés)¶
| Champ | Type | Obligatoire ? | Modifiable par l'employé ? | Remarques |
|---|---|---|---|---|
address_city |
VARCHAR(100) | NON | OUI | Liste déroulante avec les principales villes CI + option de texte libre |
address_commune |
VARCHAR(150) | NON | OUI | Commune / Quartier (texte libre) |
address_details |
VARCHAR(500) | NON | OUI | Rue, point de repère, bâtiment (texte libre) |
Champs relatifs aux informations bancaires¶
| Champ | Type | Obligatoire ? | Modifiable par l'employé ? | Remarques |
|---|---|---|---|---|
bank_name |
VARCHAR(100) | NON | NON | Gestion réservée aux RH |
bank_account_number |
VARCHAR(50) | NON | NON | Affichage masqué pour l'employé (4 derniers chiffres) |
bank_iban |
VARCHAR(50) | NON | NON | Numéro de compte bancaire international (le cas échéant) |
bank_rib_key |
VARCHAR(10) | NON | NON | Clé RIB (spécifique aux banques de l'UEMOA) |
bank_branch_code |
VARCHAR(20) | NON | NON | Code agence |
Champs de contact (modifiables par l'employé)¶
| Champ | Type | Obligatoire ? | Modifiable par l'employé ? | Remarques |
|---|---|---|---|---|
personal_email |
VARCHAR(255) | NON | OUI | Distinct de l'adresse e-mail professionnelle (dans CP) |
personal_phone |
VARCHAR (20) | NON | OUI | Distinct du numéro de téléphone professionnel (dans CP) |
Photo¶
| Champ | Type | Remarques |
|---|---|---|
photo_original_key |
VARCHAR(500) | Clé d'objet MinIO pour la photo originale |
| photo_medium_key | VARCHAR(500) | Version 150px |
| photo_thumbnail_key | VARCHAR(500) | Version 48px |
B.2 Sous-entités¶
Contact d'urgence¶
| Champ | Type | Obligatoire ? | Remarques |
|---|---|---|---|
id |
UUID | — | |
employee_id |
FK | OUI | |
tenant_id |
FK | OUI | Portée multi-tenants |
full_name |
VARCHAR(200) | OUI | |
relationship |
ENUM(CONJOINT, PERE, MERE, FRERE_SOEUR, ENFANT, AUTRE) | OUI | Liste déroulante |
phone_number |
VARCHAR(20) | OUI | Numéro de téléphone principal |
phone_number_2 |
VARCHAR(20) | NON | Numéro de téléphone secondaire |
priority_order |
SMALLINT | OUI | 1 ou 2 |
Contrainte : minimum 0, maximum 2 contacts d'urgence par employé.
Personne à charge¶
| Champ | Type | Obligatoire ? | Remarques |
|---|---|---|---|
id |
UUID | — | |
employee_id |
FK | OUI | |
tenant_id |
FK | OUI | Portée multi-tenants |
full_name |
VARCHAR(200) | OUI | |
date_of_birth |
DATE | OUI | Utilisé pour le calcul des prestations liées à l'âge |
relationship |
ENUM(CONJOINT, ENFANT, AUTRE_PERSONNE_A_CHARGE) | OUI | |
gender |
ENUM(MALE, FEMALE) | NON | |
is_school_enrolled |
BOOLEAN | NON | Par défaut : faux. Pour les enfants — affecte les allocations familiales |
school_attestation_attached |
BOOLEAN | NON | Par défaut : faux. Document suivi via une pièce jointe |
Champs calculés (à partir de la liste des personnes à charge) :
- dependents_count = COUNT(personnes à charge)
- number_of_children = COUNT(personnes à charge WHERE relation = ENFANT)
Pièce jointe¶
| Champ | Type | Obligatoire ? | Remarques |
|---|---|---|---|
id |
UUID | — | |
employee_id |
FK | OUI | |
tenant_id |
FK | OUI | Portée multi-tenants |
category_code |
VARCHAR(50) | OUI | FK vers la table de référence des catégories de documents |
file_name |
VARCHAR(255) | OUI | Nom du fichier d'origine |
minio_object_key |
VARCHAR(500) | OUI | Clé de stockage MinIO |
file_size_bytes |
BIGINT | OUI | Pour le suivi du quota de stockage |
mime_type |
VARCHAR( 100) | OUI | |
uploaded_by |
FK (Utilisateur) | OUI | |
uploaded_at |
TIMESTAMP | OUI | |
description |
VARCHAR(500) | NON | Note facultative concernant le document |
Catégorie de document (table de référence)¶
| Champ | Type | Remarques |
|---|---|---|
code |
VARCHAR(50) PK | Par exemple, CONTRAT, MEDICAL_CERT, IDENTITY, CNPS_ATTESTATION |
tenant_id |
FK (nullable) | NULL = attribué par le système (partagé). Non nul = personnalisé par le tenant. |
display_name_fr |
VARCHAR(100) | Libellé français |
sort_order |
SMALLINT | Ordre d'affichage |
is_system |
BOOLEAN | true = ne peut être supprimé/modifié par le tenant |
Catégories attribuées par le système (CI) :
| Code | Nom d'affichage (FR) | Remarques |
|---|---|---|
CONTRAT_TRAVAIL |
Contrat de travail | |
AVENANT |
Avenant au contrat | |
CERTIFICAT_MEDICAL |
Certificat médical d'aptitude | |
PIECE_IDENTITE |
Pièce d'identité (CNI/ Passeport) | |
ATTESTATION_CNPS |
Attestation CNPS | |
CERTIFICAT_TRAVAIL |
Certificat de travail | Délivré au départ |
DIPLOMES |
Diplômes et qualifications | |
RIB |
Relevé d'identité bancaire | |
BULLETIN_PAIE |
Bulletin de paie | Le bulletin de paie sera automatiquement joint si HRCORE est actif |
ATTESTATION_SCOLAIRE |
Att estation de scolarité (enfant) | Pour l'inscription scolaire des personnes à charge |
PHOTO_IDENTITE |
Photo d'identité | |
AUTRE |
Autre document | Fourre-tout |
Configuration de la recherche¶
| Champ | Type | Remarques |
|---|---|---|
id |
UUID | |
tenant_id |
FK | Une configuration par tenant |
search_fields |
VARCHAR[] (tableau) | Liste des noms de colonnes inclus dans l'index plein texte. Par défaut : [“last_name”, “first_name”, “department_name”] |
updated_by |
FK (Utilisateur) | |
updated_at |
TIMESTAMP |
Configuration du numéro d'employé¶
| Champ | Type | Remarques |
|---|---|---|
tenant_id |
FK PK | Une configuration par tenant |
prefix |
VARCHAR(10) | Généré automatiquement à partir du nom de l'entreprise (trigramme/4-6 lettres). Modifiable par l'administrateur. |
next_sequence |
INTEGER | Incrémenté automatiquement à chaque création d'employé. Jamais décrémenté. |
Format : {prefix}-{YEAR}-{MM}-{SEQ} → Exemple : ALT-2026-03-001
B.3 Règles fonctionnelles¶
Gestion du profil des employés¶
| Règle | Description |
|---|---|
| FR-HRCORE-001 | SI le module HR Core est ACTIF pour un tenant, ALORS les employés de ce tenant ont accès aux champs d'enrichissement de la couche 2 en plus des champs de base de la couche 1 (CP). |
| FR-HRCORE-002 | SI le module HR Core est INACTIF pour un tenant, ALORS seuls les champs de base de la couche 1 (CP) sont visibles et modifiables. Les données de niveau 2, si elles ont été saisies précédemment, sont masquées conformément aux règles de rétrogradation du module (FR-PV-040 à FR-PV-044). |
| FR-HRCORE-003 | Les champs last_name et first_name de l'employé sont séparés. La valeur d'affichage full_name est calculée comme suit : UPPER(last_name) || “ ” || first_name pour l'affichage officiel (par exemple, « KOUASSI Jean-Pierre »). Cette convention suit les normes administratives de dénomination CI. |
| FR-HRCORE-004 | Tous les champs de la couche 2 sont facultatifs lors de la création d'un employé, SAUF : date_of_birth, gender, nationality. Ceux-ci sont obligatoires lorsque HR Core est actif, car ils sont requis par le registre du personnel. |
| FR-HRCORE-005 | SI un enregistrement d'employé est sauvegardé avec des champs facultatifs laissés vides, ALORS le système suit l'exhaustivité sous forme de pourcentage (nombre de champs remplis / nombre total de champs) . Ce pourcentage est affiché sur le profil de l'employé et utilisé pour les alertes de données manquantes (FR-HRCORE-020). |
Libre-service des employés¶
| Règle | Description |
|---|---|
| FR-HRCORE-010 | Les employés peuvent MODIFIER les champs suivants sur leur propre profil (libre-service) :personal_phone, personal_email, address_city, address_commune, address_details, contacts d'urgence et photo. |
| FR-HRCORE-011 | Les employés NE PEUVENT PAS modifier : last_name, first_name, date_of_birth, national_id_number, cnps_registration_number, marital_status, dependents, bank_*, gender, nationality, blood_type, father_name, mother_name, professional_qualifications, previous_employer. Ces champs nécessitent l'intervention du responsable RH ou du directeur général. |
| FR-HRCORE-012 | Les modifications apportées par les employés en libre-service (champs FR-HRCORE-010) prennent effet immédiatement — aucun workflow d'approbation n'est nécessaire pour la version 1. |
| *FR-HRCORE-013 * | Les modifications en libre-service par les employés sont disponibles HORS LIGNE. Les modifications sont mises en file d'attente dans IndexedDB et synchronisées dans les 30 secondes suivant la reconnexion. Étant donné que chaque employé ne peut modifier que son propre profil, il n'y a aucun risque de conflit. |
| FR-HRCORE-014 | Les modifications apportées par le responsable RH à n'importe quel champ employé nécessitent une connexion EN LIGNE. Les modifications hors ligne du responsable RH ne sont pas prises en charge dans la version V1 afin d'éviter les conflits de modification simultanés. |
Sécurité des informations bancaires¶
| Règle | Description |
|---|---|
| FR-HRCORE-015 | Les champs d'informations bancaires (bank_name, bank_account_number, bank_iban, bank_rib_key, bank_branch_code) ne peuvent être CRÉÉS ou MIS À JOUR que par les utilisateurs ayant le rôle DG ou RH Manager. |
| FR-HRCORE-016 | Lorsqu'un employé consulte ses propres informations bancaires, bank_account_number et bank_iban sont MASQUÉS : seuls les 4 derniers caractères sont affichés (par exemple, « ●●●●●●●4523 »). bank_name est affiché dans son intégralité. |
| FR-HRCORE-017 | Les utilisateurs ayant le rôle Comptable peuvent consulter l'intégralité des (non masquées) en mode LECTURE SEULE. Cela est nécessaire pour le rapprochement des paies/comptes. |
| FR-HRCORE-018 | Chaque modification des informations bancaires déclenche un événement EmployeeBankInfoChanged. Cet événement comporte un attribut security_flag: true pour permettre la surveillance de la sécurité en aval (par exemple, détecter si quelqu'un modifie rapidement les informations bancaires de plusieurs employés —potentiellement frauduleux). |
| FR-HRCORE-019 | L'historique des modifications des informations bancaires est conservé : le système stocke les valeurs précédentes des informations bancaires dans la piste d'audit. Les informations bancaires actuelles sont les plus récentes. Il n'existe pas de tableau d'historique des informations bancaires distinct — la piste d'audit de la plateforme (AuditEntry avec JSON avant/après) remplit cette fonction. |
Numéro CNPS et alertes¶
| Règle | Description |
|---|---|
| FR-HRCORE-020 | SI le cnps_registration_number d'un employé est NULL ou vide, ALORS le système crée une alerte persistante visible par les utilisateurs DG et RH Manager. Message d'alerte : « Numéro CNPS manquant pour {last_name} {first_name} — veuillez procéder à l'immatriculation CNPS et mettre à jour le dossier. » |
| FR-HRCORE-021 | L'alerte CNPS réapparaît sur le tableau de bord RH TOUS LES MOIS jusqu'à ce que le champ soit rempli. Après 30 jours sans résolution, l'alerte est escaladée (affichée en rouge/style urgent). |
| FR-HRCORE-022 | SI le champ cnps_registration_number est rempli, l'alerte est automatiquement supprimée. |
| FR-HRCORE-023 | L'alerte relative au numéro CNPS s'applique uniquement aux employés ayant le statut ACTIF. Les employés licenciés dont le numéro CNPS est manquant ne génèrent pas d'alerte. |
Gestion des personnes à charge¶
| Règle | Description |
|---|---|
| FR-HRCORE-025 | Chaque employé peut avoir 0 ou plusieurs personnes à charge. Il n'y a pas de limite maximale au nombre de personnes à charge. |
| FR-HRCORE-026 | Lorsqu'une personne à charge est ajoutée, mise à jour ou supprimée, le système recalcule automatiquement : dependents_count = nombre total de personnes à charge, number_of_children = nombre de personnes à charge où relationship = ENFANT. |
| FR-HRCORE-027 | SI dependents_count ou number_of_children change, ALORS le système publie un événement EmployeeUpdated avec changedFields: [“dependents_count”, “number_of_children”]. La paie utilise ces informations pour recalculer les retenues fiscales. |
| FR-HRCORE-028 | La date_of_birth d'un enfant à charge est utilisée pour déterminer l'éligibilité aux allocations familiales en fonction de l'âge. Les règles de calcul de l'âge appartiennent au module Paie — Core HR ne stocke que les données. |
| FR-HRCORE-029 | Les personnes à charge sont gérées exclusivement par le DG ou le responsable RH. Les employés ne peuvent pas ajouter/modifier/supprimer leurs propres personnes à charge (cela a des implications sur la paie). |
Pièce jointe¶
| Règle | Description |
|---|---|
| FR-HRCORE-030 | Chaque document joint à un employé doit avoir un category_code provenant du tableau de référence des catégories de documents. Le système fournit des catégories prédéfinies (voir §B.2) et les tenants peuvent ajouter des catégories personnalisées via la configuration administrateur. |
| FR-HRCORE-031 | Contraintes de téléchargement de fichiers : taille maximale de 10 Mo, types MIME acceptés : application/pdf, image/jpeg, image/png, image/webp, application/vnd.openxmlformats-officedocument.wordprocessingml.document (DOCX) . |
| FR-HRCORE-032 | Chaque document téléchargé est pris en compte dans le quota de stockage du tenant (conformément à la section §A.8 de la vision de la plateforme). SI le téléchargement d'un document dépasse le quota de stockage du tenant, ALORS le téléchargement est bloqué et le message suivant s'affiche : « Quota de stockage atteint. Veuillez supprimer des documents ou acheter de l'espace supplémentaire. » |
| FR-HRCORE-033 | Les documents peuvent être téléchargés par la DG, le responsable RH ou l'employé lui-même (en libre-service, par exemple pour télécharger une nouvelle copie d'une pièce d'identité). |
| FR-HRCORE-034 | Les documents ne peuvent être SUPPRIMÉS que par la DG ou le responsable RH. Les employés ne peuvent pas supprimer leurs propres documents. La suppression est une suppression temporaire (marquée comme supprimée, mais pas physiquement supprimée de MinIO — conservée conformément à la règle OHADA de 10 ans pour les types de documents concernés). |
| FR-HRCORE-035 | SI le module ADVDOC (gestion avancée des documents) est ACTIF, les téléchargements de documents bénéficient automatiquement d'un contrôle des versions, de politiques de conservation et d'une gestion du cycle de vie conformément à FR-PV-036. L'interface utilisateur de Core HR pour les pièces jointes délègue de manière transparente à ADVDOC lorsqu'elle est active. |
Photo de l'employé¶
| Règle | Description |
|---|---|
| FR-HRCORE-040 | Formats acceptés pour le téléchargement de photos : JPEG, PNG, WebP. Taille maximale du fichier : 2 Mo. |
| FR-HRCORE-041 | Après le téléchargement, le système présente un outil de recadrage côté client imposant un format portrait 3:4. L'utilisateur doit confirmer le recadrage avant que la photo ne soit enregistrée. |
| FR-HRCORE-042 | Une fois le recadrage confirmé, le système génère 3 versions stockées dans MinIO : originale (telle que recadrée), moyenne (150 px de largeur, hauteur proportionnelle), vignette (48 px de largeur, hauteur proportionnelle). |
| FR-HRCORE-043 | Les photos peuvent être téléchargées par : l'employé lui-même (libre-service) OU le responsable RH/DG. |
| FR-HRCORE-044 | Le téléchargement d'une nouvelle photo remplace la précédente. La photo précédente n'est PAS conservée (pas de gestion des versions dans la V1 — ADVDOC l'ajouterait). |
Génération du numéro d'employé¶
| Règle | Description |
|---|---|
| FR-HRCORE-050 | Les numéros d'employé sont générés automatiquement selon le format : {PREFIX}-{YEAR}-{MOIS}-{SÉQUENCE}. Exemple : ALT-2026-03-001. |
| FR-HRCORE-051 | {PRÉFIXE} est dérivé automatiquement du nom de la société du tenant lors de la création du tenant : le système extrait un trigramme/une abréviation de 3 à 6 lettres. Exemple : « ALTARYS ENTERPRISE » → « ALT », « Boulangerie Mama Kadi » → « BMK ». |
| FR-HRCORE-052 | Le PREFIX est stocké dans la configuration du numéro d'employé (par tenant) et est modifiable par l'administrateur du tenant (DG ou responsable RH). Le système affiche une notification lors de l'intégration : « Le préfixe de numérotation de vos employés est {PREFIX}. Vous pouvez le modifier dans les paramètres. » |
| FR-HRCORE-053 | {YEAR} correspond à l'année à 4 chiffres de création de l'employé. {MM} correspond au mois à 2 chiffres. {SEQ} est un numéro séquentiel à 3 chiffres complété par des zéros qui s'incrémente automatiquement par tenant. Exemple : le 15e employé créé en mars 2026 → ALT-2026-03-015. |
| FR-HRCORE-054 | Les numéros d'employés ne sont JAMAIS réutilisés. SI un employé est licencié, son numéro n'est PAS recyclé. La séquence ne fait qu'augmenter. |
| FR-HRCORE-055 | Lors d'une importation en masse, SI le fichier Excel importé contient des numéros d'employés, ALORS le système les utilise (pour la migration). SI la colonne des numéros d'employés est vide, ALORS le système les génère automatiquement selon les règles ci-dessus. Les numéros importés sont validés pour garantir leur unicité au sein du tenant. |
Recherche en texte intégral¶
| Règle | Description |
|---|---|
| FR-HRCORE-060 | Core HR fournit un champ de recherche unique utilisant la recherche en texte intégral PostgreSQL (tsvector/tsquery). Le champ de recherche accepte du texte libre et effectue des recherches dans les champs configurés. |
| FR-HRCORE-061 | Champs de recherche par défaut : last_name, first_name, department_name (dénormalisés ou joints à partir de l'unité organisationnelle). Ces valeurs par défaut s'appliquent à tous les nouveaux tenants. |
| FR-HRCORE-062 | Le DG ou le responsable RH peut CONFIGURER les champs à inclure dans l'index de recherche plein texte via un écran de paramètres. Champs disponibles à inclure : last_name, first_name, nom_du_département, intitulé_du_poste, numéro_d'employé, numéro_d'immatriculation_cnps, numéro_d'identification_national, téléphone_personnel, e-mail, ville_de_l'adresse, commune_de_l'adresse. |
| FR-HRCORE-063 | Lorsque la configuration de recherche change, le système reconstruit l'index de recherche plein texte pour ce tenant. Pour les tenants comptant jusqu'à 350 employés, cette opération devrait prendre moins de 5 secondes. |
| FR-HRCORE-064 | Les résultats de recherche sont limités par le niveau d'accès de l'utilisateur : le directeur général/directeur régional voit tous les employés ; le responsable ne voit que les employés de son unité organisationnelle ; le comptable voit tous les employés (données financières) ; Employé ne voit que son propre dossier. |
| FR-HRCORE-065 | La recherche prend en charge les correspondances partielles et la recherche insensible aux accents (important pour le français : « Koné » correspond à « kone »). L'extension PostgreSQL unaccent doit être utilisée. |
Importation en masse¶
| Règle | Description |
|---|---|
| FR-HRCORE-070 | SI HR Core est ACTIF pour le tenant, ALORS le modèle Excel d'importation des employés comprend à la fois les colonnes de la couche 1 (CP) et de la couche 2 (HR Core). SI HR Core est INACTIF, ALORS seules les colonnes de la couche 1 sont incluses. (L'importation de la couche 1 est une fonctionnalité du plan de contrôle ; HR Core étend le modèle.) |
| FR-HRCORE-071 | Tous les champs de la couche 2 (HR Core) dans le modèle d'importation sont FACULTATIFS. L'importation réussit même si toutes les colonnes HR Core sont vides : les employés sont créés avec les données de la couche 1 et l'enrichissement HR Core peut être effectué ultérieurement. |
| FR-HRCORE-072 | Après le téléchargement Excel, le système affiche un tableau de confirmation modifiable (conformément à FR-PV-051). Les erreurs de validation sont mises en évidence par ligne et par champ : numéros d'employés en double, formats de date non valides, valeurs d'énumération non valides (sexe, état civil, etc.). |
| FR-HRCORE-073 | L'importation est traitée comme une tâche en arrière-plan avec un indicateur de progression. Pour 500 employés, l'importation devrait être terminée en moins de 30 secondes. |
| FR-HRCORE-074 | Chaque employé importé avec succès déclenche un événement EmployeeCreated (à partir de CP) et, si les champs HR Core sont renseignés, un événement EmployeeUpdated (provenant de HR Core). |
| FR-HRCORE-075 | L'importation doit valider l'unicité du employee_number au sein du tenant. SI un doublon est détecté, la ligne est rejetée avec l'erreur suivante : « Numéro matricule en doublon : {number} ». |
Registre du Personnel (Fascicule 1)¶
| Règle | Description |
|---|---|
| FR-HRCORE-080 | Core HR génère le Fascicule 1 (Registre du Personnel) contenant les données des employés. Le Fascicule 2 (Salaires) appartient à la Paie. Le Fascicule 3 (Visas d'inspection) appartient à la Gestion des employés ou à HSE. |
| FR-HRCORE-081 | L'exportation du Fascicule 1 comprend les colonnes suivantes par employé : numéro d'ordre (séquentiel), nom, prénom, date_de_naissance, lieu_de_naissance, sexe, nationalité, numéro_d'identification_national, numéro_d'enregistrement_cnps, intitulé_du_poste, catégorie_d'employé, date_d'embauche, type_de_contrat, adresse, date_de_cessation_d'emploi(le cas échéant), motif_de_licenciement (le cas échéant). |
| FR-HRCORE-082 | L'exportation comprend TOUS les employés : ACTIFS, EN CONGÉ, SUSPENDUS et LICENCIÉS. Les employés licenciés sont répertoriés avec leur date et leur motif de licenciement. |
| FR-HRCORE-083 | L'exportation est disponible en deux formats : PDF (formaté pour l'impression, A4 paysage) et Excel (pour l'archivage numérique et la soumission d'inspection). |
| FR-HRCORE-084 | SI un employé dans l'exportation a des champs obligatoires manquants (par exemple, le numéro CNPS), ALORS l'exportation inclut un résumé d'avertissement à la fin, répertoriant les employés dont les dossiers sont incomplets. L'exportation n'est PAS bloquée — elle est générée avec « Non renseigné » dans les champs manquants. |
| FR-HRCORE-085 | L'exportation est générée en tant que tâche en arrière-plan. Un lien de téléchargement est fourni une fois l'opération terminée. Pour 350 employés, la génération devrait prendre moins de 10 secondes. |
Affichage de l'historique des modifications¶
| Règle | Description |
|---|---|
| FR-HRCORE-090 | Core HR fournit un onglet « Historique des modifications » sur le profil de chaque employé. Cet onglet affiche une chronologie lisible par l'utilisateur des modifications provenant de la piste d'audit de la plateforme (AuditEntry) . |
| FR-HRCORE-091 | L'historique des modifications traduit les données brutes AuditEntry en libellés français. Exemple : { field: « address_city », old: “Cocody”, new: « Plateau » } → « Ville de résidence : Cocody → Plateau ». |
| FR-HRCORE-092 | L'historique des modifications affiche : la date de la modification, l'utilisateur qui a effectué la modification (nom d'affichage + rôle), le nom du champ (libellé français), l'ancienne valeur, la nouvelle valeur. |
| FR-HRCORE-093 | L'historique des modifications est visible par la DG et le responsable RH. Les employés voient une version simplifiée sur leur propre profil qui indique uniquement : la date de la modification et le champ qui a été modifié (pas les anciennes/nouvelles valeurs, afin d'éviter toute fuite d'informations sur l'auteur de la modification). |
| FR-HRCORE-094 | Aucun stockage séparé n'est conservé. La vue formatée est une couche de présentation de l'interface utilisateur qui interroge la table AuditEntry filtrée par entity_type = “Employee” et entity_id = {employeeId}. |
B.4 Machines à états¶
Core HR n'introduit pas de nouveaux états de cycle de vie. Le cycle de vie des employés (ACTIF → EN CONGÉ → SUSPENDU → LICENCIÉ) est géré par le plan de contrôle / la gestion des employés, et non par Core HR.
Cependant, Core HR introduit le concept d'état d'exhaustivité du profil :
stateDiagram-v2
[*] --> INCOMPLET : Employé créé (champs HR Core principalement vides) INCOMPLETE --> PARTIAL : Certains champs HR Core remplis
INCOMPLETE --> COMPLETE : Tous les champs obligatoires + les champs facultatifs clés remplis
PARTIAL --> COMPLETE : Champs restants remplis
PARTIAL --> INCOMPLETE : Champs effacés/supprimés
COMPLETE --> PARTIAL : Champ obligatoire effacé (par exemple, correction des données)
Remarque à droite de INCOMPLET : déclenche des alertes de données manquantes (FR-HRCORE-020)
Remarque à droite de COMPLET : aucune alerte. Exportation du registre propre.
Niveaux d'exhaustivité du profil : - INCOMPLET (0-40 %) : champs obligatoires manquants (date_de_naissance, sexe, nationalité) ou données critiques (numéro CNPS). Indicateur rouge. - PARTIEL (41-80 %) : champs obligatoires remplis mais champs facultatifs (coordonnées bancaires, contacts d'urgence, documents) manquants. Indicateur jaune. - COMPLET (81-100 %) : tous les champs obligatoires + les champs facultatifs clés (CNPS, au moins 1 contact d'urgence, photo, 1 pièce d'identité) remplis. Indicateur vert.
Il s'agit d'états CALCULÉS (non stockés), dérivés du remplissage des champs au moment de l'affichage.
B.5 Tableaux de décision¶
Matrice des autorisations¶
| Action | DG | Responsable RH | Responsable | Comptable | Employé |
|---|---|---|---|---|---|
| Afficher le profil de n'importe quel employé (couche 2) | ✅ | ✅ | ⚠️ Équipe uniquement | ⚠️ Champs financiers uniquement | ❌ (propre uniquement) |
| Modifier n'importe quel profil d'employé (couche 2) | ✅ | ✅ | ❌ | ❌ | ❌ |
| Modifier son propre profil (champs en libre-service) | ✅ | ✅ | ✅ | ✅ | ✅ |
| Afficher les informations bancaires (complètes) | ✅ | ✅ | ❌ | ✅ (lecture seule) | ❌ (masqué) |
| Modifier les informations bancaires | ✅ | ✅ | ❌ | ❌ | ❌ |
| Gérer les personnes à charge | ✅ | ✅ | ❌ | ❌ | ❌ |
| Télécharger des documents | ✅ | ✅ | ❌ | ❌ | ✅ (propres documents) |
| Supprimer des documents | ✅ | ✅ | ❌ | ❌ | ❌ |
| Configurer les champs de recherche | ✅ | ✅ | ❌ | ❌ | ❌ |
| Configurer le préfixe du numéro d'employé | ✅ | ✅ | ❌ | ❌ | ❌ |
| Gérer les catégories de documents | ✅ | ❌ | ❌ | ❌ | ❌ |
| Exporter le registre du personnel | ✅ | ✅ | ❌ | ❌ | ❌ |
| Importer des employés en masse | ✅ | ✅ | ❌ | ❌ | ❌ |
| Afficher l'historique des modifications (complet) | ✅ | ✅ | ❌ | ❌ | ❌ |
| Afficher l'historique des modifications (simplifié, propre) | — | — | — | — | ✅ |
Matrice des capacités hors ligne¶
| Opération | Hors ligne ? | Utilisateur | Comportement de synchronisation |
|---|---|---|---|
| Afficher le profil de l'employé | ✅ Oui | Tous les rôles | Lecture à partir du cache IndexedDB |
| Modifier les champs en libre-service | ✅ Oui | Employé | Mise en file d'attente dans IndexedDB, synchronisation lors de la reconnexion |
| Télécharger une photo (en libre-service) | ✅ Oui | Employé | Mise en file d'attente localement, téléchargement lors de la reconnexion |
| Modifier le profil de l'employé (RH) | ❌ Non | DG/RH | Nécessite une connexion |
| Modifier les informations bancaires | ❌ Non | DG/RH | Nécessite une connexion |
| Gérer les personnes à charge | ❌ Non | DG/RH | Nécessite une connexion |
| Télécharger des documents | ❌ Non | DG/RH/Employé | Nécessite une connexion (téléchargement MinIO) |
| Rechercher des employés | ⚠️ Partiel | Tous les rôles | Recherche dans les données mises en cache (peuvent être obsolètes) |
| Exporter le registre | ❌ Non | DG/RH | Nécessite une connexion (génération côté serveur) |
| Importation en masse | ❌ Non | DG/RH | Nécessite une connexion |
Visibilité des catégories de documents¶
| Code de catégorie | Ajouté automatiquement par | Visible par l'employé ? | Supprimable ? |
|---|---|---|---|
CONTRAT_TRAVAIL |
Gestion des employés (V2) | ✅ | ❌ (conservation légale) |
BULLETIN_PAIE |
Paie (jointe automatiquement) | ✅ | ❌ (conservation légale) |
CERTIFICAT_MEDICAL |
Responsable RH | ❌ (confidentialité médicale) | ❌ (conservation légale) |
PIECE_IDENTITE |
Responsable RH / Employé | ✅ | Suppression temporaire uniquement |
ATTESTATION_CNPS |
Responsable RH | ✅ | Suppression temporaire uniquement |
DIPLOMES |
Responsable RH / Employé | ✅ | Suppression temporaire uniquement |
RIB |
Responsable RH | ❌ (confidentialité financière) | Suppression temporaire uniquement |
AUTRE |
Responsable RH / Employé | ✅ | Suppression temporaire uniquement |
B.6 Dépendances entre modules¶
Événements publiés par Core HR¶
| Événement | Déclencheur | Charge utile | Consommé par |
|---|---|---|---|
EmployeeUpdated |
Toute modification d'un champ de la couche 2 (faible risque : adresse, téléphone, photo, contacts d'urgence, qualifications) | { employeeId, tenantId, changedFields[], timestamp, changedBy } |
Modules mettant en cache les données des employés |
EmployeeBankInfoChanged |
Toute modification du champ bank_* | { employeeId, tenantId, bankName, maskedAccountNumber, changedBy, timestamp, security_flag: true } |
Paie(rechargement des informations de paiement), audit/surveillance de la sécurité |
EmployeeCategoryChanged |
Modification de la catégorie d'employé (via CP, mais HR Core peut l'afficher/le déclencher) | { employeeId, tenantId, oldCategoryId, newCategoryId, effectiveDate } |
Paie (recalcul du taux de cotisation) |
EmployeeProfileCompleted |
Le profil atteint l'état COMPLET | `{ employeeId, tenantId, completenessPercent, timestamp } | Gestion des employés (liste de contrôle d'intégration), tableau de bord |
EmployeeDocumentAttached |
Document téléchargé vers l'employé | { employeeId, tenantId, documentId, categoryCode, fileName } | ADVDOC (si actif — pour la gestion des versions/la conservation) , Tableau de bord |
Événements consommés par Core HR¶
| Événement | Publié par | Réaction Core HR |
|---|---|---|
EmployeeCreated |
Plan de contrôle | Crée un enregistrement de couche 2 vide pour le nouvel employé. Déclenche une alerte CNPS si le numéro CNPS n'est pas fourni. |
EmployeeTerminated |
Gestion des employés / CP | Supprime les alertes CNPS actives pour l'employé licencié (FR-HRCORE-023). Marque le profil comme historique. |
EmployeeReassigned |
Gestion des employés | Met à jour le nom du service mis en cache pour l'index de recherche en texte intégral (si le service est un champ de recherche). |
PayslipGenerated |
Paie | SI HRCORE actif ALORS joint automatiquement le bulletin de paie en tant que document (catégorie : BULLETIN_PAIE) à l'employé. |
Dépendances API (Synchrone)¶
| Appelant | Appels | Point de terminaison | Objectif |
|---|---|---|---|
| Core HR | Plan de contrôle | GET /api/v1/cp/employees/{id} | Lire les données de référence de la couche 1 (lecture en direct pour l'affichage de l'aperçu du contrat) |
| Core HR | Plan de contrôle | GET /api/v1/cp/org-units/{id} | Lire les détails de l'unité organisationnelle (nom du service pour la recherche, responsable pour l'affichage) |
| Core HR | Plan de contrôle | GET /api/v1/cp/positions/{id} | Lire le titre du poste pour l'affichage |
| RH de base | MinIO (stockage) | PUT /upload, GET /download, DELETE | Stockage de documents et de photos |
| Paie | RH de base | GET /api/v1/hrcore/employees/{id}/bank-info | Lecture des informations bancaires pour le traitement des paiements (post-MVP) |
| Paie | RH de base | GET /api/v1/hrcore/employees/{id}/dependents/ summary | Lecture du nombre de personnes à charge + nombre d'enfants pour le calcul des impôts |
| Gestion des employés | RH de base | GET /api/v1/hrcore/employees/{id}/profile | Lecture du profil enrichi pour la création d'événements administratifs |
| Tout module | RH de base | GET /api/v1/hrcore/employees/{id}/photo/thumbnail | Lecture de la vignette de l'employé pour affichage dans les listes |
API exposée par Core HR¶
| Point de terminaison | Méthode | Objectif | Consommateurs |
|---|---|---|---|
/api/v1/hrcore/employees/{id} |
GET | Profil enrichi complet de l'employé (couches 1 + 2) | Frontend, Gestion des employés |
/api/v1/hrcore/employees/{id} |
PATCH | Mettre à jour les champs de la couche 2 | Frontend (Responsable RH) |
/api/v1/hrcore/employees/{id}/self-service |
PATCH | Mise à jour des champs en libre-service (FR-HRCORE-010) | Frontend (employé) |
/api/v1/hrcore/employees/{id} /bank-info |
GET | Informations bancaires (masquées ou complètes selon le rôle) | Frontend, Paie |
/api/v1/hrcore/employees/{id}/bank-info |
PUT | Mettre à jour les informations bancaires (DG/RH uniquement) | Frontend |
/api/v1/hrcore/employees/{id}/dependents |
GET/POST/PUT/DELETE | CRUD personnes à charge | Frontend |
/api/v1/hrcore/employees/{id}/dependents/summary |
GET | Nombres calculés (nombre_de_personnes_à_charge, nombre_d'enfants) | Paie |
/api/v1/hrcore/employees/{id}/emergency-contacts |
GET/POST/PUT/ DELETE | CRUD contacts d'urgence (max. 2) | Frontend |
/api/v1/hrcore/employees/{id}/documents |
GET/POST/DELETE | Document CRUD avec catégorie | Frontend, ADVDOC |
/api/v1/hrcore/employees/{id}/photo |
GET/POST | Téléchargement/récupération de photos récupération (3 tailles) | Frontend, tout module |
/api/v1/hrcore/employees/{id}/change-history |
GET | Historique des modifications formaté (à partir de AuditEntry) | Frontend |
/api/v1/hrcore/employees/search |
GET | Recherche en texte intégral (paramètre de requête : q) |
Frontend |
/api/v1/hrcore/employees/import |
POST | Importation en masse (téléchargement Excel multipart) | Frontend |
/api/v1/hrcore/registre/fascicule-1 |
POST | Générer l'exportation du registre (renvoie l'ID du travail) | Frontend |
/api/v1/hrcore/registre/fascicule-1/{jobId} |
GET | Télécharger le registre généré | Frontend |
/api/v1/hrcore/config/search-fields |
GET/PUT | Configuration de la recherche | Frontend (Admin) |
/api/v1/hrcore/config/employee-number |
GET/PUT | Configuration du préfixe du numéro d'employé | Frontend (Admin) |
/api/v1/hrcore/config/document-categories |
GET/POST/PUT/DELETE | Gestion des catégories de documents | Frontend (Admin) |
/api/v1/hrcore/dashboard/alerts |
GET | Alertes de données manquantes (CNPS, profils incomplets) | Interface utilisateur (tableau de bord) |
B.7 Implications multi-tenants¶
| Préoccupation | Base de données partagée | Schéma par tenant | Base de données par tenant | BYO-DB |
|---|---|---|---|---|
| Données d'enrichissement des employés | Colonne tenant_id dans la table employee_enrichment. Chaque requête inclut WHERE tenant_id = ?. |
Table par schéma. Aucun filtre tenant_id nécessaire. | Table par base de données. | Table par base de données. |
| Stockage des documents | Compartiment MinIO au niveau du tenant : tenant-{tenantId}/employees/{employeeId}/docs/ |
Même structure de chemin MinIO. | Identique. | Le tenant fournit le stockage ou utilise la plateforme MinIO. |
| Stockage des photos | tenant-{tenantId}/employees/{employeeId}/photos/ |
Identique. | Identique. | Identique. |
| Index de recherche en texte intégral | Colonne tsvector par tenant, filtrée par tenant_id. Configuration de recherche stockée par tenant. | Index par schéma. Plus efficace (pas de filtrage par tenant). | Index par base de données. | Index par base de données. |
| Catégories de documents | Catégories définies par le système (tenant_id = NULL) + personnalisées par le tenant (tenant_id = X). | Catégories système dans le schéma partagé. Catégories personnalisées par le tenant dans le schéma du tenant. | Par base de données. | Par base de données. |
| Séquence des numéros d'employés | Séquence par tenant (stockée dans la table de configuration, pas une séquence de base de données — pour la portabilité). | Identique — séquence au niveau de l'application. | Identique. | Identique. |
| Quotas de stockage | Suivis dans la base de données de la plateforme (plan de contrôle). Vérifiés avant chaque téléchargement. | Identique. | Identique. | Identique. |
Principe de conception : tous les modèles multi-tenants suivent la vision de la plateforme (§B.5). Conception pour BYO-DB en premier lieu. Les séquences de numéros d'employés sont au niveau de l'application (et non des objets PostgreSQL SEQUENCE) afin de garantir la portabilité sur les 4 profils de base de données.
PARTIE C — Contraintes et limites¶
C.1 Conformité réglementaire — CI (Côte d'Ivoire)¶
CI Registre d'Employeur (Code du Travail 2015)¶
Le Code du Travail de la CI (loi n°2015-532) exige que chaque employeur tienne un registre d'employeur en 3 fascicules :
- Fascicule 1 — Personnel : liste séquentielle des employés avec leurs données personnelles et professionnelles. Core HR génère ce document.
- Fascicule 2 — Salaires : registre des salaires. * Module Paie.*
- Fascicule 3 — Visas d'inspection : registre des visites d'inspection. Module Gestion des employés / HSE.
Le registre doit être : - Conservé sur le lieu de travail - Disponible pour inspection par l'Inspecteur du Travail à tout moment - Tenu en français
L'exportation du registre par Core HR (FR-HRCORE-080-085) génère le Fascicule 1 dans un format conforme.
Exigences relatives au dossier des employés CI (Loi 2013-546, Décret 2016-851)¶
La loi CI autorise les dossiers électroniques des employés (loi n°2013-546 sur les transactions électroniques + décret n°2016-851 sur les signatures et archives électroniques). Le dossier numérique du personnel de Core HR est légalement valide à condition que : - Les documents soient stockés avec des garanties d'intégrité (sommes de contrôle MinIO). - La piste d'audit permette de suivre toutes les modifications (plateforme AuditEntry). - Les copies électroniques des documents signés soient acceptables.
Inscription à la CNPS en Côte d'Ivoire¶
Chaque employé doit être inscrit à la CNPS (Caisse Nationale de Prévoyance Sociale) dès le premier jour de son embauche (partie 3.1 de la recherche juridique). Core HR : - Stocke le numéro d'enregistrement CNPS (FR-HRCORE-020) - Génère des alertes lorsque le numéro est manquant - Ne gère PAS la déclaration CNPS proprement dite (qui relève de la gestion des employés)
Lacune en matière de conformité : tenants sans HR Core¶
Lacune reconnue : les tenants qui n'achètent pas le module HR Core ne peuvent pas tenir un registre du personnel conforme au sein de la plateforme. Ils doivent gérer le registre en externe (sur papier ou Excel). Cela est acceptable car : 1. La base de référence du plan de contrôle fournit suffisamment de données pour les modules opérationnels (absences, présences, paie). 2. HR Core est commercialisé comme un module de conformité et d'organisation — les tenants soucieux de la conformité l'achèteront. 3. La fenêtre de vente incitative du module dans l'interface utilisateur Papillon peut mettre en avant l'avantage de la conformité du registre.
C.2 Exigences de localisation — CI¶
| Aspect | Exigence |
|---|---|
| Langue | Français (toutes les étiquettes de l'interface utilisateur, les messages de validation, les en-têtes d'exportation, les noms de catégories de documents) |
| Affichage du nom | Formel : UPPER(nom_de_famille) prénom (par exemple, « KOUASSI Jean-Pierre »). Informel : prénom nom_de_famille. |
| Devise | N/A — Core HR ne gère pas directement les champs de devise. Les informations bancaires sont basées sur des identifiants (numéros de compte) et non sur des montants. |
| Format de date | JJ/MM/AAAA pour tous les champs de date |
| Format de numéro de téléphone | Mobile CI : +225 XX XX XX XX XX (10 chiffres après l'indicatif du pays). Validation de la saisie avec ce format. |
| Adresse | Semi-structurée : ville (liste déroulante avec les villes de CI), commune/quartier (texte libre), détails (texte libre). Pas de codes postaux. |
| Jours fériés | N/A — Core HR ne gère pas les jours fériés (module Absence). |
| Liste déroulante des villes | Préremplie avec les principales villes CI : Abidjan, Bouaké, Daloa, Yamoussoukro, San-Pédro, Korhogo, Man, Divo, Gagnoa, Abengourou + « Autre » pour texte libre |
C.3 Exigences en matière de sécurité¶
| Exigence | Mise en œuvre |
|---|---|
| Classification des données sensibles | Les informations bancaires et le numéro d'identité national sont classés comme SENSIBLES. Les documents médicaux (catégorie : CERTIFICAT_MEDICAL) sont classés comme MEDICAL_SENSITIVE. |
| Masquage des informations bancaires | Le libre-service des employés n'affiche que les 4 derniers caractères. Le point de terminaison API renvoie des données masquées, sauf si l'appelant a le rôle COMPTABLE ou RH_MANAGER/DG. |
| Accès aux documents médicaux | Les documents de la catégorie CERTIFICAT_MEDICAL ne sont visibles que par le DG et le responsable RH. Les employés peuvent voir qu'un certificat médical existe, mais ne peuvent pas en consulter le contenu (métadonnées du document visibles, téléchargement bloqué). |
| Accès aux documents financiers | Les documents de la catégorie RIB ne sont visibles que par le DG, le responsable RH et le comptable. |
| Piste d'audit | Chaque modification apportée aux données d'enrichissement des employés, aux personnes à charge, aux contacts d'urgence, aux informations bancaires, aux documents et aux photos génère une entrée AuditEntry immuable. Les modifications des informations bancaires sont signalées comme sensibles sur le plan de la sécurité (FR-HRCORE-018). |
| Stockage des photos | Les photos sont stockées dans un compartiment MinIO au niveau du tenant. L'accès est contrôlé via des URL signées avec expiration (pas d'URL publiques). |
| Stockage des documents | Les documents sont stockés dans un compartiment MinIO à l'échelle du tenant avec des URL signées. Le téléchargement nécessite un JWT valide avec le rôle approprié. |
| Sécurité des importations en masse | Le fichier Excel importé est analysé pour détecter le contenu des macros (rejet des fichiers .xlsm). Le fichier est supprimé du serveur après traitement. Enregistrements du journal d'audit des importations : qui a importé, quand, combien d'enregistrements, erreurs de validation éventuelles. |
| Sensibilité du numéro CNPS | Le numéro d'enregistrement CNPS est un identifiant national — traité comme sensible. Il n'apparaît pas dans les résultats de recherche ni dans les listes d'employés. Il n'est visible que dans la vue complète du profil de l'employé (DG, responsable RH, l'employé lui-même). |
# C.4 Hors champ d'application¶
| Élément | Raison | Propriétaire |
|---|---|---|
| Gestion du cycle de vie des contrats (création, renouvellement, modifications, suivi CDD) | Couche de processus — appartient à la gestion des employés (EMPMGT) | EMPMGT PRD |
| Workflows d'intégration/départ | Couche de processus — appartient à la gestion des employés | EMPMGT PRD |
| Suivi et alertes de la période d'essai | Couche de processus — appartient à la gestion des employés | EMPMGT PRD |
| Procédures de licenciement et calcul des indemnités de départ | Couche de processus — appartient à la gestion des employés + paie | EMPMGT + PAYROL PRDs |
| Déclarations CNPS (embauche, départ, DISA) | Gestion des déclarations — appartient à la gestion des employés | EMPMGT PRD |
| Règles relatives aux heures de travail, heures supplémentaires, travail de nuit | Gestion du temps — appartient à Temps et activités (TIMACT) | TIMACT PRD |
| Informations salariales (salaire actuel, historique salarial, grade) | Données financières — appartient à la Paie. Core HR affiche un aperçu du contrat via une lecture en direct depuis CP/EMPMGT. | PAYROL + EMPMGT PRDs |
| Registre du Personnel Fascicule 2 (Salaires) | Données salariales — appartient à la Paie | PAYROL PRD |
| Registre du Personnel Fascicule 3 (Visas d'inspection) | Données d'inspection — appartiennent à la gestion des employés ou à HSE | EMPMGT/HSE PRD |
| Champs personnalisés pour les employés (définis par le tenant) | Amélioration V2 | Core HR V2 |
| Organigramme des employés (organigramme visuel) | Amélioration V2 | Core HR V2 |
| Annuaire des employés (à l'échelle de l'entreprise) | Amélioration V2 | Core HR V2 |
| Gestion des versions des documents, politiques de conservation, gestion du cycle de vie | Nécessite le module Advanced Document Management (ADVDOC) | ADVDOC PRD |
| Génération de documents (contrats, certificats, attestations à partir de modèles) | Nécessite ADVDOC V2 | ADVDOC V2 PRD |
| Prise en charge multi-pays (champs et registres BJ, CM) | Extension à d'autres pays prévue pour le mois 9 | Extension à d'autres pays Core HR PRD |
| Authentification SSO/SAML pour le libre-service des employés | Fonctionnalité Enterprise V2 | Plateforme V2 |
| Libre-service des employés : demande de modifications avec workflow d'approbation | V2 — nécessite un moteur d'approbation | Core HR V2 |
| Suivi des certificats d'aptitude médicale (dates de renouvellement, examens périodiques) | Portée du module HSE | HSE PRD |
| Règles spécifiques au secteur des conventions collectives | V2 — la plateforme ne prend en charge que la CCI interprofessionnelle pour MVP | Plateforme V2 |
Glossaire (termes spécifiques au module)¶
| Terme (FR) | Terme (EN) | Définition |
|---|---|---|
| Dossier du personnel | Dossier de l'employé | Enregistrement complet des données personnelles, professionnelles et administratives d'un employé. Core HR est la couche de données pour cela. |
| Registre d'employeur | Registre de l'employeur | Document légal requis par le Code du travail. 3 fascicules : personnel, salaires, visas d'inspection. Core HR génère le fascicule 1. |
| Immatriculation CNPS | Immatriculation CNPS | Immatriculation d'un employé auprès de la Caisse Nationale de Prévoyance Sociale (CI sécurité sociale). Le numéro d'immatriculation est stocké dans Core HR. |
| Certificat médical d'aptitude | Certificat médical d'aptitude | Certificat médical confirmant qu'un employé est apte au travail. Requis dans le dossier personnel. Stocké sous forme de pièce jointe. |
| Certificat de travail | Certificat de travail | Document délivré par l'employeur au moment du départ, confirmant les dates d'emploi et le poste occupé. Obligatoire (art. 16.14 CT 2015). |
| RIB | Coordonnées bancaires | Relevé d'Identité Bancaire — Document bancaire CI identifiant un compte. Stocké en tant que pièce jointe + champs d'informations bancaires structurés. |
| Avenant | Modification du contrat | Modification d'un contrat de travail existant. Stocké sous forme de pièce jointe. La gestion du cycle de vie du contrat relève de l'EMPMGT. |
| Personne à charge | Personne à charge | Personne financièrement dépendante de l'employé (conjoint, enfants, autres). A une incidence sur l'impôt (ITS) et les cotisations sociales (allocations familiales). |
| Numéro matricule | Numéro d'employé | Identifiant séquentiel unique pour un employé au sein d'un tenant. Format : {PREFIX}-{YEAR}-{MM}-{SEQ}. |
| Fascicule | Section/volume | L'un des 3 volumes du registre d'employeur. Fascicule 1 = personnel, 2 = salaires, 3 = visas d'inspection. |
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 officielle pour l'architecture, la conception et la mise en œuvre du module Core HR.