Zum Inhalt

SPEC-2026-009 – Szenario-Verlaufsgrafik und einheitlicher Chart-Standard

Status: Entwurf
Proposal-Status: accepted
Kategorie: specification
Erstellt: 2026-07-06
Stand: 2026-07-06

Anlass

Der neue Tab Szenariovergleich zeigt Best, Base und Stress derzeit nur tabellarisch. Gleichzeitig verwenden Finanzierung, Cashflow, ETF & Vermögen sowie die Reports unterschiedliche Logiken für Jahresmarken, Rasterlinien und Legenden. Dadurch wirken die Diagramme uneinheitlich und einzelne X-Achsen sind nur grob oder nicht gleichmäßig beschriftet.

Ausgangsproblem

Szenariovergleich:
  keine Verlaufsgrafik über die Jahre

UI-Charts:
  Finanzierung, Cashflow und Vermögen verwenden unterschiedliche Tick-Logiken
  Legenden sind unterschiedlich aufgebaut

Report-Charts:
  Liniencharts zeigen nur Start-/Endbereich statt sauberer Jahres-Ticks
  Legenden liegen als Text im SVG und sind schwer vergleichbar

Relevanter bestehender Stand

  • docs/calculations/model-specification.md definiert Best, Base und Stress sowie die identische ETF-Rendite zwischen den Cases.
  • frontend/assets/js/result-visualization-ui.js rendert den kanonischen Restschuldverlauf.
  • frontend/assets/js/cashflow-projection-chart.js rendert den Base-Case-Cashflowverlauf.
  • frontend/assets/js/single-analysis-controller.js rendert den Base-Case-Vermögensvergleich.
  • frontend/assets/js/reports.js rendert Linien- und Balkendiagramme in den Reports.
  • frontend/assets/js/chart-format-fixes.js korrigiert nachträglich einzelne Achsenlabels und ist damit ein Hinweis auf fehlende gemeinsame Chart-Regeln.

Vorgeschlagene Änderung

  1. Im Tab Szenariovergleich wird unter der Tabelle eine Verlaufsgrafik Net vs ETF über die Jahre ergänzt.
  2. Die Grafik zeigt drei Linien in stabiler Reihenfolge:
  3. Best
  4. Base
  5. Stress
  6. Alle Jahresverlaufsdiagramme verwenden eine gemeinsame Utility für:
  7. gleichmäßig verteilte Jahres-Ticks
  8. erste und letzte Jahresmarke
  9. verständliche Intervalle abhängig vom Betrachtungszeitraum
  10. konsistente Legendenstruktur
  11. Die standardisierte X-Achse wird auf folgende UI-Charts angewendet:
  12. Restschuldverlauf
  13. Cashflow-Verlauf
  14. Vermögensvergleich Base Case
  15. neuer Szenariovergleich
  16. Die standardisierte X-Achse und Legende wird auf die Report-Liniencharts angewendet:
  17. Darlehensverlauf
  18. Vermögensentwicklung
  19. Cashflow-Projektion
  20. Report-Balkendiagramme behalten ihre Kategorienachse, erhalten aber dieselbe Legendensprache und visuelle Hierarchie, soweit eine Legende fachlich sinnvoll ist.
  21. Die Chart-Utilities rechnen keine Fachwerte neu. Sie skalieren und formatieren ausschließlich vorhandene Projektionswerte.

Entscheidungsmehrwert

Die Nutzer können die Robustheit der Immobilie gegenüber der ETF-Alternative über den gesamten Betrachtungszeitraum erkennen. Einheitliche Achsen und Legenden verbessern Vergleichbarkeit, Lesbarkeit und Reportqualität.

Auswirkungen auf Architektur, Roadmap und Spezifikation

Architektur: keine Änderung der Fachengine
Roadmap: keine Prioritätsänderung
Fachmodell: keine Änderung
Reporting-Vertrag: zusätzliche Visualisierung vorhandener Szenariowerte
Frontend- und Reportdarstellung: Änderung

Auswirkungen auf Formeln, KPIs und Ratings

Keine. Die neue Grafik verwendet ausschließlich:

ScenarioResult.projection[].year
ScenarioResult.projection[].terminal_net_vs_etf

Bestehende Charts verwenden weiterhin ihre bereits gespeicherten Projektionswerte.

Auswirkungen auf Datenverträge und Versionen

PropertyInput: unverändert
AnalysisResult: unverändert
PropertyRecord: unverändert
Modellversion: unverändert
Engine-Version: unverändert
Schemaversionen: unverändert

Auswirkungen auf UI, Reporting und Speicherung

  • neuer Chart-Container im Szenariovergleich
  • gemeinsame Chart-Utility für Jahresachsen und Legenden
  • einheitliche Legendenreihenfolge und Beschriftung
  • keine Speicherung zusätzlicher Daten
  • gespeicherte Snapshots bleiben unverändert

Auswirkungen auf Tests und Referenzfälle

Zu prüfen:

  • Szenariovergleich zeigt nach der Berechnung genau drei Linien Best/Base/Stress
  • alle Linien verwenden dieselben Jahrespositionen
  • X-Ticks sind gleichmäßig verteilt und enthalten erstes sowie letztes Jahr
  • 30 Jahre ergeben beispielsweise Jahr 1, 5, 10, 15, 20, 25, 30
  • Legenden enthalten keine Duplikate und stimmen mit den Linien überein
  • UI-Charts und Report-Liniencharts verwenden dieselbe Tick-Utility
  • bestehende Berechnungs- und Browserregressionen bleiben erfolgreich

Legacy- und Migrationsfolgen

Keine. Fehlen Projektionswerte in älteren Snapshots, zeigt die Grafik den bestehenden leeren Datenhinweis.

Risiken und offene Fragen

Viele Linien können auf kleinen Bildschirmen unübersichtlich werden. Der Szenariochart bleibt deshalb auf genau drei Linien begrenzt und verwendet eine responsive, außerhalb der Plotfläche angeordnete Legende.

Prüfergebnis

Die Änderung wurde gegen Modell-Spezifikation, AnalysisResult, bestehende UI-Charts, Report-Charts und Browserabnahme geprüft. Es ist keine neue fachliche Berechnung erforderlich.

Entscheidung

Angenommen. Umsetzung als Visualisierungs- und Teständerung ohne Modell-, Engine- oder Schemaversionserhöhung.

Zieldokumente

frontend/index.html
frontend/assets/js/chart-axis-utils.js
frontend/assets/js/scenario-comparison-chart.js
frontend/assets/js/result-visualization-ui.js
frontend/assets/js/cashflow-projection-chart.js
frontend/assets/js/single-analysis-controller.js
frontend/assets/js/reports.js
frontend/assets/js/reports-entry.js
frontend/assets/css/single-analysis.css
frontend/assets/css/report-expanded.css
scripts/check-chart-standardization.mjs
scripts/check-single-analysis-browser.mjs
.github/workflows/contract-check.yml
docs/changes/proposals/specification-additions.md

Integrationscommit

Offen bis erfolgreichem Contract Check und Browserreview.