whisper-money/app/Http/Controllers/Api
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
..
Concerns fix(analysis): respect category types like the cashflow screen (#612) 2026-06-29 21:04:18 +02:00
AccountController.php refactor(api): standardize serialization via model $hidden (#492) 2026-06-05 13:57:34 +02:00
CashflowAnalyticsController.php Consolidate savings-rate math into CashflowSummaryService 2026-07-04 20:48:18 +02:00
CategoryMonthlyBreakdownController.php fix(analysis): respect category types like the cashflow screen (#612) 2026-06-29 21:04:18 +02:00
DashboardAnalyticsController.php feat: expand parent categories inline in breakdowns (#486) 2026-06-04 11:19:21 +02:00
ImportDataController.php refactor(api): standardize serialization via model $hidden (#492) 2026-06-05 13:57:34 +02:00
SavedFilterController.php feat(analysis): project-aware transaction analysis (#513) 2026-06-09 15:32:07 +02:00
TransactionAnalysisController.php fix(analysis): respect category types like the cashflow screen (#612) 2026-06-29 21:04:18 +02:00
TransactionController.php fix: address remaining security audit findings (round 2) (#628) 2026-07-03 15:04:03 +00:00