Raten ueber Lebensphasen uebernehmen + Rate in der Verlaufsgrafik
Deploy App / deploy (push) Successful in 1m6s
Deploy App / deploy (push) Successful in 1m6s
(1) Beim Aendern eines Ratenfelds fragt das Panel nach der Reichweite: nur diese Phase (Vorgabe), diese + folgende, alle Phasen. Gilt fuer expectedReturn, valueGrowth, interestRate und teuerungsausgleich. Inline statt Modal -- das Zahlenfeld loest je Tastendruck aus. Die Zielphasen behalten ihre uebrigen Werte (der Endpunkt ersetzt den ganzen Satz; ein Kopieren des Entwurfs haette dort Betraege geloescht). (2) ElementYearPoint fuehrt neu `rate` mit -- additiv, nur durchgereicht. Verlaufsgrafik zeigt sie auf zweiter Y-Achse als Stufenlinie. Golden Tests unveraendert. Spezifikation 0.20, 17 Tests (164 -> 181). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+14
-2
@@ -62,6 +62,11 @@ export interface ElementYearPoint {
|
||||
value: number; // Haupt-Kennzahl (Saldo, Eigenkapital, Flow, Rente)
|
||||
propertyValue?: number; // nur REAL_ESTATE: Verkehrswert der Liegenschaft
|
||||
mortgage?: number; // nur REAL_ESTATE: Restschuld
|
||||
// Die in DIESEM Jahr wirksame Rate in Prozent -- erwartete Rendite (PK/3a/Vermögen),
|
||||
// Wertsteigerung (Immobilie) bzw. jährliche Anpassung (Einkommen/Ausgaben). Rein für die
|
||||
// Darstellung; die Rechnung benutzt denselben Wert, der hier nur mitgeführt wird.
|
||||
// Innerhalb einer Phase konstant, an der Phasengrenze springt sie.
|
||||
rate?: number;
|
||||
}
|
||||
|
||||
export interface ElementPhaseComputed {
|
||||
@@ -794,16 +799,22 @@ export function computePlan(plan: PlanInput, sample?: PlanSample, options?: Comp
|
||||
const age = personA.age + yearsBefore + t;
|
||||
const yr = yearsBefore + t;
|
||||
for (const inc of incomes) {
|
||||
inc.ec.yearly.push({ year: yr, age, value: Math.round(inc.basis * Math.pow(1 + inc.idx / 100, t - 1)) });
|
||||
inc.ec.yearly.push({
|
||||
year: yr,
|
||||
age,
|
||||
value: Math.round(inc.basis * Math.pow(1 + inc.idx / 100, t - 1)),
|
||||
rate: inc.idx,
|
||||
});
|
||||
}
|
||||
for (const exp of expenses) {
|
||||
exp.ec.yearly.push({
|
||||
year: yr,
|
||||
age,
|
||||
value: Math.round(exp.basis * Math.pow(1 + exp.idx / 100, t - 1) * inflFactor),
|
||||
rate: exp.idx,
|
||||
});
|
||||
}
|
||||
for (const a of assets) a.ec.yearly.push({ year: yr, age, value: Math.round(a.value) });
|
||||
for (const a of assets) a.ec.yearly.push({ year: yr, age, value: Math.round(a.value), rate: a.r });
|
||||
for (const re of realEstates) {
|
||||
re.ec.yearly.push({
|
||||
year: yr,
|
||||
@@ -811,6 +822,7 @@ export function computePlan(plan: PlanInput, sample?: PlanSample, options?: Comp
|
||||
value: Math.round(re.value - re.mortgage), // Eigenkapital
|
||||
propertyValue: Math.round(re.value),
|
||||
mortgage: Math.round(re.mortgage),
|
||||
rate: re.growth,
|
||||
});
|
||||
}
|
||||
for (const d of debts) d.ec.yearly.push({ year: yr, age, value: -Math.round(d.owed) });
|
||||
|
||||
Reference in New Issue
Block a user