docs: Spec A11 - Ist-Serie als reservierter Name System-Ist
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -8,8 +8,9 @@
|
|||||||
|
|
||||||
## Nutzerentscheidungen (2026-09-28)
|
## Nutzerentscheidungen (2026-09-28)
|
||||||
|
|
||||||
- Szenario-Vergleich vor heute: **Ist-Gesamtsaldo als eigene Serie „Ist"**,
|
- Szenario-Vergleich vor heute: **Ist-Gesamtsaldo als eigene Serie
|
||||||
Szenario-Kurven erst ab heute.
|
„System-Ist"** (bewusst systemeigen benannt, Name für Szenarien
|
||||||
|
reserviert), Szenario-Kurven erst ab heute.
|
||||||
- Veraltete Szenarien: **automatisch neu rechnen** beim Seitenaufruf.
|
- Veraltete Szenarien: **automatisch neu rechnen** beim Seitenaufruf.
|
||||||
- Planungs-Diagramm: **Einnahmen + Ausgaben mit Vorzeichen** (Semantik wie
|
- Planungs-Diagramm: **Einnahmen + Ausgaben mit Vorzeichen** (Semantik wie
|
||||||
„Monat nach Kategorie").
|
„Monat nach Kategorie").
|
||||||
@@ -54,7 +55,7 @@
|
|||||||
|
|
||||||
Neue Definition, Spalten unverändert (`scenario, day, balance`):
|
Neue Definition, Spalten unverändert (`scenario, day, balance`):
|
||||||
|
|
||||||
1. **Ist-Serie:** `SELECT 'Ist', day, balance FROM v_balance_total`
|
1. **Ist-Serie:** `SELECT 'System-Ist', day, balance FROM v_balance_total`
|
||||||
(reicht bis `CURRENT_DATE`).
|
(reicht bis `CURRENT_DATE`).
|
||||||
2. **Szenario-Startpunkt:** je Szenario mit mindestens einem
|
2. **Szenario-Startpunkt:** je Szenario mit mindestens einem
|
||||||
Projektionspunkt eine Zeile `(s.name, CURRENT_DATE, <Ist-Saldo heute>)`
|
Projektionspunkt eine Zeile `(s.name, CURRENT_DATE, <Ist-Saldo heute>)`
|
||||||
@@ -71,8 +72,15 @@ stehen (ist bereits so; Reihenfolge beibehalten). Achtung: DROP … CASCADE
|
|||||||
von `v_balance_total` im Fallback-Pfad würde `v_projection` mitreißen — da
|
von `v_balance_total` im Fallback-Pfad würde `v_projection` mitreißen — da
|
||||||
`v_projection` danach ohnehin neu angelegt wird, ist das unkritisch.
|
`v_projection` danach ohnehin neu angelegt wird, ist das unkritisch.
|
||||||
|
|
||||||
Bekannte Grenze: ein Szenario namens „Ist" würde mit der Ist-Serie
|
Reservierter Name: Die Serienbezeichnung `System-Ist` ist als Modul-Konstante
|
||||||
verschmelzen. Wird hingenommen (keine Namensvalidierung eingeführt).
|
(`RESERVED_SCENARIO_NAME` in `models/views.py`, dort auch in der View-SQL
|
||||||
|
verwendet) hinterlegt. `routers/scenarios.py` lehnt `POST` und `PATCH` mit
|
||||||
|
diesem Namen (Vergleich nach `strip().casefold()`) mit **422** und der
|
||||||
|
Meldung „Der Name »System-Ist« ist für die Ist-Kurve reserviert" ab, damit
|
||||||
|
kein Szenario mit der Ist-Serie verschmelzen kann. Bestandsszenarien mit
|
||||||
|
diesem Namen existieren nicht (live geprüft: 3 Szenarien, andere Namen).
|
||||||
|
Tests: POST/PATCH mit `System-Ist`, `system-ist`, ` System-Ist ` → 422;
|
||||||
|
normale Namen unverändert 201/200.
|
||||||
|
|
||||||
### 2b. Automatisches Neurechnen (`services/projection_service.py`)
|
### 2b. Automatisches Neurechnen (`services/projection_service.py`)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user