Files
SIRH/doc/functional-rules.md

4.0 KiB

Règles Fonctionnelles SIRH

Ce document centralise les règles métier actuellement implémentées dans l'application.

1) Utilisateurs et accès

  • ROLE_ADMIN
    • accès complet aux écrans d'administration
    • vue semaine des heures
    • validation RH des lignes d'heures
  • ROLE_SELF
    • accès limité à son périmètre personnel
  • Accès "Sites" (via user_site_roles avec rôle SITE_ACCESS)
    • accès au périmètre des sites autorisés
    • validation site des lignes d'heures

2) Contrats

  • Le profil de temps de travail est porté par Contract:
    • trackingMode: TIME ou PRESENCE
    • weeklyHours (ex: 35, 39, 4, etc.)
  • La nature RH est portée par période employé:
    • CDI, CDD, INTERIM
  • Historique des contrats employé:
    • table employee_contract_periods
    • un employé peut avoir plusieurs périodes

Règles de période

  • CDI:
    • endDate doit être vide
  • CDD / INTERIM:
    • endDate obligatoire
  • endDate ne peut pas être antérieure à startDate

3) Heures (vue jour)

  • Saisie par salarié et par date:
    • matin / après-midi / soir
    • pour PRESENCE: demi-journées matin/après-midi
  • Calculs affichés:
    • Jour, Nuit, Total
  • Heures de nuit:
    • fenêtres 00:00-06:00 et 21:00-24:00

4) Absences

  • Les absences sont stockées par jour (découpage lors de l'écriture)
  • Une absence peut être:
    • journée complète
    • demi-journée AM ou PM
  • Colonne absence (vue jour):
    • affiche le libellé
    • fond coloré selon le type d'absence
  • Si plusieurs absences de couleurs différentes sur le même jour:
    • fallback rouge

Effet absence sur les heures

  • Absence AM:
    • efface les heures du matin
  • Absence PM:
    • efface les heures d'après-midi et du soir
  • Absence journée:
    • efface toutes les plages horaires

Absences "comptées comme travaillées"

  • Si countAsWorkedHours = true:
    • TIME: crédit de minutes selon contrat actif du jour
    • PRESENCE: crédit d'unités (0.5 / demi-journée)

5) Validations des lignes d'heures

  • Validation RH (isValid)
    • action admin
  • Validation site (isSiteValid)
    • action chef de site

Verrouillage

  • Ligne validée RH:
    • verrouillée pour modifications heures/absences
  • Ligne validée site:
    • verrouillée pour non-admin
    • admin peut corriger
  • Toute vraie modification d'une ligne:
    • remet isSiteValid = false
    • remet isValid = false
  • Si aucun changement réel à l'enregistrement:
    • les validations existantes ne sont pas altérées

6) Heures supplémentaires (vue semaine)

  • Base de calcul:
    • dépend du contrat actif par jour
  • Tranche 25%:
    • contrats <= 35h: de 35h à 43h
    • contrats >= 39h: de 39h à 43h
  • Tranche 50%:
    • au-delà de 43h
  • Nature INTERIM:
    • pas de bonus 25%
    • pas de bonus 50%
    • pas de total récup

7) Fériés

  • Les jours fériés sont identifiés et affichés
  • Règle courante:
    • absences bloquées sur jour férié
    • saisie d'heures autorisée

8) Impression absences (PDF)

Filtres disponibles:

  • période from / to
  • sites
  • nature de contrat (CDI, CDD, INTERIM)
  • temps de travail (contrats de type Forfait, 35h, 39h, etc.)

Tous les filtres checkbox sont cochés par défaut à l'ouverture du drawer.

9) Employés

  • Création employé:
    • prénom, nom, site
    • type de contrat (nature RH)
    • temps de travail
    • dates début/fin (selon règles nature)
  • Modification employé:
    • uniquement prénom, nom, site
    • pas de modification de contrat depuis ce drawer

10) Notifications

  • Icône cloche en topbar:
    • badge = nombre de notifications non lues
    • ouverture panneau = liste des non lues
    • fermeture panneau = marquage "lu" en masse

Règle métier de déclenchement

  • Les notifications de validation site ne sont pas envoyées ligne par ligne.
  • Une notification est créée uniquement quand un chef de site termine la validation complète:
    • condition: plus aucune ligne work_hours du site à la date concernée avec isSiteValid = false
    • destinataires: utilisateurs ROLE_ADMIN