Rapports : revoir les filtres de période (« Cette année », plage par défaut, puce d'aide « sur 12 mois » de Tendances) #479
Labels
No labels
autopilot:pending-human
source:analyste
source:defenseur
source:human
source:medic
status:approved
status:blocked
status:in-progress
status:needs-clarification
status:needs-fix
status:ready
status:review
status:triage
type:bug
type:feature
type:infra
type:refactor
type:schema
type:security
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: maximus/Simpl-Resultat#479
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Contexte
La revue indépendante de la PR #475 (#446, commentaire 25487) relève que la puce d'aide
reports.help.tips[2], validée mot pour mot par Max le 2026-10-16, dit « Tendances montre vos revenus et dépenses mois par mois sur 12 mois » (EN « Trends shows your income and expenses month by month over 12 months »), alors que la page Tendances suit le sélecteur de période, et que la puce juste avant invite à changer cette période.Décision de Max (2026-10-19) : ne pas retoucher la puce seule ; réviser les filtres de période, cette question comprise, ainsi que « Cette année », qui affiche 12 mois plutôt que l'année à ce jour.
Ce que dit le code (
main6e8e157, lu le 2026-10-19)useReportsPeriod(pages Rapports) : sansfrom/toniperioddans l'URL, la plage par défaut est l'année civile complète, du 1er janvier au 31 décembre (currentYearRange), avecperiod: "custom". Les mois à venir de l'année en cours en font partie.PeriodSelectorpropose « Ce mois », « 3 mois », « 6 mois », « Cette année », « 12 mois », « Tout » et « Personnalisé ». « Cette année » (year) passe parcomputeDateRange("year"), du 1er janvier à aujourd'hui.useDashboard) passe aussi parcomputeDateRange./analyzedira sur quelle page et par quel chemin (plage par défaut de l'année civile, ou graphique qui garde douze colonnes).À trancher
reports.help.tips[2], en FR et en EN (par exemple « sur la période choisie »).Critères d'acceptation
resolveReportsPeriodet decomputeDateRangeà jour.Liens : #446, PR #475 (commentaire 25487), #253 (période par défaut des rapports comparables).
Analyse (
/analyze, 2026-10-20,main45d8493)Ce que la lecture ajoute
getMonthlyTrendsetgetCategoryOverTime(src/services/reportService.ts) font unGROUP BYmois sans remplissage : Tendances n'affiche jamais douze colonnes par construction, ni des mois à venir vides. L'observation « Cette année affiche 12 mois » n'a pas été reproduite par le code. Sur les Rapports, la plage par défaut est l'année civile entière (currentYearRange, 1er janvier au 31 décembre) sous le bouton « Personnalisé » allumé, et « Cette année » (computeDateRange("year")) va du 1er janvier à aujourd'hui, comme sur le tableau de bord (défautyear). Les séries fixes de douze mois sont ailleurs et indépendantes du sélecteur : Faits saillants (getHighlights, douze mois finissant au mois de référence), Cartes (reports.cartes.flowChartTitle, « 12 derniers mois ») et la carte du hub (reports.hub.trendsDescription, « Où vous allez sur 12 mois »).period=all,computeDateRangerend une plage vide etresolveReportsPeriod(src/hooks/useReportsPeriod.ts) la remplace par l'année civile ;useTrends,useCategoryZoometReportsPagepassentfrom/totels quels au service. « Tout » montre donc l'année en cours. Le test « treatsallas a preset with empty range (service handles the clauses) » deuseReportsPeriod.test.tsfige ce comportement en croyant le service maître des clauses. SeuluseBalanceOverviewtraiteallà part.PeriodSelector(src/components/dashboard/PeriodSelector.tsx).Décisions de Max (2026-10-20, réponses à
/analyze)year).Travail à faire
resolveReportsPeriod: sansfrom/toniperiodvalides, rendrecomputeDateRange("year")avecperiod: "year"; pourall, rendre une plage vide (from/toabsents) avecperiod: "all".currentYearRangedisparaît ou ne sert plus qu'aux tests. Le typeUseReportsPeriodResultpassefrom/toen optionnels ; vérifier chaque consommateur (useTrends,useCategoryZoom,ReportsPage,ReportsCategoryPage,ReportsComparePage,FilterPanel,PeriodSelector) : les services acceptent déjà des bornes absentes (clauses conditionnelles),PeriodSelectorlitcustomDateFrom ?? "".setPeriod("year")n'a pas besoin d'écrirefrom/to. Un signet existant avecfrom/togarde son sens.useReportsPeriod.test.ts: « defaults to current civil year » devient « defaults to the year to date, period year » (avecfixedToday) ; « treatsall… » attend une plage vide ; cas d'un signetfrom/toinchangé.dateRange.test.ts:yeardéjà à ce jour, vérifier qu'un test le fige.reports.help.tips[2](proposition : « Tendances montre vos revenus et dépenses mois par mois sur la période choisie » / « Trends shows your income and expenses month by month over the selected period ») etreports.hub.trendsDescription(« Où vous allez, mois par mois » / « Where you're heading, month by month »). Les deux puces avaient été validées mot pour mot par Max le 2026-10-16 : la PR soumet les nouvelles formulations à sa relecture.reports.cartes.flowChartTitlereste juste (série fixe).docs/guide-utilisateur.mdet les clésdocs.*des locales, si elles décrivent la plage par défaut des Rapports ou « Tout » (grep -n "année civile\|calendar year\|Personnalisé\|Custom").ytd).Fichiers concernés
src/hooks/useReportsPeriod.ts,src/hooks/useReportsPeriod.test.ts— défaut etall.src/utils/dateRange.ts,src/utils/dateRange.test.ts— inchangé ou test épinglé.src/hooks/useTrends.ts,src/hooks/useCategoryZoom.ts,src/pages/ReportsPage.tsx,src/pages/ReportsTrendsPage.tsx,src/pages/ReportsCategoryPage.tsx,src/pages/ReportsComparePage.tsx,src/components/reports/FilterPanel.tsx— bornes optionnelles.src/i18n/locales/fr.json,src/i18n/locales/en.json— deux clés.docs/guide-utilisateur.md,CHANGELOG.md,CHANGELOG.fr.md.Surface de test
useReportsPeriod.test.ts,dateRange.test.ts,FilterPanel.test.tsx,overTimeResults.test.ts.PeriodSelectoravecperiod: "year"par défaut (bouton allumé,renderToStaticMarkup) ; un test deuseTrendsou deuseCategoryZoomsur le harnaishookHarnessqui vérifie que « Tout » appelle le service sans bornes.Critères d'acceptation (précisés)
resolveReportsPeriodà jour ; aucun test ne fige plus l'année civile comme défaut.Complexité
Moyenne. Niveau de revue : normal. Prochaine étape :
/fix-issue 479.