espace-paie-odentas/STAFF_NOTES_FEATURE.md

152 lines
4.9 KiB
Markdown

# Feature: Gestion des notes internes pour les salariés (Staff)
## 📝 Description
Cette fonctionnalité permet au staff de :
- **Ajouter des notes internes** pour chaque salarié
- **Modifier** les notes existantes
- **Visualiser** les notes dans une interface claire
Les notes sont stockées dans la colonne `notes` de la table `salaries` et sont **visibles uniquement par le staff**.
## 🔧 Fichiers modifiés
### 1. `/components/staff/SalariesGridSimple.tsx` (MODIFIÉ)
**Ajouts :**
- Ajout du champ `notes` dans le type `Salarie`
- États pour gérer l'édition :
- `isEditingNote` : booléen pour mode édition
- `noteValue` : valeur temporaire de la note en cours d'édition
- `savingNote` : indicateur de sauvegarde en cours
**Fonctions ajoutées :**
- `handleSaveNote()` : Sauvegarde la note via l'API
- `handleStartEditNote()` : Active le mode édition et charge la note actuelle
- `handleCancelEditNote()` : Annule l'édition en cours
**UI de la Card Note interne :**
**Mode Lecture (note existante) :**
- Affichage de la note dans un bloc jaune avec bordure
- Format `whitespace-pre-wrap` pour respecter les retours à la ligne
- Bouton "✏️ Modifier la note"
**Mode Lecture (pas de note) :**
- Message "Aucune note enregistrée pour ce salarié"
- Bouton "+ Ajouter une note"
**Mode Édition :**
- Textarea de 5 lignes avec placeholder
- Bouton "Enregistrer" avec loader pendant la sauvegarde
- Bouton "Annuler" pour quitter sans sauvegarder
- Désactivation des contrôles pendant la sauvegarde
### 2. `/app/api/staff/salaries/update/route.ts` (MODIFIÉ)
**Modifications :**
- Ajout de `'notes'` dans la liste `allowedFields`
- Permet maintenant de mettre à jour la colonne `notes` de la table `salaries`
### 3. `/app/(app)/staff/salaries/page.tsx` (MODIFIÉ)
**Modifications :**
- Ajout de `notes` dans le `.select()` de la requête Supabase initiale
- Permet de charger les notes existantes au chargement de la page
### 4. `/app/api/staff/salaries/search/route.ts` (MODIFIÉ)
**Modifications :**
- Ajout de `notes` dans le `.select()` de la requête de recherche
- Permet d'avoir les notes dans les résultats de recherche
## 🎨 Interface utilisateur
### Card "Note interne"
```
📝 Note interne
────────────────────────
[Mode vide]
Aucune note enregistrée pour ce salarié.
[+ Ajouter une note]
[Mode avec note]
┌──────────────────────────────┐
│ Note existante qui peut │
│ contenir plusieurs lignes │
│ avec retours à la ligne │
└──────────────────────────────┘
[✏️ Modifier la note]
[Mode édition]
┌──────────────────────────────┐
│ Textarea éditable │
│ │
│ │
│ │
└──────────────────────────────┘
[Enregistrer] [Annuler]
```
## 💾 Stockage
- **Table** : `salaries`
- **Colonne** : `notes` (TEXT, nullable)
- **Format** : Texte libre avec support des retours à la ligne
- **Visibilité** : Staff uniquement
## 🔒 Sécurité
- Seul le staff peut lire et modifier les notes
- Validation côté serveur via `staff_users.is_staff`
- Les notes ne sont jamais exposées aux salariés
## ⚡ Comportement
1. **Changement de salarié** : Réinitialise automatiquement le mode édition
2. **Sauvegarde** : Mise à jour optimiste + confirmation serveur
3. **Annulation** : Restaure la valeur d'origine sans sauvegarder
4. **Feedback visuel** : Loader pendant la sauvegarde, désactivation des boutons
## 🎯 Cas d'usage
- Notes RH confidentielles
- Historique des échanges
- Alertes ou rappels internes
- Informations administratives spécifiques
- Tout commentaire utile pour le suivi du salarié
## ✅ Tests recommandés
1. **Ajout d'une note sur un salarié sans note**
- Cliquer sur "+ Ajouter une note"
- Saisir du texte avec plusieurs lignes
- Valider et vérifier l'affichage
2. **Modification d'une note existante**
- Sélectionner un salarié avec une note
- Cliquer sur "✏️ Modifier la note"
- Modifier le texte
- Valider et vérifier la mise à jour
3. **Annulation**
- Commencer à éditer une note
- Cliquer sur "Annuler"
- Vérifier que les modifications ne sont pas sauvegardées
4. **Changement de salarié pendant l'édition**
- Éditer une note
- Sélectionner un autre salarié
- Vérifier que le mode édition se désactive
5. **Retours à la ligne**
- Ajouter une note avec plusieurs paragraphes
- Vérifier que les retours à la ligne sont préservés
6. **Sauvegarde d'une note vide**
- Éditer une note existante
- Vider le contenu
- Sauvegarder
- Vérifier qu'elle devient "Aucune note"