whisper-money/app/Http
Víctor Falcón 722c7d1bef Consolidate savings-rate math into CashflowSummaryService
The net and savings-rate derivation was byte-identical in
DashboardController::calculateCashflowSummary and
CashflowAnalyticsController::cashflowSummaryFromTransactions, so the two
screens could silently diverge if one formula were ever edited.

Extract a single CashflowSummaryService::summarize(income, expense) that
owns the net and savings-rate math, and have both call sites consume it.
Behaviour-preserving: each controller still computes income/expense its
own way (single-currency SQL on the dashboard, multi-currency in-memory
on the analytics endpoint) and only the shared derivation moves.
2026-07-04 20:48:18 +02:00
..
Controllers Consolidate savings-rate math into CashflowSummaryService 2026-07-04 20:48:18 +02:00
Middleware refactor(ai): remove AiConsentSettings feature flag (#619) 2026-07-01 09:47:55 +02:00
Requests feat(transactions): serve import dedup and account ledger from the backend (#631) 2026-07-03 16:49:59 +02:00
Responses fix: route new PWA guests to signup (#313) 2026-04-21 10:53:05 +01:00