Modul-Review 3: Struktur, Dashboard, CSV-Export und Grafiken
Deploy App / deploy (push) Successful in 1m59s
Deploy App / deploy (push) Successful in 1m59s
Versionierung: - startet neu bei 0.1; erst eine gesetzte Hauptversion macht daraus 1.0 - Szenario-Liste zeigt die echte Version (z.B. 0.17) statt "1.x", plus neue Spalte "Phasen" - Migration 20260724120000_version_zero_start (nur der Default) Plan-Dashboard: - Kacheln anklickbar (fuehren in ihren Bereich), neue Kachel "Berichte" - Plan umbenennen ueber Stift-Symbol - Ist-Abweichung nennt das Jahr des juengsten Ist-Datensatzes und ist bei positiver Abweichung gruen statt rot Szenario-Liste: - Klick auf die Zeile oeffnet die Matrix (Matrix-Knopf entfaellt) - je Zeile Kopie (Vorlage frei waehlbar) und Loeschen - laedt nach einer Loeschung neu (zeigte vorher den alten Stand) Seitenleiste: - Szenarien wieder verschachtelt nach Herkunft - Effektive Werte / Analysen / Berichte buendig zum Knoten "Szenarien" CSV-Export (neues Modul lib/csv.ts): - vier Bloecke: Kopf, Lebensphasen, ganze Matrix (Elemente x Phasen inkl. Uebergangs-Entscheide im Klartext), Jahreswerte - mit BOM (Excel-Umlaute), Dateiname transliteriert Umlaute - vorher enthielt die Datei kein einziges finanzielles Element Grafiken: - Szenario-Waehler gilt fuer alle drei Grafiken - BUGFIX Szenario-Vergleich: WealthChart nutzte den Namen als Datenschluessel -> gleichnamige Szenarien ueberschrieben sich (Legende zeigte beide, Chart nur eine). Neu die ID; stille Deckelung auf 4 Serien entfaellt - eigene Legende mit freier Farbwahl je Serie + Erklaerung des Linienstils - Vermoegensaufteilung neu: gestapelte Flaeche ueber die Planjahre + Ring fuer die relative Aufteilung zu einem waehlbaren Zeitpunkt - alle Diagrammfarben aus neuen Theme-Tokens (--chart-1..6, --chart-grid) Doku-Drift bereinigt: Kapitel 2.1, 3.2.2-3.2.7 und 3.10 beschrieben noch den Stand vor V7 (Grundprofil am Szenario, parentPlanId, Scenario.startYear, window.confirm, drei Sidebar-Unterpunkte). Nebenbei: verstuemmelte Hex-Farbe --danger-soft (warm) repariert, deutsche Plural-/Umlautfehler in den Uebersichts-Kacheln. SPEZIFIKATION 0.31. 267 -> 275 Tests. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+1
-29
@@ -1826,32 +1826,4 @@ function retiresInPhase(
|
||||
return p.age + yearsBeforeNext >= retirementAge.get(personId)!;
|
||||
}
|
||||
|
||||
// CSV-Export (eine Zeile pro Lebensphase, Kernkennzahlen).
|
||||
export function planToCsv(plan: PlanInput, computed: PlanComputed): string {
|
||||
const header = [
|
||||
"Phase",
|
||||
"Typ",
|
||||
"Dauer",
|
||||
"Einkommen (Beginn)",
|
||||
"Ausgaben (Beginn)",
|
||||
"Quote (Beginn)",
|
||||
"Quote (Ende)",
|
||||
"Cash (Ende)",
|
||||
"Endvermögen (nominal)",
|
||||
"Endvermögen (real)",
|
||||
];
|
||||
const rows = computed.phases.map((p) => [
|
||||
p.name,
|
||||
p.type,
|
||||
String(p.durationYears),
|
||||
p.incomeStart.toFixed(0),
|
||||
p.expenseStart.toFixed(0),
|
||||
p.quotaStart.toFixed(0),
|
||||
p.quotaEnd.toFixed(0),
|
||||
p.cashEnd.toFixed(0),
|
||||
p.endWealthNominal.toFixed(0),
|
||||
p.endWealthReal.toFixed(0),
|
||||
]);
|
||||
if (computed.ruinAge !== null) rows.push([`Ruin: Kapital aufgebraucht mit Alter ${computed.ruinAge}`]);
|
||||
return [header, ...rows].map((r) => r.join(";")).join("\n");
|
||||
}
|
||||
// Der CSV-Export liegt seit 0.31 in lib/csv.ts (vollstaendige Matrix statt Phasen-Summary).
|
||||
|
||||
Reference in New Issue
Block a user