feat : notification de fin de contrat (veille ouvrée du dernier jour) #35

Merged
tristan merged 10 commits from feature/SIRH-43-ajouter-une-notif-la-veille-d-un-contrat-qui-se-te into develop 2026-06-24 14:04:54 +00:00
Owner

Objectif

Prévenir automatiquement les administrateurs, sur le dernier jour ouvré précédant la fin d'un contrat, qu'un salarié arrive au terme de son emploi.

Fonctionnement

  • Commande quotidienne app:contract:end-notifications (à brancher sur le crontab prod, ~6h ; option --date=YYYY-MM-DD pour test/rattrapage).
  • Cible la dernière période de contrat d'un employé (un changement de contrat enchaîné, ex. CDD→CDI, ne notifie pas).
  • Notifie sur le dernier jour ouvré strictement avant endDate (inclusif). Week-ends et fériés sautés → une fin de contrat le lundi est signalée dès le vendredi. Le Lundi de Pentecôte reste un jour ouvré (cohérent avec le reste de l'app).
  • Une notification par admin : message « Fin de {nature} de {Nom} le {date} », catégorie Contrat, lien /employees/{id}, sans acteur.
  • Idempotent : déduplication par (recipient, category, target, message).
  • Front : la cloche (déjà admin-only) affiche proprement les notifs sans acteur.
  • Aucune migration (réutilise la table notifications).

Architecture

Logique pure isolée et testée : WorkingDayCalculator (week-end + férié) + ContractEndNotificationPlanner (fenêtre + message). Persistance dans ContractEndNotificationService, exposée par ContractEndNotificationCommand. Méthodes repo findLatestPeriodsForAllEmployees + existsForRecipientCategoryTargetMessage.

Tests & vérification

  • 11 tests unitaires ajoutés ; suite complète verte (264 tests, 564 assertions).
  • Vérif e2e manuelle : run du vendredi → 6 notifs/1 contrat finissant le lundi (saut de week-end OK), relance idempotente (0), contenu BDD correct.

Documentation

doc/contract-end-notifications.md, doc/functional-rules.md (§15), doc in-app (documentation-content.ts), CLAUDE.md.

⚠️ Tâche infra

Ajouter la ligne crontab prod : 0 6 * * * … bin/console app:contract:end-notifications

🤖 Generated with Claude Code

## Objectif Prévenir automatiquement les administrateurs, sur le **dernier jour ouvré précédant la fin d'un contrat**, qu'un salarié arrive au terme de son emploi. ## Fonctionnement - Commande quotidienne `app:contract:end-notifications` (à brancher sur le crontab prod, ~6h ; option `--date=YYYY-MM-DD` pour test/rattrapage). - Cible **la dernière période de contrat** d'un employé (un changement de contrat enchaîné, ex. CDD→CDI, ne notifie pas). - Notifie sur le **dernier jour ouvré strictement avant** `endDate` (inclusif). Week-ends **et fériés** sautés → une fin de contrat le lundi est signalée dès le vendredi. Le Lundi de Pentecôte reste un jour ouvré (cohérent avec le reste de l'app). - Une notification par admin : message « Fin de {nature} de {Nom} le {date} », catégorie `Contrat`, lien `/employees/{id}`, sans acteur. - **Idempotent** : déduplication par `(recipient, category, target, message)`. - Front : la cloche (déjà admin-only) affiche proprement les notifs sans acteur. - **Aucune migration** (réutilise la table `notifications`). ## Architecture Logique pure isolée et testée : `WorkingDayCalculator` (week-end + férié) + `ContractEndNotificationPlanner` (fenêtre + message). Persistance dans `ContractEndNotificationService`, exposée par `ContractEndNotificationCommand`. Méthodes repo `findLatestPeriodsForAllEmployees` + `existsForRecipientCategoryTargetMessage`. ## Tests & vérification - 11 tests unitaires ajoutés ; suite complète verte (264 tests, 564 assertions). - Vérif e2e manuelle : run du vendredi → 6 notifs/1 contrat finissant le lundi (saut de week-end OK), relance idempotente (0), contenu BDD correct. ## Documentation `doc/contract-end-notifications.md`, `doc/functional-rules.md` (§15), doc in-app (`documentation-content.ts`), `CLAUDE.md`. ## ⚠️ Tâche infra Ajouter la ligne crontab prod : `0 6 * * * … bin/console app:contract:end-notifications` 🤖 Generated with [Claude Code](https://claude.com/claude-code)
tristan added 10 commits 2026-06-24 13:51:12 +00:00
tristan merged commit 029a09dc09 into develop 2026-06-24 14:04:54 +00:00
tristan deleted branch feature/SIRH-43-ajouter-une-notif-la-veille-d-un-contrat-qui-se-te 2026-06-24 14:04:55 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: MALIO-DEV/SIRH#35