espace-paie-odentas/STAFF_RESEND_INVITATION_FEATURE.md

218 lines
6.8 KiB
Markdown

# Feature: Relance d'invitation auto-déclaration
## 📝 Description
Cette fonctionnalité permet au staff de renvoyer l'email d'invitation à l'auto-déclaration à un salarié directement depuis la page `/staff/salaries`.
## 🎯 Objectif
Permettre de relancer facilement un salarié qui :
- N'a pas reçu l'email initial
- N'a pas complété son profil
- A besoin d'un nouveau lien (token expiré après 7 jours)
- Doit mettre à jour ses documents
## 🔧 Fichiers créés/modifiés
### 1. `/components/staff/ResendInvitationModal.tsx` (NOUVEAU)
Composant modal de confirmation avant envoi de la relance.
**Fonctionnalités :**
- Affichage des informations du salarié (nom, matricule, email)
- Validation de la présence d'un email
- Message explicatif du contenu de l'email
- Confirmation visuelle avant envoi
- Feedback pendant l'envoi (loader)
- Notification de succès/erreur
### 2. `/components/staff/SalariesGridSimple.tsx` (MODIFIÉ)
**Ajouts :**
- Import de `ResendInvitationModal`
- État `isResendInvitationOpen` pour gérer l'ouverture de la modale
- Bouton "Envoyer une relance justifs" en gradient bleu/indigo
- Intégration de la modale avec le salarié sélectionné
**Emplacement du bouton :**
- Au dessus de la card "Informations personnelles"
- Pleine largeur avec icône mail
- Design attrayant en gradient
### 3. API utilisée : `/api/auto-declaration/generate-token/route.ts` (EXISTANTE)
L'API existante est réutilisée. Elle :
- Génère un nouveau token sécurisé
- Supprime les anciens tokens du salarié
- Envoie l'email d'invitation avec le lien personnalisé
- Retourne le statut d'envoi
## 🎨 Interface utilisateur
### Bouton de relance
```
┌─────────────────────────────────────┐
│ 📧 Envoyer une relance justifs │
│ (Gradient bleu → indigo) │
└─────────────────────────────────────┘
```
### Modale de confirmation
```
┌───────────────────────────────────────┐
│ 📧 Relancer le salarié ✕ │
├───────────────────────────────────────┤
│ │
│ ✓ Email d'invitation à │
│ l'auto-déclaration │
│ │
│ Le salarié recevra un email avec │
│ un lien sécurisé... │
│ │
│ Salarié: Jean Dupont │
│ Matricule: MAT001 │
│ Email: jean.dupont@mail.com │
│ │
│ 💡 Contenu: Lien valide 7 jours... │
│ │
│ [Annuler] [Envoyer] 📧 │
└───────────────────────────────────────┘
```
## 📧 Contenu de l'email envoyé
L'email envoyé est **exactement le même** que lors de la création du salarié :
**Template :** `auto-declaration-invitation`
**Contenu :**
- Salutation personnalisée avec prénom
- Nom de l'organisation employeur
- Matricule du salarié
- **Lien d'accès sécurisé** avec token unique
- Instructions pour :
- Compléter les informations personnelles
- Uploader les justificatifs (CNI, attestation Sécu, RIB, etc.)
- Accepter les conditions RGPD
**Validité :** 7 jours
## 🔐 Sécurité
- ✅ Vérification de l'authentification staff
- ✅ Validation de la présence d'un email
- ✅ Génération d'un nouveau token sécurisé (32 bytes hex)
- ✅ Suppression automatique des anciens tokens
- ✅ Token unique par salarié
- ✅ Expiration automatique après 7 jours
## ⚙️ Comportement
1. **Clic sur le bouton** → Ouverture de la modale
2. **Vérification email** → Si absent, message d'erreur et bouton désactivé
3. **Confirmation** → Appel API pour générer token et envoyer email
4. **Pendant l'envoi** → Loader et désactivation des boutons
5. **Succès** → Toast de confirmation et fermeture de la modale
6. **Erreur** → Toast d'erreur avec message détaillé
## 📊 Cas d'usage
### ✅ Cas valides
- Salarié avec email valide
- Besoin de renvoyer l'invitation
- Token expiré (> 7 jours)
- Email initial non reçu
- Salarié n'a pas complété son profil
### ❌ Cas bloqués
- Salarié sans email → Bouton désactivé avec message d'erreur
- Pendant l'envoi → Boutons désactivés
- Erreur API → Toast d'erreur
## 🎯 Flow complet
```
Staff sélectionne salarié
Clic "Envoyer une relance justifs"
Modale s'ouvre avec infos salarié
Validation email présent
Staff confirme "Envoyer"
API génère nouveau token
Supprime anciens tokens
Envoie email avec lien
Toast succès + fermeture modale
Salarié reçoit email
Clique sur lien → /auto-declaration?token=...
Complète son profil et upload documents
```
## 💡 Avantages
1. **Simplicité** : Un seul clic depuis la fiche salarié
2. **Confirmation** : Modale explicative avant envoi
3. **Feedback** : Messages clairs de succès/erreur
4. **Sécurité** : Nouveau token à chaque envoi
5. **Traçabilité** : Logs des envois côté serveur
6. **UX** : Bouton visible et design attrayant
## ✅ Tests recommandés
1. **Envoi réussi**
- Salarié avec email valide
- Vérifier réception de l'email
- Vérifier que le lien fonctionne
- Vérifier expiration après 7 jours
2. **Salarié sans email**
- Bouton doit être désactivé
- Message d'erreur affiché
- Pas d'appel API
3. **Erreur réseau**
- Simuler échec API
- Vérifier toast d'erreur
- Modale reste ouverte
4. **Double envoi**
- Envoyer 2 fois de suite
- Vérifier que seul le dernier token est valide
- Ancien token doit être supprimé
5. **Changement de salarié**
- Ouvrir modale pour salarié A
- Changer vers salarié B
- Vérifier que la modale affiche les bonnes infos
## 🔄 Intégration avec l'existant
- Utilise l'API `/api/auto-declaration/generate-token` existante
- Utilise le service `autoDeclarationTokenService` existant
- Utilise les templates d'email existants
- Compatible avec le système d'auto-déclaration actuel
- Pas de modification de la base de données nécessaire
## 📈 Prochaines améliorations possibles
- [ ] Historique des relances envoyées
- [ ] Indication de la dernière relance envoyée
- [ ] Statistiques de complétion après relance
- [ ] Envoi groupé à plusieurs salariés
- [ ] Personnalisation du message
- [ ] Rappel automatique après X jours
---
**Date de création** : 12 octobre 2025
**Version** : 1.0.0