7.2 KiB
7.2 KiB
Signatures électroniques sur la page Virements Salaires (Staff)
📋 Vue d'ensemble
Cette fonctionnalité permet aux utilisateurs staff de visualiser les signatures électroniques en attente pour une organisation spécifique directement depuis la page Virements salaires.
✨ Fonctionnalités
Pour les utilisateurs Staff uniquement
-
Menu déroulant des organisations
- Affiché uniquement pour les utilisateurs staff
- Liste toutes les organisations disponibles
- Permet de sélectionner une organisation pour voir ses données
-
Section Signatures électroniques
- Affichée uniquement quand un staff a sélectionné une organisation
- Liste tous les contrats en attente de signature pour l'organisation
- Informations affichées :
- Référence du contrat
- Nom du salarié
- Profession
- Date de début
- Statut signature employeur (✓ Signé / ⏳ En attente)
- Statut signature salarié (✓ Signé / ⏳ En attente)
- Bouton "Voir" pour accéder au lien de signature DocuSeal
🔧 Implémentation technique
Fichiers modifiés
1. /app/(app)/virements-salaires/page.tsx
Nouveaux hooks ajoutés :
// Hook pour récupérer les signatures électroniques d'une organisation
function useSignatures(selectedOrgId?: string)
Nouvelles fonctionnalités :
- Menu déroulant de sélection d'organisation (visible uniquement pour les staff)
- Section d'affichage des signatures électroniques avec tableau détaillé
- Icônes ajoutées :
FileSignature,Eye
État local :
const [selectedOrgId, setSelectedOrgId] = useState<string>("");
2. /app/api/signatures-electroniques/contrats/route.ts
Modifications :
- Ajout du support du paramètre
org_iden query string - Les utilisateurs staff peuvent passer un
org_idpour filtrer les signatures d'une organisation spécifique - Champs supplémentaires retournés :
employee_first_nameemployee_last_namerole(profession)start_datesignature_employeur(booléen)signature_salarie(booléen)
Exemple d'appel API :
GET /api/signatures-electroniques/contrats?org_id=<organization_id>
API utilisées
1. GET /api/staff/organizations
- Liste toutes les organisations
- Accessible uniquement aux staff
- Retourne :
{ organizations: [{ id, name, structure_api }] }
2. GET /api/signatures-electroniques/contrats?org_id=<org_id>
- Liste les signatures électroniques en attente
- Filtre par organisation si
org_idfourni - Accessible aux staff et membres d'organisation
- Retourne :
{ records: [...] }
🎨 Interface utilisateur
Menu déroulant des organisations
<select value={selectedOrgId} onChange={(e) => setSelectedOrgId(e.target.value)}>
<option value="">Toutes les organisations</option>
{organizations.map(org => (
<option key={org.id} value={org.id}>{org.name}</option>
))}
</select>
Tableau des signatures
| Colonne | Description |
|---|---|
| Référence | Référence du contrat |
| Salarié·e | Nom complet du salarié |
| Profession | Fonction/rôle du salarié |
| Date début | Date de début du contrat |
| Statut employeur | Badge ✓ Signé ou ⏳ En attente |
| Statut salarié | Badge ✓ Signé ou ⏳ En attente |
| Actions | Bouton "Voir" avec icône Eye |
États des badges
- ✓ Signé : Badge vert (
bg-emerald-100 text-emerald-800) - ⏳ En attente : Badge orange (
bg-amber-100 text-amber-800)
🔐 Sécurité et permissions
Vérifications côté client
- Le menu déroulant et la section signatures ne s'affichent que si
userInfo?.isStaff === true - La section signatures ne s'affiche que si une organisation est sélectionnée
Vérifications côté serveur (API)
- Vérification du statut staff via la table
staff_users - Les utilisateurs non-staff ne peuvent voir que les signatures de leur propre organisation
- Les staff peuvent voir les signatures de n'importe quelle organisation
📊 Filtrage des signatures
L'API filtre automatiquement les contrats selon les critères suivants :
etat_de_la_demande= "Traitée" (ou variantes)- Contrats en attente de signature employeur :
contrat_signe_par_employeur= "non" - Contrats en attente de signature salarié :
contrat_signe= "non" +contrat_signe_par_employeur= "oui"
🚀 Utilisation
Pour un utilisateur Staff
- Se connecter avec un compte staff
- Accéder à la page
/virements-salaires - Sélectionner une organisation dans le menu déroulant en haut de la page
- La section "Signatures électroniques" apparaît automatiquement sous les virements
- Consulter les signatures en attente
- Cliquer sur "Voir" pour accéder au lien DocuSeal
Cas d'usage
- Suivi global : Les staff peuvent surveiller l'état des signatures pour toutes les organisations
- Support client : Identifier rapidement les contrats bloqués en attente de signature
- Vérification : S'assurer que les signatures sont en cours avant d'effectuer les virements
🔄 Synchronisation des données
- Les données des signatures sont chargées automatiquement lors de la sélection d'une organisation
- Le hook
useSignaturesutilise React Query avec unstaleTimede 15 secondes - Les données sont mises en cache pour éviter les appels API inutiles
📝 Types TypeScript
type SignatureRecord = {
id: string;
fields: {
reference: string;
employee_first_name: string;
employee_last_name: string;
role: string; // Profession
start_date: string;
signature_employeur: boolean;
signature_salarie: boolean;
signature_link?: string;
};
};
⚠️ Points d'attention
- Performance : La liste des organisations est chargée uniquement pour les staff
- Cache : Les signatures sont mises en cache avec React Query
- Liens DocuSeal : Le lien peut être absent si la signature n'a pas encore été initiée
- Format des données : L'API retourne un format compatible avec l'ancien système Airtable
🐛 Débogage
Console navigateur
// Vérifier les données chargées
// Dans React Query Devtools, chercher les clés :
// - ["organizations"]
// - ["signatures-electroniques", selectedOrgId]
Logs serveur
🔍 [signatures-electroniques] Requête pour scope: employeur, orgId: <org_id>
📊 [signatures-electroniques] Contrats trouvés: X
📋 [signatures-electroniques] Échantillon: [...]
🔮 Améliorations futures
- Ajouter un filtre par statut (tout / en attente employeur / en attente salarié)
- Ajouter une recherche par nom de salarié ou référence
- Afficher le nombre de signatures en attente dans le titre de section
- Ajouter un bouton de rafraîchissement manuel
- Permettre l'envoi de relances depuis cette page
- Afficher la date de création du contrat
- Ajouter un tri par date/référence/salarié
📚 Documentation associée
- SIGNATURE_SALARIE_FEATURE.md - Documentation des signatures salarié
- DOCUSEAL_ENV_VARIABLES.md - Variables d'environnement DocuSeal
- STAFF_MAINTENANCE_ACCESS_GUIDE.md - Guide d'accès staff