# Temps de Travail Réel - Fonctionnalité

## 📋 Contexte

Depuis la migration vers le nouvel Espace Paie, le système de saisie des heures et jours de travail a changé. Les données affichées dans la card "Temps de travail réel" sur la page client `contrats/[id]` n'étaient plus correctement alimentées.

## ✅ Solution Implémentée

### 1. Nouvelles Colonnes Supabase

Ajout de colonnes dédiées dans `cddu_contracts` pour stocker le temps de travail **réel** (distinct des données contractuelles) :

| Colonne | Type | Description |
|---------|------|-------------|
| `jours_travail_reel` | TEXT | Jours de travail réels (artiste) |
| `jours_travail_non_artiste_reel` | TEXT | Jours de travail réels (technicien) |
| `nb_representations_reel` | INTEGER | Nombre réel de représentations |
| `dates_representations_reel` | TEXT | Dates réelles des représentations |
| `nb_services_repetitions_reel` | INTEGER | Nombre réel de services de répétition |
| `nb_heures_repetitions_reel` | NUMERIC(10,2) | Heures réelles de répétition |
| `dates_repetitions_reel` | TEXT | Dates réelles des répétitions |
| `nb_heures_annexes_reel` | NUMERIC(10,2) | Heures réelles Annexes 8 |
| `nb_cachets_aem_reel` | INTEGER | Cachets AEM réels |
| `nb_heures_aem_reel` | NUMERIC(10,2) | Heures AEM réelles |

**Note importante** : Ces colonnes sont purement **informatives pour le client** et ne sont **pas utilisées** pour la génération du PDF du contrat via PDFMonkey.

### 2. Interface Staff (staff/contrats/[id])

Ajout d'une **sous-section "Temps de travail réel"** dans la card "Temps de travail" :

- **Emplacement** : Après le séparateur, en bas de la card "Temps de travail"
- **Indication visuelle** : Message clair indiquant que c'est informatif pour le client
- **Champs disponibles** :
  - Jours travaillés (artiste)
  - Jours travaillés (technicien)
  - Nombre de représentations
  - Dates de représentations
  - Nombre de services répétitions
  - Nombre d'heures répétitions
  - Dates de répétitions
  - Nombre d'heures Annexes 8
  - Nombre de cachets AEM
  - Nombre d'heures AEM

### 3. Affichage Client (contrats/[id])

La card "Temps de travail réel" affiche maintenant les données des colonnes `*_reel` :

```tsx
<Section title="Temps de travail réel" icon={Calendar}>
  <Field label="Jours travaillés" value={data.jours_travail_reel} />
  <Field label="Nbre de représentations" value={data.nb_representations_reel} />
  // etc.
</Section>
```

### 4. API Mapping

L'API `/api/contrats/[id]` mappe automatiquement ces nouvelles colonnes :

```typescript
nb_representations_reel: cddu.nb_representations_reel ? Number(cddu.nb_representations_reel) : undefined,
nb_services_repetitions_reel: cddu.nb_services_repetitions_reel ? Number(cddu.nb_services_repetitions_reel) : undefined,
// etc.
```

## 🚀 Migration SQL

Exécuter le script de migration :

```bash
# Via Supabase Dashboard > SQL Editor
# Ou via CLI supabase
supabase db execute -f migrations/add_temps_travail_reel_columns.sql
```

## 📝 Utilisation

1. **Staff** : Aller sur `staff/contrats/[id]`
2. Descendre jusqu'à la card **"Temps de travail"**
3. Remplir la sous-section **"Temps de travail réel (informatif client)"**
4. Cliquer sur **Sauvegarder**
5. **Client** : Les données apparaissent immédiatement dans `contrats/[id]` > "Temps de travail réel"

## ⚠️ Points d'Attention

- ✅ Ces données sont **indépendantes** des données contractuelles (utilisées pour le PDF)
- ✅ Elles **ne sont pas envoyées** à PDFMonkey
- ✅ Elles sont **purement informatives** pour le client
- ✅ Les anciennes colonnes (`jours_travail`, `nb_representations`, etc.) restent utilisées pour le contrat PDF

## 📂 Fichiers Modifiés

| Fichier | Modifications |
|---------|---------------|
| `migrations/add_temps_travail_reel_columns.sql` | Création des colonnes |
| `components/staff/contracts/ContractEditor.tsx` | Ajout UI + états + sauvegarde |
| `app/api/contrats/[id]/route.ts` | Mapping API |
| `app/(app)/contrats/[id]/page.tsx` | Affichage client |

## ✅ Tests

- [ ] Exécuter la migration SQL sur Supabase
- [ ] Vérifier que les colonnes sont créées
- [ ] Tester la saisie dans staff/contrats/[id]
- [ ] Vérifier l'affichage dans contrats/[id]
- [ ] Vérifier que le PDF du contrat n'est pas impacté
