espace-paie-odentas/STAFF_RESEND_INVITATION_FEATURE.md

6.8 KiB

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