Pensionierung: Entscheid ans Element, AHV-Vorbezug/Aufschub, PK-Kapitalquote
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
-- Pensionierung wird eine Eigenschaft der PERSON statt der Zeitachse (SPEZIFIKATION 3.13).
|
||||
--
|
||||
-- (1) `FinancialElement.retirementDecision` haelt den Bezugs-Entscheid von AHV, Pensionskasse
|
||||
-- und Saeule 3a. Bisher lag er in `ElementTransitionValue` -- also am Schluessel
|
||||
-- Element x Phasen-ID. Verschob sich das Pensionsalter, wanderte die Phasengrenze, und der
|
||||
-- Entscheid musste verlustbehaftet von Grenze zu Grenze gerettet werden. Ohne Phasen-ID im
|
||||
-- Schluessel ueberlebt er jede Zeitachsen-Aenderung.
|
||||
--
|
||||
-- (2) `Person.planningHorizonAge` macht das Planende explizit. Bisher ergab es sich
|
||||
-- stillschweigend als Summe der Phasendauern -- zwei Szenarien konnten dadurch unbemerkt
|
||||
-- verschieden weit rechnen und waren nicht vergleichbar. NULL bedeutet weiterhin
|
||||
-- "aus den Phasendauern ableiten", der Wert ist also rueckwaertskompatibel.
|
||||
--
|
||||
-- Bewusst OHNE Datenmigration: Alte Entscheide in `ElementTransitionValue` bleiben liegen und
|
||||
-- werden vom Rechenkern ignoriert. Die betroffenen Elemente erscheinen dadurch als
|
||||
-- "Vorgabe ungeprueft" -- genau der Zustand, den das neue Drei-Zustands-Modell dafuer kennt.
|
||||
ALTER TABLE "FinancialElement" ADD COLUMN "retirementDecision" JSONB;
|
||||
ALTER TABLE "Person" ADD COLUMN "planningHorizonAge" INTEGER;
|
||||
@@ -77,6 +77,10 @@ model Person {
|
||||
scenario Scenario @relation(fields: [scenarioId], references: [id], onDelete: Cascade)
|
||||
role PersonRole
|
||||
retirementAge Int
|
||||
// Bis zu welchem Alter gerechnet wird. Bisher ergab sich das Planende stillschweigend aus
|
||||
// der Summe der Phasendauern -- zwei Szenarien konnten dadurch unbemerkt verschieden weit
|
||||
// rechnen und waren nicht vergleichbar.
|
||||
planningHorizonAge Int?
|
||||
|
||||
@@unique([scenarioId, role])
|
||||
}
|
||||
@@ -301,6 +305,10 @@ model FinancialElement {
|
||||
// Gegenstueck im Eltern-Szenario (lose Referenz, kein FK) -- Grundlage des Diffs.
|
||||
sourceElementId String?
|
||||
|
||||
// Pensionierungs-Entscheid (AHV/PK/3a). Bewusst OHNE Phasen-ID im Schluessel: So ueberlebt
|
||||
// er jede Verschiebung der Zeitachse. Siehe src/lib/retirement-decision.ts.
|
||||
retirementDecision Json?
|
||||
|
||||
phaseValues ElementPhaseValue[]
|
||||
transitionValues ElementTransitionValue[]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user