Aller au contenu principal

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 :

NiveauHistorique visible
FREE30 derniers jours
PRO365 derniers jours
ENTERPRISEIllimité

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éAvantAprès
Rembourrage de la cartedéfaut (16 px)py: 1.5
Boîte d'icône48 × 4840 × 40
Variante du nombreh4h5
Hauteur de lignedéfaut1.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_RESTRICTION avec tierRequired: '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

PackageModification
exceljsAjouté (génération Excel)

Fichiers modifiés

FichierModification
cadensa-backend/src/controllers/report.controller.tsPoints 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.tsNouveau — Génération Excel avec exceljs
cadensa-backend/src/services/report/xml.service.tsNouveau — Génération XML
cadensa-backend/src/services/report/pdf.service.tsRéécriture de addMetrics() ; nouveau addQuickInsights() ; repli table→bar dans addChartPlaceholder()
cadensa-backend/src/services/report/schedule.service.tsBranche de format Excel ; cron de nettoyage de l'historique nocturne
cadensa-backend/src/config/stripe.config.tsCorrection PRO customReports: false → true
cadensa-frontend/src/pages/reports/components/AdvancedReports.tsxCorrection 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.tsxCorrection de dépendance currentUnit?.id
cadensa-frontend/src/pages/reports/ReportPreview.tsxMise en page redessinée : cartes de statistiques + Aperçus rapides ; boutons PDF/Excel/XML/JSON
cadensa-frontend/src/services/report.service.tsdownloadReportExcel, downloadReportJSON, downloadAdHocReportJSON, downloadReportXML, downloadAdHocReportXML
cadensa-frontend/src/locales/{en,hu,de,fr,es}/reports.jsonClés xml, xmlFailed, jsonRequiresEnterprise, xmlRequiresEnterprise, groupBy_user