|
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Adds a thin read-only client for the actualbudget HTTP API
(`fire_planner/actualbudget.py`) and a `GET /spending/annual` endpoint
that returns trailing-N-month spending broken out by category group.
Default exclusions ("Investments and Savings", "Budget Reset") strip
out wealth transfers so the headline number reflects actual
consumption — for Viktor's data, ~£41k/yr instead of the raw £210k
total. Caller can pass `?exclude=...` to override.
Frontend uses the headline `total_gbp` to autofill the Annual spending
input (same pattern as nw_seed from networth), with a small
provenance line below the input showing the window + which groups
were excluded.
Auth: 3 new env vars (ACTUALBUDGET_API_URL/KEY/SYNC_ID) sourced from
Vault `secret/fire-planner` via the existing ExternalSecret —
infra/stacks/fire-planner applied separately. Backend silently keeps
the hardcoded default if the upstream is unreachable.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| __init__.py | ||
| conftest.py | ||
| test_actualbudget.py | ||
| test_api_life_events_goals.py | ||
| test_api_networth.py | ||
| test_api_scenarios.py | ||
| test_api_simulate.py | ||
| test_api_spending.py | ||
| test_cli.py | ||
| test_db_schema.py | ||
| test_e2e.py | ||
| test_ingest_wealthfolio_pg.py | ||
| test_life_events.py | ||
| test_reporters_pg.py | ||
| test_returns.py | ||
| test_returns_wealthfolio.py | ||
| test_scenarios.py | ||
| test_simulator.py | ||
| test_simulator_events.py | ||
| test_spending_plan.py | ||
| test_strategies.py | ||
| test_tax_base.py | ||
| test_tax_other_regimes.py | ||
| test_tax_uk.py | ||