diff --git a/.idea/SIRH.iml b/.idea/SIRH.iml
index 6ff23a1..c7476c0 100644
--- a/.idea/SIRH.iml
+++ b/.idea/SIRH.iml
@@ -145,6 +145,13 @@
+
+
+
+
+
+
+
diff --git a/AGENTS.md b/AGENTS.md
new file mode 100644
index 0000000..b277fe9
--- /dev/null
+++ b/AGENTS.md
@@ -0,0 +1,105 @@
+# AGENTS.md
+
+État des lieux opérationnel du projet SIRH (backend + frontend), à utiliser comme base sur les prochaines interventions.
+
+## 1) Stack et structure
+
+- Backend: Symfony + API Platform + Doctrine ORM
+- Frontend: Nuxt 4 + Vue 3 + TypeScript + Tailwind
+- Exécution locale: Docker via `makefile`
+
+Arborescence clé:
+- `src/`: domaine, API resources, state providers/processors, services
+- `tests/`: TU backend (PHPUnit)
+- `frontend/`: app Nuxt (pages, composants, composables, services)
+- `migrations/`: migrations Doctrine
+
+## 2) Commandes utiles
+
+- Démarrer stack: `make start`
+- Tests backend: `make test`
+- Build frontend: `cd frontend && npm run build`
+- Dev frontend: `make dev-nuxt`
+
+## 3) Domaine métier (résumé)
+
+### Contrats
+- Entité: `Contract`
+- Champs principaux: `name`, `trackingMode`, `weeklyHours`, `isActive`
+- `trackingMode`:
+ - `TIME`: suivi par heures
+ - `PRESENCE`: suivi présence demi-journées/journées
+- Enums backend:
+ - `App\Enum\TrackingMode`
+ - `App\Enum\ContractType` (`FORFAIT`, `35H`, `39H`, `INTERIM`, `CUSTOM`)
+- `Contract::getType()` est exposé en API (`contract:read`, `employee:read`)
+
+### Heures / absences
+- Les absences sont découpées en enregistrements journaliers (pas de période unique stockée).
+- Une ligne d’heures validée est verrouillée côté métier.
+- Règles de crédit absence (`countAsWorkedHours=true`) gérées dans `WorkedHoursCreditPolicy`:
+ - contrats présence: crédit en unités de présence
+ - contrats temps: crédit en minutes selon règles contrat (35h, 39h, 4h, fallback)
+
+## 4) Écrans principaux
+
+### Page Heures (`frontend/pages/hours.vue`)
+- Vue Jour + Vue Semaine (semaine réservée admin)
+- Toolbar dédiée: `frontend/components/hours/HoursToolbar.vue`
+- Vue jour: `frontend/components/hours/HoursDayView.vue`
+- Vue semaine: `frontend/components/hours/HoursWeekView.vue`
+- Logique page: `frontend/composables/useHoursPage.ts`
+
+### Points UX déjà en place
+- Toolbar semaine: raccourcis semaine précédente / actuelle / suivante
+- Légende absences affichée dans la toolbar (admin + vue semaine)
+- Cellules semaine avec absence: couleur du type d’absence (plus rouge fixe)
+- Pour user non-admin: restrictions d’édition selon validations/absences
+
+## 5) API / calculs hebdo
+
+- Provider: `src/State/WorkHourWeeklySummaryProvider.php`
+- DTOs:
+ - `src/Dto/WorkHours/WeeklySummaryRow.php`
+ - `src/Dto/WorkHours/WeeklyDaySummary.php`
+- Le résumé hebdo renvoie notamment:
+ - `trackingMode`
+ - `contractName`
+ - `contractType`
+ - détails journaliers (jour/nuit/total, présence, absence label/couleur)
+
+### Heures supp
+- Règles métier:
+ - contrats <= 35h: tranche 25% de 35h à 43h, puis 50% au-delà
+ - contrats >= 39h: tranche 25% de 39h à 43h, puis 50% au-delà
+ - contrats `INTERIM`: pas de bonus 25/50 ni récup
+
+## 6) Conventions techniques
+
+- Favoriser DTO explicites plutôt que tableaux associatifs bruts.
+- Utiliser les interfaces repository dans providers/processors testés.
+- Centraliser les règles métier dans services/providers backend plutôt que dupliquer côté front.
+- Front: éviter les calculs métier lourds; consommer les champs API déjà calculés.
+
+## 7) Tests et qualité
+
+- Les TU backend passent actuellement via `make test`.
+- Le build frontend passe via `npm run build`.
+- À chaque évolution métier:
+ - mettre à jour les tests provider/processor/service impactés
+ - maintenir la cohérence des DTO TypeScript (`frontend/services/dto/*`)
+
+## 8) Fichiers sensibles (à lire avant modif)
+
+- `src/State/WorkHourWeeklySummaryProvider.php`
+- `src/Service/WorkHours/WorkedHoursCreditPolicy.php`
+- `src/State/AbsenceWriteProcessor.php`
+- `src/State/WorkHourBulkUpsertProcessor.php`
+- `frontend/composables/useHoursPage.ts`
+- `frontend/components/hours/HoursWeekView.vue`
+
+## 9) Décisions de conception actuelles
+
+- Les absences sont stockées par jour (facilite verrouillage/édition fine).
+- Les règles de calcul (crédits, majorations, récup) sont portées côté backend.
+- Le front reste centré sur l’affichage/interaction et réutilise les données enrichies de l’API.
diff --git a/config/services.yaml b/config/services.yaml
index 49aba49..9a7408a 100644
--- a/config/services.yaml
+++ b/config/services.yaml
@@ -22,5 +22,9 @@ services:
App\:
resource: '../src/'
+ App\Repository\Contract\AbsenceReadRepositoryInterface: '@App\Repository\AbsenceRepository'
+ App\Repository\Contract\EmployeeScopedRepositoryInterface: '@App\Repository\EmployeeRepository'
+ App\Repository\Contract\WorkHourReadRepositoryInterface: '@App\Repository\WorkHourRepository'
+
# add more service definitions when explicit configuration is needed
# please note that last definitions always *replace* previous ones
diff --git a/frontend/components/AbsenceFormDrawer.vue b/frontend/components/AbsenceFormDrawer.vue
index 8535acb..580cb1d 100644
--- a/frontend/components/AbsenceFormDrawer.vue
+++ b/frontend/components/AbsenceFormDrawer.vue
@@ -9,6 +9,7 @@
id="employee"
v-model="absenceForm.employeeId"
:class="employeeFieldClass"
+ :disabled="props.lockEmployee"
>