feat: implement asset snapshot and manual asset read model
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
# BAT-008 Design
|
||||
|
||||
## Schema and persistence design
|
||||
|
||||
- Add `manual_assets` as a first-class table for non-transaction-derived assets/liabilities.
|
||||
- Add `asset_snapshots` as an append-only history table keyed by basis date plus evaluated item identity.
|
||||
- Migrations remain additive/idempotent; existing ledger/account flows must continue to operate when both tables are empty.
|
||||
|
||||
## Authority-source and valuation design
|
||||
|
||||
- Account-backed assets use `accounts.last_balance` as the live authority source.
|
||||
- Non-transaction assets/liabilities use `manual_assets` as the live authority source.
|
||||
- `asset_snapshots` is a historical record layer, not a competing primary input source.
|
||||
- Net worth formula remains: asset buckets (`cash`, `investment`, `deposit`, `real_estate`, `other`) minus `loan`; missing valuations are excluded, not inferred.
|
||||
|
||||
## Read model design
|
||||
|
||||
- Service layer should expose:
|
||||
- manual assets list/report helpers
|
||||
- basis-date asset snapshot read helpers
|
||||
- net-worth timeseries helpers
|
||||
- shared valuation/fallback helpers consumed by both MCP and dashboard
|
||||
- Snapshot read responses must expose basis date, bucket totals, liabilities, net worth, and inclusion/exclusion explanation fields.
|
||||
- Manual assets read responses must expose item name, value, basis date, `liquidity_bucket`, and memo/source metadata.
|
||||
|
||||
## Dashboard alignment design
|
||||
|
||||
- `dashboard/app.py` should consume the same valuation helpers as the MCP read tools.
|
||||
- If no manual assets/snapshots exist, dashboard behavior must safely fall back to REQ-005 account-based display.
|
||||
- Excluded/unvalued items should be explainable instead of silently counted.
|
||||
|
||||
## Verification design
|
||||
|
||||
- Add targeted regression tests for:
|
||||
- additive migration creation
|
||||
- manual asset persistence and retrieval
|
||||
- snapshot accumulation/read behavior
|
||||
- net-worth formula / exclusion policy
|
||||
- dashboard/MCP shared fallback behavior
|
||||
- Prefer synthetic SQLite fixtures and temp DBs only.
|
||||
Reference in New Issue
Block a user