158 lines
5.8 KiB
Markdown
158 lines
5.8 KiB
Markdown
# Synchronisation des notes : Auto-déclaration → Staff/Salariés
|
|
|
|
## Problème résolu
|
|
|
|
Les notes saisies par les salariés dans le formulaire d'auto-déclaration n'étaient **pas visibles** dans la section "Notes" de la page staff/salaries.
|
|
|
|
### Situation avant correction
|
|
|
|
- ✅ Les notes étaient sauvegardées dans `justificatifs_personnels` (format JSON)
|
|
- ❌ Les notes n'étaient PAS enregistrées dans le champ `notes`
|
|
- ❌ Le staff ne pouvait pas voir ces notes dans l'interface staff/salaries
|
|
|
|
**Conséquence** : Les informations importantes communiquées par les salariés restaient invisibles pour le staff.
|
|
|
|
## Solution appliquée
|
|
|
|
### Modifications dans `/app/api/auto-declaration/route.ts`
|
|
|
|
La logique d'enregistrement des notes a été améliorée pour :
|
|
|
|
1. **Récupérer les notes existantes** avant d'ajouter les nouvelles
|
|
2. **Ajouter la nouvelle note avec horodatage** au champ `notes` visible par le staff
|
|
3. **Préserver l'historique** dans `justificatifs_personnels` (format JSON)
|
|
|
|
### Code modifié
|
|
|
|
```typescript
|
|
if (updateData.notes) {
|
|
// Récupérer les notes existantes pour les préserver
|
|
const { data: currentSalarie } = await sb
|
|
.from('salaries')
|
|
.select('notes, justificatifs_personnels')
|
|
.eq('id', tokenData.salarie_id)
|
|
.single();
|
|
|
|
// Préparer la nouvelle note avec horodatage
|
|
const currentDate = new Date().toISOString().split('T')[0];
|
|
const currentTime = new Date().toLocaleString('fr-FR');
|
|
const newNote = `[${currentTime} - Auto-déclaration]\n${updateData.notes}`;
|
|
|
|
// Ajouter aux notes existantes ou créer une nouvelle note
|
|
if (currentSalarie?.notes) {
|
|
dataToUpdate.notes = `${currentSalarie.notes}\n\n${newNote}`;
|
|
} else {
|
|
dataToUpdate.notes = newNote;
|
|
}
|
|
|
|
// Également ajouter aux justificatifs personnels (format JSON) pour historique
|
|
const noteEntry = {
|
|
date: currentDate,
|
|
source: 'auto-declaration',
|
|
notes: updateData.notes
|
|
};
|
|
|
|
dataToUpdate.justificatifs_personnels = JSON.stringify([noteEntry]);
|
|
}
|
|
```
|
|
|
|
## Fonctionnement
|
|
|
|
### 1. Horodatage automatique
|
|
Chaque note de l'auto-déclaration est précédée de :
|
|
```
|
|
[17/10/2025 à 14:30:25 - Auto-déclaration]
|
|
```
|
|
|
|
### 2. Préservation des notes existantes
|
|
- Si le salarié avait déjà des notes (ajoutées par le staff), elles sont conservées
|
|
- La nouvelle note est ajoutée à la suite avec une double ligne de séparation (`\n\n`)
|
|
|
|
### 3. Double sauvegarde
|
|
- **Champ `notes`** : Visible immédiatement par le staff sur staff/salaries
|
|
- **Champ `justificatifs_personnels`** : Historique structuré au format JSON
|
|
|
|
## Format des notes
|
|
|
|
### Exemple avec première note
|
|
```
|
|
[17/10/2025 à 14:30:25 - Auto-déclaration]
|
|
Je suis disponible pour commencer le contrat dès le 20 octobre.
|
|
J'ai déjà travaillé sur des productions similaires.
|
|
```
|
|
|
|
### Exemple avec notes multiples
|
|
```
|
|
[15/10/2025 à 10:00:00 - Staff]
|
|
Candidat intéressant pour le projet XYZ
|
|
|
|
[17/10/2025 à 14:30:25 - Auto-déclaration]
|
|
Je suis disponible pour commencer le contrat dès le 20 octobre.
|
|
J'ai déjà travaillé sur des productions similaires.
|
|
```
|
|
|
|
## Avantages
|
|
|
|
### ✅ Visibilité immédiate
|
|
- Les notes des salariés apparaissent instantanément dans l'interface staff
|
|
- Pas besoin de chercher dans les justificatifs personnels
|
|
|
|
### ✅ Traçabilité
|
|
- Horodatage précis de chaque note
|
|
- Source clairement identifiée (Auto-déclaration vs Staff)
|
|
- Historique complet préservé
|
|
|
|
### ✅ Communication améliorée
|
|
- Le staff peut voir les informations importantes des salariés
|
|
- Facilite le suivi et la coordination
|
|
- Évite les oublis ou pertes d'information
|
|
|
|
## Interface utilisateur
|
|
|
|
### Page auto-déclaration
|
|
Le salarié voit :
|
|
```
|
|
Section "Notes"
|
|
┌─────────────────────────────────────────────┐
|
|
│ Informations complémentaires │
|
|
│ ┌─────────────────────────────────────────┐ │
|
|
│ │ [Zone de texte libre] │ │
|
|
│ │ │ │
|
|
│ │ │ │
|
|
│ └─────────────────────────────────────────┘ │
|
|
│ Utilisez ce champ libre si vous devez │
|
|
│ mentionner toutes les informations │
|
|
│ complémentaires. │
|
|
└─────────────────────────────────────────────┘
|
|
```
|
|
|
|
### Page staff/salaries
|
|
Le staff voit la note dans le panneau latéral :
|
|
```
|
|
Section "Notes"
|
|
┌─────────────────────────────────────────────┐
|
|
│ [17/10/2025 à 14:30:25 - Auto-déclaration] │
|
|
│ Je suis disponible pour commencer le │
|
|
│ contrat dès le 20 octobre. │
|
|
└─────────────────────────────────────────────┘
|
|
```
|
|
|
|
## Tests recommandés
|
|
|
|
1. ✅ Saisir une note sur l'auto-déclaration
|
|
2. ✅ Vérifier qu'elle apparaît dans staff/salaries
|
|
3. ✅ Vérifier l'horodatage et la source
|
|
4. ✅ Ajouter une deuxième note et vérifier la concaténation
|
|
5. ✅ Vérifier que les notes staff existantes sont préservées
|
|
6. ✅ Tester avec un salarié sans note existante
|
|
7. ✅ Tester avec un salarié ayant déjà des notes staff
|
|
|
|
## Fichiers modifiés
|
|
|
|
- ✅ `/app/api/auto-declaration/route.ts` - Logique d'enregistrement des notes
|
|
|
|
## Rétrocompatibilité
|
|
|
|
- ✅ Les anciennes notes (si existantes) sont préservées
|
|
- ✅ Le format JSON dans `justificatifs_personnels` reste fonctionnel
|
|
- ✅ Aucune migration de données nécessaire
|