fix(reports/cartes): remove broken period selector + add savings-rate tooltip #107

Merged
maximus merged 1 commit from issue-101-cartes-period-savings-tooltip into main 2026-04-19 01:04:39 +00:00
Owner

Fixes #101

  • Removes the non-functional PeriodSelector from /reports/cartes (Option A — reference-month picker is the only control)
  • Simplifies useCartes to drop its useReportsPeriod dependency
  • Adds a (?) tooltip to the savings-rate KpiCard explaining the formula
  • Shows "—" instead of "0 %" when reference-month income is zero (propagated through CartesKpi.current: number | null)
  • i18n FR/EN + CHANGELOG entries in both locales
Fixes #101 - Removes the non-functional PeriodSelector from /reports/cartes (Option A — reference-month picker is the only control) - Simplifies `useCartes` to drop its `useReportsPeriod` dependency - Adds a (?) tooltip to the savings-rate KpiCard explaining the formula - Shows "—" instead of "0 %" when reference-month income is zero (propagated through `CartesKpi.current: number | null`) - i18n FR/EN + CHANGELOG entries in both locales
maximus added 1 commit 2026-04-19 00:50:40 +00:00
fix(reports/cartes): remove broken period selector + add savings-rate tooltip (#101)
All checks were successful
PR Check / rust (push) Successful in 21m51s
PR Check / frontend (push) Successful in 2m29s
PR Check / rust (pull_request) Successful in 21m3s
PR Check / frontend (pull_request) Successful in 2m11s
b258e2b80a
- Remove the non-functional PeriodSelector from /reports/cartes — the Cartes
  report is by design a "month X vs X-1 vs X-12" snapshot, so the
  reference-month picker is the only control needed.
- Simplify useCartes to drop its useReportsPeriod dependency; the hook now
  only exposes the reference year/month and its setter.
- Add a (?) help bubble (lucide HelpCircle) next to the savings-rate KPI
  title, wired up via a new `tooltip?: string` prop on KpiCard.
- Propagate `number | null` through CartesKpi.current and buildKpi so
  savings rate is now null (rendered as "—") when reference-month income
  is 0 instead of a misleading "0 %". Use refExpenses directly for
  seasonality.referenceAmount since it is always numeric.
- Update the cartes snapshot tests to expect null for the zero-income case.
- Add FR/EN strings reports.cartes.savingsRateTooltip + CHANGELOG entries
  in both locales.
Author
Owner

Revue — APPROVE

Verdict

Implementation propre. Les deux concerns (bug period buttons + tooltip taux d'épargne) sont adressées avec une approche cohérente.

Points validés

  • Option A correctement appliquée : PeriodSelector retiré et commentaire explicatif en tête de ReportsCartesPage.tsx.
  • useCartes simplifié : useReportsPeriod et les champs période ne sont plus exposés (vérifié que ReportsCartesPage est le seul consommateur).
  • Élargissement type-safe de CartesKpi.current en number | null propagé proprement dans buildKpi, extractDelta et les tests.
  • Tooltip via HelpCircle + attribut title natif (cohérent avec les patterns existants) + aria-label pour a11y.
  • i18n FR + EN ajoutés ; CHANGELOG.md et CHANGELOG.fr.md mis à jour sous [Unreleased] avec catégories correctes.
  • seasonality.referenceAmount correctement basculé sur refExpenses (toujours concret) avec commentaire explicatif.
  • Tests vitest mis à jour pour null au lieu de 0.

Vérifications locales

  • npm test -- --run : 100/100 tests verts
  • npm run build : vert (6.48s)

Suggestions non-bloquantes

  • Le tooltip via title n'est pas touch-friendly — un Popover accessible serait un follow-up.

Rien ne bloque le merge.

## Revue — APPROVE ✅ ### Verdict Implementation propre. Les deux concerns (bug period buttons + tooltip taux d'épargne) sont adressées avec une approche cohérente. ### Points validés - Option A correctement appliquée : `PeriodSelector` retiré et commentaire explicatif en tête de `ReportsCartesPage.tsx`. - `useCartes` simplifié : `useReportsPeriod` et les champs période ne sont plus exposés (vérifié que `ReportsCartesPage` est le seul consommateur). - Élargissement type-safe de `CartesKpi.current` en `number | null` propagé proprement dans `buildKpi`, `extractDelta` et les tests. - Tooltip via `HelpCircle` + attribut `title` natif (cohérent avec les patterns existants) + `aria-label` pour a11y. - i18n FR + EN ajoutés ; CHANGELOG.md et CHANGELOG.fr.md mis à jour sous `[Unreleased]` avec catégories correctes. - `seasonality.referenceAmount` correctement basculé sur `refExpenses` (toujours concret) avec commentaire explicatif. - Tests vitest mis à jour pour `null` au lieu de `0`. ### Vérifications locales - `npm test -- --run` : 100/100 tests verts - `npm run build` : vert (6.48s) ### Suggestions non-bloquantes - Le tooltip via `title` n'est pas touch-friendly — un `Popover` accessible serait un follow-up. Rien ne bloque le merge.
maximus merged commit 49a4ef2171 into main 2026-04-19 01:04:39 +00:00
maximus deleted branch issue-101-cartes-period-savings-tooltip 2026-04-19 01:04:40 +00:00
Sign in to join this conversation.
No reviewers
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#107
No description provided.