espace-paie-odentas/STAFF_NOTES_FEATURE.md

4.9 KiB

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"