mirror of
https://github.com/we-promise/sure.git
synced 2026-05-30 07: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.
37 lines
873 B
YAML
37 lines
873 B
YAML
vacation_italy:
|
|
family: dylan_family
|
|
name: Vacation in Italy
|
|
target_amount: 5000
|
|
currency: USD
|
|
target_date: <%= 4.months.from_now.to_date %>
|
|
color: "#4da568"
|
|
state: active
|
|
|
|
emergency_fund:
|
|
family: dylan_family
|
|
name: Emergency fund
|
|
target_amount: 10000
|
|
currency: USD
|
|
color: "#6471eb"
|
|
state: active
|
|
|
|
car_paydown:
|
|
family: dylan_family
|
|
name: Paid-off car
|
|
target_amount: 8000
|
|
currency: USD
|
|
target_date: <%= 12.months.from_now.to_date %>
|
|
color: "#e99537"
|
|
state: paused
|
|
|
|
# STI subtype — owner-scoped retirement plan. Excluded from the savings
|
|
# goal routes (see Goal.savings); reachable only via RetirementController.
|
|
retirement_bob:
|
|
family: dylan_family
|
|
user_id: <%= ActiveRecord::FixtureSet.identify(:family_admin, :uuid) %>
|
|
type: Goal::Retirement
|
|
name: Bob's Retirement
|
|
target_amount: 1000000
|
|
currency: USD
|
|
state: active
|