# Feature: Affichage et gestion des documents salariés dans Staff

## 📝 Description

Cette fonctionnalité permet au staff de :
- Visualiser les documents up## 📦 Types de documents supportés

| Type | Label affiché |
|------|---------------|
| `piece_identite` | Pièce d'identité |
| `attestation_secu` | Attestation Sécurité Sociale |
| `rib` | RIB |
| `medecine_travail` | Médecine du travail |
| `contrat_travail` | Contrat de travail *(nouveau - staff uniquement)* |
| `diplome` | Diplôme *(nouveau - staff uniquement)* |
| `justificatif` | Justificatif *(nouveau - staff uniquement)* |
| `autre` | Autre document |r les salariés via la page d'auto-déclaration
- Télécharger ces documents
- **Uploader manuellement des documents pour un salarié**

Le tout accessible directement depuis l'interface `/staff/salaries`.

## 🔧 Fichiers modifiés/créés

### 1. `/app/api/staff/salaries/documents/route.ts` (NOUVEAU)
API qui récupère les documents d'un salarié depuis S3.

**Fonctionnalités :**
- Récupère tous les fichiers stockés dans S3 pour un matricule donné
- Génère des URLs pré-signées valides 1 heure pour le téléchargement sécurisé
- Détecte automatiquement le type de document (CNI, RIB, etc.) basé sur le nom du fichier
- Retourne les métadonnées (nom, type, taille, date de modification)

**Endpoint :** `GET /api/staff/salaries/documents?matricule={code_salarie}`

**Réponse :**
```json
{
  "documents": [
    {
      "key": "justif-salaries/MAT001/piece-identite-1234567890.pdf",
      "name": "piece-identite-1234567890.pdf",
      "type": "Pièce d'identité",
      "size": 245678,
      "lastModified": "2025-10-12T10:30:00Z",
      "downloadUrl": "https://odentas-docs.s3.eu-west-3.amazonaws.com/..."
    }
  ],
  "count": 1,
  "matricule": "MAT001"
}
```

### 2. `/app/api/staff/salaries/documents/upload/route.ts` (NOUVEAU)
API qui permet au staff d'uploader des documents pour un salarié.

**Fonctionnalités :**
- Upload de fichiers (PDF, JPG, PNG) jusqu'à 10MB
- Vérification de l'existence du salarié
- Stockage dans S3 sous `justif-salaries/{matricule}/`
- Métadonnées incluant `uploaded-by: 'staff'` pour tracer l'origine

**Endpoint :** `POST /api/staff/salaries/documents/upload`

**Body (FormData) :**
- `file`: Le fichier à uploader
- `matricule`: Code salarié
- `type`: Type de document (piece_identite, rib, etc.)

**Types de documents supportés :**
- `piece_identite` - Pièce d'identité
- `attestation_secu` - Attestation Sécurité Sociale
- `rib` - RIB
- `medecine_travail` - Attestation médecine du travail
- `contrat_travail` - Contrat de travail
- `diplome` - Diplôme
- `justificatif` - Justificatif
- `autre` - Autre document

### 3. `/components/staff/UploadDocumentModal.tsx` (NOUVEAU)
Composant modal pour uploader des documents.

**Fonctionnalités :**
- Sélection du type de document via dropdown
- Upload par drag & drop ou clic
- Validation du type et de la taille de fichier
- Prévisualisation du fichier sélectionné
- Feedback visuel pendant l'upload
- Messages de succès/erreur avec toast

### 4. `/components/staff/SalariesGridSimple.tsx` (MODIFIÉ)
Composant principal de la page staff/salaries.

**Modifications :**
- Ajout du type `S3Document` pour typer les documents
- Ajout des états `documents`, `loadingDocuments` et `isUploadModalOpen`
- Ajout de la fonction `fetchSalarieDocuments()` qui appelle l'API
- Mise à jour du `useEffect` pour charger les documents lors de la sélection d'un salarié
- Refonte complète de la Card "Documents" pour afficher :
  - Un loader pendant le chargement
  - La liste des documents avec icône de téléchargement
  - Le type, la date et la taille de chaque document
  - Un message si aucun document n'est disponible
  - **Un bouton "Ajouter un document" pour upload manuel**
- Intégration de `UploadDocumentModal` avec callback de rafraîchissement

## 🎨 Interface utilisateur

### Card Documents - États possibles

1. **Chargement** : Spinner animé
2. **Documents disponibles** : 
   - Liste cliquable avec :
     - Icône de téléchargement
     - Type de document (Pièce d'identité, RIB, etc.)
     - Date d'upload et taille en Ko
     - Fond bleu clair au hover
   - Bouton "Ajouter un document" en bas
3. **Aucun document** : 
   - Message explicatif
   - Bouton "Ajouter un document"

### Modale d'upload

La modale permet de :
1. Sélectionner le type de document (dropdown avec 8 types)
2. Uploader un fichier via :
   - Drag & drop
   - Clic pour ouvrir le sélecteur
3. Voir le fichier sélectionné avec sa taille
4. Valider ou annuler l'upload

### Exemple d'affichage
```
📄 Documents
────────────────────────
3 documents disponibles

[⬇️] Pièce d'identité
     12/10/2025 • 245.7 Ko

[⬇️] Attestation Sécurité Sociale
     12/10/2025 • 189.2 Ko

[⬇️] RIB
     12/10/2025 • 102.3 Ko

[+ Ajouter un document]
```

## 🔒 Sécurité

- Les URLs de téléchargement sont pré-signées et expirent après 1 heure
- L'accès aux APIs est réservé au staff (vérification via `createSbServiceRole()`)
- Les fichiers sont stockés de manière isolée par matricule sur S3
- Les uploads par le staff sont tracés via la métadonnée `uploaded-by: 'staff'`
- Validation du type de fichier et de la taille (max 10MB)
- Vérification de l'existence du salarié avant upload

## 🔗 Intégration

La feature s'intègre avec le système d'auto-déclaration existant :
- Les salariés uploadent leurs documents via `/auto-declaration`
- **Le staff peut aussi uploader des documents manuellement via `/staff/salaries`**
- Les documents sont stockés dans S3 sous `justif-salaries/{matricule}/`
- Le staff peut les visualiser et télécharger via `/staff/salaries`
- Tous les documents (auto-déclaration + staff) sont mélangés dans la même liste

## 📦 Types de documents supportés

| Type | Label affiché |
|------|---------------|
| `piece-identite` | Pièce d'identité |
| `attestation-secu` | Attestation Sécurité Sociale |
| `rib` | RIB |
| `medecine-travail` | Médecine du travail |
| `autre` | Autre document |

## 🚀 Déploiement

Aucune configuration supplémentaire requise. La feature utilise les variables d'environnement AWS S3 existantes :
- `AWS_REGION`
- `AWS_ACCESS_KEY_ID`
- `AWS_SECRET_ACCESS_KEY`
- `AWS_S3_BUCKET`

## ✅ Tests recommandés

1. **Visualisation :**
   - Sélectionner un salarié qui a uploadé des documents
   - Vérifier que les documents s'affichent correctement
   - Cliquer sur un document pour le télécharger
   - Vérifier qu'un salarié sans document affiche le bon message

2. **Upload manuel par le staff :**
   - Cliquer sur "Ajouter un document"
   - Sélectionner un type de document
   - Tester le drag & drop d'un fichier valide
   - Tester l'upload avec un fichier trop volumineux (>10MB)
   - Tester avec un type de fichier invalide (.txt, .doc)
   - Vérifier que le document apparaît immédiatement après l'upload
   - Vérifier qu'on peut télécharger le document uploadé

3. **Edge cases :**
   - Salarié sans matricule (code_salarie null)
   - Upload pendant qu'un autre est en cours
   - Fermeture de la modale pendant l'upload
