Simpl-Resultat/src/hooks
le king fu 4c58b8bab8
All checks were successful
PR Check / rust (push) Successful in 23m21s
PR Check / frontend (push) Successful in 2m24s
PR Check / rust (pull_request) Successful in 23m12s
PR Check / frontend (pull_request) Successful in 2m20s
feat(reports/cartes): new KPI dashboard sub-report with sparklines, top movers, budget adherence and seasonality (#97)
New /reports/cartes page surfaces a dashboard-style snapshot of the
reference month:

- 4 KPI cards (income / expenses / net / savings rate) showing MoM and
  YoY deltas simultaneously, each with a 13-month sparkline highlighting
  the reference month
- 12-month income vs expenses overlay chart (bars + net balance line)
- Top 5 category increases + top 5 decreases MoM, clickable through to
  the category zoom report
- Budget adherence card: on-target count + 3 worst overruns with
  progress bars
- Seasonality card: reference month vs same calendar month averaged
  over the two previous years, with deviation indicator

All data is fetched in a single getCartesSnapshot() service call that
runs four queries concurrently (25-month flow, MoM category deltas,
budget-vs-actual, seasonality). Missing months are filled with zeroes
in the sparklines but preserved as null in the MoM/YoY deltas so the UI
can distinguish "no data" from "zero spend".

- Exported pure helpers: shiftMonth, defaultCartesReferencePeriod
- 13 vitest cases covering zero data, MoM/YoY computation, January
  wrap-around, missing-month handling, division by zero for the
  savings rate, seasonality with and without history, top mover sign
  splitting and 5-cap

Note: src/components/reports/CompareReferenceMonthPicker.tsx is a
temporary duplicate — the canonical copy lives on the issue-96 branch
(refactor: compare report). Once both branches merge the content is
identical and git will dedupe. Keeping the local copy here means the
Cartes branch builds cleanly on main without depending on #96.

Closes #97

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 19:44:58 -04:00
..
useAdjustments.ts feat: add Budget and Adjustments pages with full functionality 2026-02-12 00:58:43 +00:00
useAuth.ts feat: Maximus Account OAuth2 PKCE + machine activation + subscription check (#51, #53) 2026-04-10 14:18:51 -04:00
useBudget.ts refactor: inline buildPrevYearTotalMap and remove disproportionate tests (#39) 2026-03-11 13:02:47 -04:00
useCartes.test.ts feat(reports/cartes): new KPI dashboard sub-report with sparklines, top movers, budget adherence and seasonality (#97) 2026-04-15 19:44:58 -04:00
useCartes.ts feat(reports/cartes): new KPI dashboard sub-report with sparklines, top movers, budget adherence and seasonality (#97) 2026-04-15 19:44:58 -04:00
useCategories.ts feat: add 3rd level of category hierarchy 2026-02-25 19:54:05 -05:00
useCategoryZoom.ts feat: category zoom + secure AddKeywordDialog with context menu (#74) 2026-04-14 15:09:17 -04:00
useCompare.test.ts refactor(reports/compare): unify MoM/YoY under one Actual-vs-actual mode with reference month picker (#96) 2026-04-15 14:24:11 -04:00
useCompare.ts refactor(reports/compare): unify MoM/YoY under one Actual-vs-actual mode with reference month picker (#96) 2026-04-15 14:24:11 -04:00
useDashboard.ts fix: address reviewer feedback (#31) 2026-03-10 18:53:31 -04:00
useDataExport.ts feat: add data export/import with optional AES-256-GCM encryption (#3) 2026-02-15 11:40:28 +00:00
useDataImport.ts feat: make settings data imports visible in Import History 2026-02-15 13:38:51 +00:00
useHighlights.ts feat: reports hub with highlights panel and detailed highlights page (#71) 2026-04-14 14:47:55 -04:00
useImportHistory.ts feat: 12-month budget grid, import UX improvements, confirmation dialogs (v0.2.4) 2026-02-14 12:59:11 +00:00
useImportWizard.ts feat: show transaction splits on Adjustments page + fix CSV auto-detect 2026-02-17 01:41:08 +00:00
useLicense.ts feat: license card in settings (#47) 2026-04-09 15:47:04 -04:00
useReportsPeriod.test.ts refactor: split useReports into per-domain hooks + URL-bookmarked period (#70) 2026-04-14 14:37:33 -04:00
useReportsPeriod.ts refactor: split useReports into per-domain hooks + URL-bookmarked period (#70) 2026-04-14 14:37:33 -04:00
useTheme.ts feat: add dark mode with famille-website-inspired warm gray palette 2026-02-13 12:28:11 +00:00
useTransactions.ts feat: add transaction split adjustments across multiple categories 2026-02-16 23:51:36 +00:00
useTrends.ts refactor: split useReports into per-domain hooks + URL-bookmarked period (#70) 2026-04-14 14:37:33 -04:00
useUpdater.ts feat: gate auto-updates behind license entitlement (#48) 2026-04-09 15:52:59 -04:00