Notes de version — 7 mars 2026
Cette version apporte une refonte complète du module Rapports & Analytiques : formats d'export Excel et XML, rétention de l'historique des rapports, refonte des cartes de statistiques, améliorations de la mise en page PDF et plusieurs correctifs UX.
Rapports & Analytiques — Mise à jour majeure
Export Excel (PRO+)
Les rapports peuvent maintenant être exportés vers Excel (.xlsx) avec un classeur à deux feuilles de mise en forme professionnelle.
Structure du classeur :
- Feuille Résumé — métadonnées du rapport, métriques clés, contexte des filtres
- Feuille Données — colonnes dynamiques (facturable, revenus si applicable), tableau stylisé avec en-tête figé, filtre automatique, couleurs de lignes alternées
Disponible depuis :
- Page Rapports → Menu Export → Télécharger Excel
- Rapport sauvegardé → Aperçu du rapport → Bouton Excel
- Rapports planifiés → sélection du format → Excel
Niveau : PRO+ (le niveau FREE voit une puce PRO — Excel non disponible)
Export XML (ENTERPRISE)
Les données de suivi du temps peuvent maintenant être exportées sous forme de documents XML structurés.
Structure du document XML :
<?xml version="1.0" encoding="UTF-8"?>
<report>
<meta>...</meta>
<filters>...</filters>
<metrics>...</metrics>
<dataPoints>
<entry>...</entry>
</dataPoints>
</report>
Niveau : ENTERPRISE uniquement (FREE/PRO voient une puce ENTERPRISE)
Export de fichier JSON (ENTERPRISE)
En plus de la réponse JSON API inline existante, les rapports peuvent maintenant être téléchargés comme un fichier JSON autonome (.json) avec Content-Disposition: attachment.
Niveau : ENTERPRISE uniquement
Rétention de l'historique des rapports
Les rapports sauvegardés sont maintenant filtrés selon le niveau d'abonnement :
| Niveau | Historique visible |
|---|---|
| FREE | 30 derniers jours |
| PRO | 365 derniers jours |
| ENTERPRISE | Illimité |
Une bannière d'information sur la page Rapports informe les utilisateurs FREE et PRO de leur fenêtre d'historique, avec une invitation à mettre à niveau pour les utilisateurs FREE.
Une tâche de nettoyage nocturne (s'exécute à 02h00) supprime automatiquement les rapports plus anciens que la limite du niveau pour maintenir la base de données propre.
Regroupement par : Utilisateur (PRO+)
Une nouvelle option de regroupement "Par utilisateur" est maintenant disponible sur la page Rapports. Elle remplace l'ancien sélecteur reportType (résumé / détaillé / export), qui était redondant.
L'option de regroupement Utilisateur est désactivée avec une puce PRO pour les utilisateurs FREE.
Toutes les 5 locales (EN / HU / DE / FR / ES) incluent la nouvelle clé de traduction.
Cartes de statistiques & Aperçus rapides — Correction de visibilité
Les 4 cartes de statistiques (Heures totales, Entrées totales, Projets actifs, Moy. par jour) et la section Aperçus rapides n'apparaissaient pas lors du chargement de la page Rapports.
Cause racine : currentUnit?.id manquait dans le tableau de dépendances useEffect. Au montage, currentUnit était null, provoquant un court-circuit de la génération de rapport avant le chargement de l'espace de travail.
Corrigé dans : AdvancedReports.tsx et BasicReports.tsx
Aperçu du rapport — Mise en page redessinée
La page Aperçu du rapport correspond maintenant à la mise en page principale de la page Rapports :
- 4 cartes de statistiques — Heures totales / Entrées totales / Projets actifs / Moy. par jour
- Aperçus rapides — Top 3 projets · Jour le plus actif · Heures de pointe · Durée moy. des entrées
- Suivi de : Infos du rapport → Graphique → Tableau de données
Les statistiques et les aperçus sont calculés avec useMemo pour les performances.
Export PDF — Mise en page redessinée
La sortie PDF correspond maintenant à la mise en page du rapport frontend :
addMetrics() — réécrit :
- 4 cartes de statistiques colorées avec barre d'accent côté gauche
- Taille compacte :
boxH = 52(était 72),fontSize = 18(était 22), espacement serré
addQuickInsights() — nouvelle section :
- Top 3 projets + Jour le plus actif + Heures de pointe + Durée moy. des entrées
- Positionnement X/Y absolu par élément — élimine les bogues de débordement de texte
- Troncation des étiquettes à 17 caractères
Correction du graphique :
- Les rapports sauvegardés avec
chartType = 'table'ne produisaient auparavant aucun graphique dans le PDF - Repli maintenant sur le graphique
bar; le graphique est ignoré uniquement lorsqu'il n'y a pas de données
Enregistrer comme rapport — Type de graphique correct
Lors de l'enregistrement d'un rapport ad hoc comme rapport personnalisé, le champ chartConfig.type reflète maintenant correctement la vue actuellement active :
- Vue graphique active → enregistre comme
BAR - Vue tableau active → enregistre comme
TABLE
Précédemment, TABLE était toujours codé en dur quelle que soit la vue.
Carte de statistiques — Mise en page compacte
Les cartes de statistiques sur la page Rapports et la page Aperçu du rapport sont maintenant plus compactes :
| Propriété | Avant | Après |
|---|---|---|
| Rembourrage de la carte | défaut (16 px) | py: 1.5 |
| Boîte d'icône | 48 × 48 | 40 × 40 |
| Variante du nombre | h4 | h5 |
| Hauteur de ligne | défaut | 1.2 (nombre + étiquettes) |
Notification "Exécuter maintenant" — Déplacée en haut à droite
Le toast "Rapport exécuté et envoyé à N destinataire(s)" apparaissait auparavant en bas au centre de l'écran (incohérent avec toutes les autres notifications).
Il utilise maintenant l'utilitaire notification global et apparaît dans le coin supérieur droit, cohérent avec toutes les autres notifications dans l'application.
Sécurité & Application des niveaux
Rapports planifiés — Contrôle Backend
Les points de terminaison createReport et updateReport appliquent maintenant la vérification de niveau pour schedule.enabled au niveau de l'API :
- Les utilisateurs FREE ne peuvent pas activer la planification via l'API (préc édemment bloqué uniquement dans l'interface)
- Retourne
403 TIER_RESTRICTIONavectierRequired: 'pro'
Correction de la capacité PRO customReports
customReports était incorrectement défini à false dans la configuration du niveau PRO dans stripe.config.ts. Cela a été corrigé à true (PRO : max 5 rapports personnalisés, ENTERPRISE : illimité).
Dépendances
| Package | Modification |
|---|---|
exceljs | Ajouté (génération Excel) |
Fichiers modifiés
| Fichier | Modification |
|---|---|
cadensa-backend/src/controllers/report.controller.ts | Points de terminaison de téléchargement Excel / JSON / XML ; contrôle de niveau des rapports planifiés ; filtre de coupure de l'historique des rapports |
cadensa-backend/src/services/report/excel.service.ts | Nouveau — Génération Excel avec exceljs |
cadensa-backend/src/services/report/xml.service.ts | Nouveau — Génération XML |
cadensa-backend/src/services/report/pdf.service.ts | Réécriture de addMetrics() ; nouveau addQuickInsights() ; repli table→bar dans addChartPlaceholder() |
cadensa-backend/src/services/report/schedule.service.ts | Branche de format Excel ; cron de nettoyage de l'historique nocturne |
cadensa-backend/src/config/stripe.config.ts | Correction PRO customReports: false → true |
cadensa-frontend/src/pages/reports/components/AdvancedReports.tsx | Correction de dépendance currentUnit?.id ; bannière d'historique ; groupBy: user ; carte de statistiques compacte ; type de graphique basé sur viewMode ; notification.* pour Exécuter maintenant |
cadensa-frontend/src/pages/reports/components/BasicReports.tsx | Correction de dépendance currentUnit?.id |
cadensa-frontend/src/pages/reports/ReportPreview.tsx | Mise en page redessinée : cartes de statistiques + Aperçus rapides ; boutons PDF/Excel/XML/JSON |
cadensa-frontend/src/services/report.service.ts | downloadReportExcel, downloadReportJSON, downloadAdHocReportJSON, downloadReportXML, downloadAdHocReportXML |
cadensa-frontend/src/locales/{en,hu,de,fr,es}/reports.json | Clés xml, xmlFailed, jsonRequiresEnterprise, xmlRequiresEnterprise, groupBy_user |