feat(reporting) : add Reporting dashboard front layer

LST-59 (3.1) front. Completes the Reporting module.

- New frontend/modules/reporting/ layer (auto-detected): /reporting page
  (admin middleware) consuming the 4 read-only report endpoints.
- Filters (period presets + custom dates, project, user). 4 sections (time per
  project, time per user, tasks by status, absences by type) each with a
  DataTable + a Chart.js chart (reused global registration).
- Front-side CSV export per section (useCsvExport: BOM UTF-8, ; separator).
- i18n keys (reporting.*, sidebar.admin.reporting).

nuxt build passes; /reporting routed; no route regression.
This commit is contained in:
Matthieu
2026-06-21 00:16:03 +02:00
parent b3b29fd753
commit f4ffc02028
9 changed files with 713 additions and 1 deletions
+46 -1
View File
@@ -360,7 +360,52 @@
"section": "Administration",
"teamAbsences": "Absences équipe",
"administration": "Administration",
"directory": "Répertoire"
"directory": "Répertoire",
"reporting": "Rapports"
}
},
"reporting": {
"title": "Rapports",
"export": "Exporter (CSV)",
"empty": "Aucune donnée pour cette période.",
"filters": {
"period": "Période",
"from": "Du",
"to": "Au",
"project": "Projet",
"allProjects": "Tous les projets",
"user": "Utilisateur",
"allUsers": "Tous les utilisateurs"
},
"periods": {
"thisMonth": "Mois courant",
"lastMonth": "Mois dernier",
"custom": "Personnalisé"
},
"sections": {
"timePerProject": "Temps par projet",
"timePerUser": "Temps par utilisateur",
"tasksByStatus": "Tâches par statut",
"absencesByType": "Absences par type"
},
"columns": {
"project": "Projet",
"code": "Code",
"user": "Utilisateur",
"status": "Statut",
"type": "Type",
"hours": "Heures",
"entries": "Nb saisies",
"count": "Nombre",
"days": "Jours"
},
"absenceTypes": {
"cp": "Congés payés",
"mariage_pacs": "Mariage / PACS",
"naissance": "Naissance",
"conge_parental": "Congé parental",
"deces": "Décès proche",
"maladie": "Arrêt maladie"
}
},
"common": {