refactor: split useReports into per-domain hooks + URL period (#70) #89
No reviewers
Labels
No labels
source:analyste
source:defenseur
source:human
source:medic
status:approved
status:blocked
status:in-progress
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#89
Loading…
Reference in a new issue
No description provided.
Delete branch "issue-70-hooks-per-domain"
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?
Fixes #70
Refonte du hook monolithique
useReportsen hooks par domaine alimentés par une période partagée via query string.Changements
useReportsPeriod(nouveau, partagé)?from=YYYY-MM-DD&to=YYYY-MM-DD&period=...viauseSearchParamsresolveReportsPeriod()exporté pour tests unitairesHooks par domaine (stubs)
useHighlights— reducer vide prêt pourreportService.getHighlights(#71)useTrends— déjà câblé surgetMonthlyTrends+getCategoryOverTime, gèresubViewglobal/byCategory (#72 enrichira)useCompare— gère le mode MoM/YoY/budget (#73)useCategoryZoom— gèrezoomedCategoryId+rollupChildren(#74)useReportsPeriodLegacy
useReports@deprecated(supprimé en #76)useReportsPeriod: plus d\état local pourperiod/customDateFrom/customDateToReportsPageexistant ne régresse pasTests
npm run build✅cargo check✅npm test✅ 37 tests (7 nouveaux pourresolveReportsPeriod: défauts, bookmarks, inputs invalides, presets,all)Review — APPROVE
Verdict: APPROVE
Résumé : Refonte ciblée et non régressive. Le hook legacy reste fonctionnel grâce à un shim de shape, et les nouveaux hooks sont tous alimentés par
useReportsPeriodpartagé.Sécurité ✅
^\d{4}-\d{2}-\d{2}$, whitelist des périodes) — pas d injection dans les paramsCorrectness ✅
resolveReportsPeriodpure et testable (7 tests) — évite d avoir à mocker react-routeruseReportslegacy shim :state.period,state.customDateFrom,state.customDateToréinjectés depuisuseReportsPeriod→ ReportsPage existant marche sans modiffetchIdRefpréservée dans tous les nouveaux hooksQualité ✅
npm run build✅npm test✅ 37/37cargo check✅@deprecatedsuruseReportsdocumente la sortie planifiée en #76Suggestions non-bloquantes
useHighlights/useCompare/useCategoryZoomseront complétés dans #71/#73/#74 (intentionnel selon la spec)setPeriod(custom)sans from/to existants peut créer une période vide — #71 qui expose un PeriodSelector sur le hub devra s en assurer (pas bloquant pour #70)Ready to merge.