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