whisper-money/app/Http/Controllers/Api
Víctor Falcón 2208e38071 Batch net-worth balance lookups to kill the per-account N+1
DashboardAnalyticsController::calculateNetWorthAt ran one balance query per
account, and was called once per compared period, so the net-worth endpoint
issued ~2*N balance queries. It also re-fetched the account list on every call.

Fetch the accounts once and build a single BalanceLookup::forAccounts() over
the compared date range (the same batch loader already used by the balance
evolution endpoints), then read each balance from memory. Carry-forward
semantics match the previous 'latest balance on or before the date' query, so
results are unchanged; a query-count regression test locks the balance queries
to a fixed number regardless of account count.
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 Move income/expense-side classification onto the Transaction model 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 Batch net-worth balance lookups to kill the per-account N+1 2026-07-04 20:48:18 +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 Move income/expense-side classification onto the Transaction model 2026-07-04 20:48:18 +02:00
TransactionController.php fix: address remaining security audit findings (round 2) (#628) 2026-07-03 15:04:03 +00:00