# 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"