tristan b5bd4db5f1
Auto Tag Develop / tag (push) Successful in 9s
feat(heures) : export Contingent heures de nuit (liste employés) (#28)
## Résumé
Nouvel export PDF **Contingent heures de nuit** dans le drawer Export de la liste employés.

- PDF **A4 paysage** : lignes = employés (groupés par site, triés displayOrder/nom/prénom), colonnes = 12 mois civils, chaque mois avec 2 sous-colonnes **H.nuit** et **N.jours**.
- Heures de nuit = minutes dans la fenêtre **21h→6h** via un service partagé `NightHoursCalculator` (mutualisé avec `WorkHourWeeklySummaryProvider` et `YearlyHoursExportBuilder` — duplication supprimée, sans changement de comportement).
- **Conducteurs inclus** via `WorkHour.nightHoursMinutes`. Statut conducteur résolu par date.
- **N.jours** = nb de jours où les minutes de nuit ≥ 240 (4h). Aucun crédit absence/férié.
- Périmètre via `EmployeeRepository::findScoped` (admin → tous, chef de site → ses sites), endpoint `GET /night-hours-contingent/print?year=YYYY` (`ROLE_USER`).
- Sélecteur d'année (année civile). Colonne Nom calibrée, séparateurs de mois épais.

## Composants
- Service `NightHoursCalculator`, builder `NightContingentExportBuilder`, DTO `NightContingentRow`
- Provider `NightHoursContingentPrintProvider` + opération API `NightHoursContingentPrint`
- Gabarit `templates/night-hours-contingent/print.html.twig`
- Option frontend dans `frontend/pages/employees/index.vue`
- Docs : `doc/functional-rules.md`, `CLAUDE.md`, `frontend/data/documentation-content.ts`

## Tests
- Nouveaux tests unitaires : `NightHoursCalculatorTest` (fenêtre 21h→6h, passage minuit, bornes), `NightContingentExportBuilderTest` (agrégation mensuelle, règle ≥4h=1j, conducteur, cas sans heures)
- Suite complète : **208 tests OK**
- Rendu PDF validé visuellement (Twig→Dompdf)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Reviewed-on: #28
Co-authored-by: tristan <tristan@yuno.malio.fr>
Co-committed-by: tristan <tristan@yuno.malio.fr>
2026-06-11 13:02:30 +00:00
2026-02-03 18:04:06 +01:00
2026-06-11 08:46:19 +00:00
2026-02-03 18:04:06 +01:00
2026-02-03 18:04:06 +01:00
2026-02-03 18:04:06 +01:00
2026-02-03 17:59:39 +01:00
2026-02-03 18:04:06 +01:00
2026-02-03 18:04:06 +01:00
2026-02-03 18:04:06 +01:00
2026-02-03 18:04:06 +01:00
2026-02-03 18:04:06 +01:00

SIRH

Application de gestion des absences employée

Importer un dump de prod en dev

Sur adminer fait un export bdd :

  • Sortie : enregistrer
  • Format : SQL
  • Tables : DROP+CREATE, Incrément automatique, Déclencheurs
  • Données : INSERT

Supprime la bdd et créer la bdd :

docker compose exec -T db psql -U root -d sirh -c "DROP SCHEMA public CASCADE; CREATE SCHEMA public;"

Remplie la base avec le dump :

docker compose exec -T db psql -U root -d sirh < sirh.sql

Mettre SUPER_ADMIN sur un user

UPDATE users SET roles = '["ROLE_ADMIN","ROLE_SUPER_ADMIN"]' WHERE username = 'emilie';

Récupérer la bdd de prod en local

Sur le serveur de prod, créer le dump :

sudo -u postgres pg_dump --no-owner --no-privileges --clean --if-exists sirh_prod > /tmp/sirh_prod_$(date +%F).sql

En local, récupérer le fichier et l'importer (remplace YYYY-MM-DD par la date du dump) :

scp user@<serveur>:/tmp/sirh_prod_YYYY-MM-DD.sql ~/workspace/SIRH/sirh.sql
docker compose exec -T db psql -U root -d sirh -c "DROP SCHEMA public CASCADE; CREATE SCHEMA public;"
docker compose exec -T db psql -U root -d sirh < ~/workspace/SIRH/sirh.sql
S
Description
No description provided
Readme 4.3 MiB
v0.1.67 Latest
2026-03-30 13:08:13 +00:00
Languages
PHP 61.6%
Vue 21.8%
TypeScript 13.1%
Twig 2.7%
Shell 0.3%
Other 0.4%