refactor: rapports comparables — dropdown mois, toggle MoM/YoY, barres groupees #96

Closed
opened 2026-04-15 14:36:57 +00:00 by maximus · 0 comments
Owner

Contexte

Le rapport Compare (/reports/compare, livré en #73 / commit ff350d7, ADR 0007) expose actuellement trois onglets : MoM, YoY, Réel vs budget. Les onglets MoM/YoY ne sont pas probants : même graphique de répartition par catégorie, information peu actionnable.

Cette issue couvre uniquement la refonte de la page Compare. La nouvelle page "Cartes" (vue dashboard riche, KPI + sparklines + top movers) est suivie dans une issue séparée et peut être développée en parallèle (seuls reportService.ts et les fichiers i18n se chevauchent).

Travail à faire

  • Réduire les onglets Compare à 2 modes : Réel vs réel + Réel vs budget (budget inchangé)
  • Onglet Réel vs réel :
    • Dropdown mois en en-tête (option principale, intégration visuelle cohérente avec BudgetVsActualTable)
    • Conserver le PeriodSelector partagé (useReportsPeriod) en complément
    • Défaut = mois précédent (relatif à la date courante)
    • Toggle MoM ↔ YoY (exclusif, un seul delta affiché à la fois)
    • Graphique : barres groupées côte-à-côte (Option A) — pour chaque catégorie, 2 barres : mois de référence vs période comparée
    • Table delta signée : catégorie, période de référence, période comparée, Δ$, Δ%

Fichiers concernés

  • src/pages/ReportsComparePage.tsx — retirer la logique 3-tabs, câbler le dropdown mois + toggle MoM/YoY
  • src/components/reports/CompareModeTabs.tsx — passer à 2 modes
  • src/components/reports/ComparePeriodChart.tsx — réécriture pour barres groupées (BarChart groupé, Recharts)
  • src/components/reports/ComparePeriodTable.tsx — adapter en-têtes pour refléter le toggle MoM/YoY
  • src/hooks/useCompare.ts — refactor du reducer : toggle MoM/YoY + mois de référence explicite
  • src/services/reportService.ts (lignes 391-450) — getCompareMonthOverMonth / getCompareYearOverYear conservés, potentiellement fusionnés derrière getCompareByReference(referenceMonth, mode)
  • src/i18n/locales/{fr,en}.json — clés reports.compare.toggleMoM, reports.compare.toggleYoY, retrait des anciennes modeMoM / modeYoY
  • CHANGELOG.md + CHANGELOG.fr.md — entrée ## [Unreleased]
  • docs/adr/0007-reports-hub-refactor.md — note de suivi si structure hub modifiée

Critères d'acceptation

  • Page Compare expose 2 onglets (Réel vs réel + Réel vs budget)
  • Dropdown mois en header, défaut = mois précédent
  • Toggle MoM ↔ YoY fonctionnel, la table + le graphique se mettent à jour sans rechargement
  • Graphique = barres groupées côte-à-côte (2 barres par catégorie)
  • PeriodSelector partagé reste accessible
  • Tests vitest couvrent : toggle MoM/YoY, wrap-around janvier, delta avec previousAmount = 0
  • i18n FR + EN complète
  • CHANGELOG mis à jour

Complexité estimée

Medium — backend SQL existe déjà, le travail est principalement UI + hook + réécriture du chart.

Parallélisation

Compatible avec la nouvelle page Cartes : seuls reportService.ts et i18n/locales/*.json se chevauchent, conflits mineurs.

## Contexte Le rapport `Compare` (`/reports/compare`, livré en #73 / commit `ff350d7`, ADR 0007) expose actuellement **trois onglets** : MoM, YoY, Réel vs budget. Les onglets MoM/YoY ne sont pas probants : même graphique de répartition par catégorie, information peu actionnable. Cette issue couvre **uniquement la refonte de la page Compare**. La nouvelle page "Cartes" (vue dashboard riche, KPI + sparklines + top movers) est suivie dans une issue séparée et peut être développée en parallèle (seuls `reportService.ts` et les fichiers i18n se chevauchent). ## Travail à faire - [ ] Réduire les onglets Compare à **2 modes** : `Réel vs réel` + `Réel vs budget` (budget inchangé) - [ ] Onglet `Réel vs réel` : - [ ] **Dropdown mois** en en-tête (option principale, intégration visuelle cohérente avec `BudgetVsActualTable`) - [ ] Conserver le `PeriodSelector` partagé (`useReportsPeriod`) en complément - [ ] Défaut = **mois précédent** (relatif à la date courante) - [ ] **Toggle MoM ↔ YoY** (exclusif, un seul delta affiché à la fois) - [ ] **Graphique : barres groupées côte-à-côte** (Option A) — pour chaque catégorie, 2 barres : mois de référence vs période comparée - [ ] Table delta signée : catégorie, période de référence, période comparée, Δ$, Δ% ## Fichiers concernés - `src/pages/ReportsComparePage.tsx` — retirer la logique 3-tabs, câbler le dropdown mois + toggle MoM/YoY - `src/components/reports/CompareModeTabs.tsx` — passer à 2 modes - `src/components/reports/ComparePeriodChart.tsx` — réécriture pour barres groupées (`BarChart` groupé, Recharts) - `src/components/reports/ComparePeriodTable.tsx` — adapter en-têtes pour refléter le toggle MoM/YoY - `src/hooks/useCompare.ts` — refactor du reducer : toggle MoM/YoY + mois de référence explicite - `src/services/reportService.ts` (lignes 391-450) — `getCompareMonthOverMonth` / `getCompareYearOverYear` conservés, potentiellement fusionnés derrière `getCompareByReference(referenceMonth, mode)` - `src/i18n/locales/{fr,en}.json` — clés `reports.compare.toggleMoM`, `reports.compare.toggleYoY`, retrait des anciennes `modeMoM` / `modeYoY` - `CHANGELOG.md` + `CHANGELOG.fr.md` — entrée `## [Unreleased]` - `docs/adr/0007-reports-hub-refactor.md` — note de suivi si structure hub modifiée ## Critères d'acceptation - [ ] Page Compare expose 2 onglets (`Réel vs réel` + `Réel vs budget`) - [ ] Dropdown mois en header, défaut = mois précédent - [ ] Toggle MoM ↔ YoY fonctionnel, la table + le graphique se mettent à jour sans rechargement - [ ] Graphique = barres groupées côte-à-côte (2 barres par catégorie) - [ ] `PeriodSelector` partagé reste accessible - [ ] Tests vitest couvrent : toggle MoM/YoY, wrap-around janvier, delta avec `previousAmount = 0` - [ ] i18n FR + EN complète - [ ] CHANGELOG mis à jour ## Complexité estimée **Medium** — backend SQL existe déjà, le travail est principalement UI + hook + réécriture du chart. ## Parallélisation Compatible avec la nouvelle page Cartes : seuls `reportService.ts` et `i18n/locales/*.json` se chevauchent, conflits mineurs.
maximus changed title from les rapports comparables ne montrent pas la bonne chose to refactor: rapports comparables — dropdown mois, toggle MoM/YoY, barres groupées 2026-04-15 17:57:02 +00:00
maximus changed title from refactor: rapports comparables — dropdown mois, toggle MoM/YoY, barres groupées to refactor: rapports comparables — dropdown mois, toggle MoM/YoY, barres groupees 2026-04-15 17:57:10 +00:00
maximus added the
source:human
status:ready
type:refactor
labels 2026-04-15 17:57:18 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: maximus/Simpl-Resultat#96
No description provided.