mirror of
https://github.com/we-promise/sure.git
synced 2026-06-01 08:49:01 +00:00
Data plane for Retirement v2 (no FIRE math yet — that is PR3). Five migrations + four AR models, wired to Goal::Retirement. Models: - PensionSource — state/workplace/other source with country, pension system, tax treatment, payout shape (string-backed + inclusion validations rather than PG enums, so v2 can add countries without ALTER TYPE). monetize :amount; end_age required for fixed-term. - Goal::RetirementStatement — append-only audit journal. default_scope excludes soft-deleted rows; soft_replace! does soft-delete + insert; points_delta drives the "—"/signed Δ column; monetize against projected_currency. - Goal::RetirementAdjustment — signed today's-money deltas to the spending target, ordered, applicable_at?(age). - RetirementBucketEntry — account selection join, unique per plan, same-family guard. Goal::Retirement gains the four associations + bucket_accounts and an ADJUSTMENTS_LIMIT (10) cap. retirement_params jsonb added to goals for PR3 plan settings. Namespaced fixture classes mapped via set_fixture_class so the goal_retirement association resolves. Minimal fixtures + model tests (112 runs green, incl. goal/family/controller regression sweep). No new gems.
24 lines
472 B
YAML
24 lines
472 B
YAML
de_grv_bob:
|
|
goal_retirement: retirement_bob
|
|
name: German Statutory Pension
|
|
kind: state
|
|
country: DE
|
|
pension_system: de_grv
|
|
tax_treatment: de_renten
|
|
payout_shape: monthly_for_life
|
|
start_age: 67
|
|
amount: 1510
|
|
currency: EUR
|
|
|
|
bav_bob:
|
|
goal_retirement: retirement_bob
|
|
name: bAV employer scheme
|
|
kind: workplace
|
|
country: DE
|
|
pension_system: de_bav
|
|
tax_treatment: de_bav
|
|
payout_shape: lump_plus_annuity
|
|
start_age: 65
|
|
amount: 620
|
|
currency: EUR
|