# Design — Ausbaustufe 5: Deutsche Formate, Posten-Bearbeitung, Szenario-Ende (v0.6.0) > Status: vom Nutzer freigegeben (Chat 2026-07-20). Umsetzungsplan folgt unter > `docs/superpowers/plans/`. Datenschutz-Regel aus `CLAUDE.md` gilt: konkrete > Empfängernamen/Beträge des Demo-Szenarios stehen nur im Chat und in der > Live-Datenbank, nicht in diesem Dokument, nicht in Commits, nicht im Ledger. ## Ziel Drei Nutzeranforderungen an die Web-GUI des Finanzberatungs-Tools: 1. **Deutsche Formate** — Beträge werden deutsch angezeigt (`1.234,56 €`) und deutsch eingegeben (Komma-Dezimaltrenner); englische GUI-Begriffe (`monthly`, `annuity`, `percent`, …) werden übersetzt. 2. **Wiederkehrende Posten** — Felder `Start`/`Ende` in der GUI sichtbar und pflegbar (Modell/API/Engine können das bereits); jeder Posten bekommt einen `Bearbeiten`-Button. Inline-Bearbeitung zusätzlich für Einmalposten, Kredite und den Szenario-Kopf (Nutzerentscheidung). 3. **Szenarien** — Modifikator-Art `Ende` (Posten endet innerhalb des Szenarios an einem Datum, ohne den Posten selbst zu ändern) und szenario-eigene Einmalzahlungen. Demo-Szenario „Best Case" wird nach dem Release live angelegt und durchgerechnet. ## Nutzerentscheidungen (Chat 2026-07-20) - Szenario-Ende als **neue Modifikator-Art `ende`** mit Datumsfeld (nicht als Gültigkeitszeitraum aller Modifikatoren). - Einmalzahlung im Demo-Szenario ist **szenario-spezifisch** → neues Feature „Szenario-Einmalzahlungen". - Formate: **Zahlen + deutsche Begriffe** (API-Werte bleiben englisch). - Bearbeiten-Buttons für: wiederkehrende Posten, Einmalposten, Kredite, Szenario-Kopf. ## Teil 1 — Deutsche Formate **Anzeige.** Neuer Jinja-Filter `eur` in `app/routers/gui.py` (`templates.env.filters["eur"]`), reine `Decimal`-Formatierung ohne `locale`-Modul (Container-Locale unzuverlässig): Vorzeichen, Tausenderpunkt, Komma, zwei Nachkommastellen. Ersetzt alle `'%.2f'|format(...)`-Stellen in `index.html`, `salden.html`, `transactions.html`, `planning.html`, `_preview_table.html`. Prozentwerte (Kredit-Zins) analog mit Komma. Der per JavaScript nachgeladene Tilgungsplan (`planning.html`, `loadLoanSchedule`) formatiert mit `toLocaleString('de-DE', {minimumFractionDigits: 2, maximumFractionDigits: 2})`. **Eingabe.** Die json-form-Extension in `base.html` lernt `data-type="amount"`: Whitespace/€ entfernen; enthält der Wert ein Komma → Tausenderpunkte entfernen, Komma→Punkt; ohne Komma bleibt der Wert unverändert (Punkt-Eingaben funktionieren weiter). Alle Betrags-``-Felder (Fixposten, Einmalposten, Kredit, Modifikator-Wert, Szenario-Einmalzahlung) bekommen `data-type="amount"` und deutsche Platzhalter (`-49,99`). Versteckte Felder der Vorschlags-Übernahme bleiben ohne `data-type="amount"` (Server liefert Punktformat). Die JSON-API bleibt strikt Punkt-Dezimal — Tests, Skripte und Grafana sind nicht betroffen. **Begriffe.** Zentrales Mapping als Jinja-Global `de_label` (Definition in `gui.py`): `monthly→monatlich`, `quarterly→vierteljährlich`, `yearly→jährlich`, `annuity→Annuität`, `bullet→endfällig`, `percent→Prozent`, `absolute→Absolut`, `remove→Entfällt`, `ende→Ende`. Dropdown-`