218 lines
6.8 KiB
Markdown
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
|