Summary
Extend the Simulation/Report architecture to support household-level impact analysis, allowing users to run household simulations and compare baseline vs reform scenarios.
Dependencies
Scope
Model Changes
Simulation model:
- Add
SimulationType enum (HOUSEHOLD, ECONOMY)
- Add
simulation_type field with default 'economy'
- Make
dataset_id nullable (was required)
- Add
household_id FK to households
- Add
household_result JSONB column for storing calculation output
Report model:
- Add
report_type field (household_single, household_comparison, economy_single, economy_comparison)
New Endpoints
POST /analysis/household-impact - Run household impact analysis
- If
policy_id is None: single run under current law
- If
policy_id is set: comparison (baseline vs reform)
GET /analysis/household-impact/{report_id} - Get household impact results
Impact Computation
Support all entity types for both countries:
- UK: person, benunit, household
- US: person, tax_unit, spm_unit, family, marital_unit, household
Database
- Migration:
20260203000002_simulation_household_support.sql
Key Features
- Deterministic UUIDs for deduplication/caching
- Reuses existing
_calculate_household_uk() and _calculate_household_us() functions
- Stores results in
household_result JSONB on Simulation (not Dataset)
Acceptance Criteria
Summary
Extend the Simulation/Report architecture to support household-level impact analysis, allowing users to run household simulations and compare baseline vs reform scenarios.
Dependencies
Scope
Model Changes
Simulation model:
SimulationTypeenum (HOUSEHOLD, ECONOMY)simulation_typefield with default 'economy'dataset_idnullable (was required)household_idFK to householdshousehold_resultJSONB column for storing calculation outputReport model:
report_typefield (household_single, household_comparison, economy_single, economy_comparison)New Endpoints
POST /analysis/household-impact- Run household impact analysispolicy_idis None: single run under current lawpolicy_idis set: comparison (baseline vs reform)GET /analysis/household-impact/{report_id}- Get household impact resultsImpact Computation
Support all entity types for both countries:
Database
20260203000002_simulation_household_support.sqlKey Features
_calculate_household_uk()and_calculate_household_us()functionshousehold_resultJSONB on Simulation (not Dataset)Acceptance Criteria