docs: Uebergabe, README und Fahrplan halten Stufe 5 fest
Neu drin: warum der zweite Faktor sich hier einrichten, aber nicht abschalten laesst (das verlangt das Kontopasswort, und die App speichert keines - ein Vollzugang auf dem Geraet soll den Schutz nicht aufheben koennen), warum auf dem Telefon die otpauth-Adresse statt eines QR-Codes genommen wird, und dass die Rettungscodes genau einmal erscheinen. Dazu der Grund fuer Einstellungen ohne Sichern-Knopf und der Hinweis, dass sie dem Konto gehoeren, nicht dem Geraet. Die Liste dessen, was bewusst am Rechner bleibt, ist jetzt vollstaendig: Vertragslogo, Kontoreihenfolge, Loesen einer Verknuepfung, Transfer-Schlagwoerter und das Anwenden von Regeln auf Bestehendes. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -48,6 +48,7 @@ Vollzugang. Wer eine Ausnahme braucht, trägt sie bewusst in `project.yml` ein.
|
||||
| `Buchungen/` | Buchungsliste mit Suche, Formular zum Anlegen und Ändern |
|
||||
| `Abos/` | Verträge und Abos |
|
||||
| `Arbeitsliste/` | Eingang, Übertragsvorschläge, Dubletten |
|
||||
| `Nebenraeume/` | Kategorien, Schlagwörter, Bank, zweiter Faktor |
|
||||
| `Konten/` | Kontenliste und Konto-Formular |
|
||||
| `Texte/` | Übersetzungen, Deutsch und Englisch zeilengleich |
|
||||
| `Tests/` | Logiktests ohne Netz, plus die Modellprüfung gegen `Fixtures/antworten.json` |
|
||||
|
||||
+46
-12
@@ -6,7 +6,7 @@ haben: was entschieden ist, was fertig ist, was als Nächstes dran ist, und was
|
||||
ich über das Backend herausgefunden habe. Lies sie ganz, bevor du anfängst —
|
||||
die Abschnitte „Was das Backend vorgibt" und „Fallen" ersparen dir Tage.
|
||||
|
||||
Stand: 21.10.2026, Commit `9edf610`. Alles committet und gepusht.
|
||||
Stand: 21.10.2026, Commit `d290930`. Alles committet und gepusht.
|
||||
|
||||
---
|
||||
|
||||
@@ -242,7 +242,7 @@ Drei Tests in `test_budget.py` halten beide Richtungen und die Null fest.
|
||||
|
||||
---
|
||||
|
||||
## 5. Was fertig ist — Stufen 1 bis 4 ✅
|
||||
## 5. Was fertig ist — Stufen 1 bis 5 ✅
|
||||
|
||||
### Stufe 1 (Commit `6b86a6b`)
|
||||
|
||||
@@ -434,6 +434,39 @@ Richtung: Was verknüpft wird, fällt über `verbraucht` heraus — ein blosser
|
||||
Vorschlag nicht. Die Weboberfläche zeigte den Doppeleintrag genauso.
|
||||
Behoben in `services/uebertraege.py` (`schlage_vor`), mit Test.
|
||||
|
||||
### Stufe 5 — Nebenräume ✅ (Commit `d290930`)
|
||||
|
||||
Kategorien, Schlagwörter, Bankabruf und der zweite Faktor — alle unter
|
||||
**Einstellungen**, nicht als eigene Reiter. Man braucht sie selten, und eine
|
||||
Leiste mit zehn Reitern findet niemand mehr. `Nebenraeume/`.
|
||||
|
||||
#### Was hier bewusst nicht geht
|
||||
|
||||
- **Den zweiten Faktor abschalten.** Es verlangt das Kontopasswort, und die
|
||||
App speichert keines. Ein Vollzugang auf diesem Gerät soll den Schutz des
|
||||
Kontos nicht aufheben können. Dasselbe gilt für neue Rettungscodes.
|
||||
- **Eine Bank verbinden.** Die Bank leitet fest auf `{base_url}/bank/rueckkehr`
|
||||
zurück; der Weg führt zwangsläufig über den Browser. Abrufen und Salden
|
||||
auffrischen gehen von hier.
|
||||
|
||||
#### Zwei Eigenheiten, die beim Nachbauen zählen
|
||||
|
||||
1. **Der zweite Faktor braucht auf dem Telefon keinen QR-Code.** Die
|
||||
Authenticator-App liegt daneben — `otpauth_uri` führt per Link direkt
|
||||
hinein. `qr_png` bleibt ungenutzt; auf dem iPad könnte man es zeigen.
|
||||
2. **Die Rettungscodes erscheinen genau einmal.** Das Blatt lässt sich nicht
|
||||
wegwischen (`interactiveDismissDisabled`) und erst schliessen, wenn der
|
||||
Nutzer bestätigt hat, sie gesichert zu haben. Wer es verliert, braucht
|
||||
das Kontopasswort am Rechner.
|
||||
|
||||
#### Einstellungen schreiben ohne Sichern-Knopf
|
||||
|
||||
`PUT /settings/{key}` nimmt je Aufruf **einen** Wert, als Query. Die Bindung
|
||||
schreibt beim Setzen direkt; ein Formular mit Sichern-Knopf wäre eine
|
||||
Zwischenstufe, die nichts bringt. Die Werte gehören dem **Konto**, nicht dem
|
||||
Gerät — das steht auch unter dem Abschnitt, sonst wundert sich jemand, warum
|
||||
der Browser sich mitändert.
|
||||
|
||||
#### Prüfdatei-Tests zählen keine Mengen mehr
|
||||
|
||||
Die Saat in `erzeuge_ios_fixture.py` wuchs um Eingangseintrag, Dubletten und
|
||||
@@ -446,19 +479,19 @@ erweiterst.**
|
||||
|
||||
## 6. Was als Nächstes dran ist
|
||||
|
||||
**Stufe 5 ist dran.** Alle vier Backend-Ergänzungen sind drin; von hier an
|
||||
**Stufe 6 ist dran.** Alle vier Backend-Ergänzungen sind drin; von hier an
|
||||
reicht die API, wie sie ist.
|
||||
|
||||
Was bewusst nicht mitkam: das **Logo** eines Vertrags (Upload und Zuschnitt,
|
||||
`POST /subscriptions/{id}/logo`), die **Reihenfolge** der Konten
|
||||
(`PUT /accounts/order`) und das **Lösen** einer Übertrags-Verknüpfung
|
||||
(`DELETE /uebertraege/{link_id}`) — in der Arbeitsliste gibt es nur noch
|
||||
nichts Verknüpftes zu lösen. Alles drei ist am Rechner bequemer und hielt
|
||||
niemanden auf.
|
||||
(`PUT /accounts/order`), das **Lösen** einer Übertrags-Verknüpfung
|
||||
(`DELETE /uebertraege/{link_id}`), die **Transfer-Schlagwörter**
|
||||
(`/categories/transfer-keywords`) und das **Anwenden** von Regeln auf
|
||||
Bestehendes (`POST /categories/keywords/anwenden`). Alles am Rechner
|
||||
bequemer, nichts davon hielt jemanden auf.
|
||||
|
||||
**Stufe 5 — Nebenräume.** Kategorien, Tags, Schlagwörter, Einstellungen,
|
||||
Bankabruf anstossen. Hier gehört auch das **Einrichten** des zweiten Faktors
|
||||
hin — bisher verweist die App dafür in den Browser.
|
||||
Weiter aussen vor, wie von Anfang an entschieden: Bank **verbinden**,
|
||||
Postfach einrichten, Sicherung und Wiederherstellung, Benutzerverwaltung.
|
||||
|
||||
**Stufe 6 — Erweiterungen.** Teilen-Menü und Kurzbefehle. Brauchen eigene Ziele
|
||||
im Xcode-Projekt, eine **App-Gruppe** und eine **geteilte
|
||||
@@ -474,8 +507,9 @@ Vorlagen, Verlauf mit Rücknahme.
|
||||
### Zum Umfang, ehrlich
|
||||
|
||||
Die Weboberfläche hat rund 8900 Zeilen JSX. Nativ wird das nicht weniger.
|
||||
Stufe 2 hat rund 1800 Zeilen gebraucht, Stufe 3 rund 1200, Stufe 4 rund 900;
|
||||
Stufen 5 und 6 zusammen sind grob eine Woche, Stufe 7 nochmal zwei bis drei.
|
||||
Stufe 2 hat rund 1800 Zeilen gebraucht, Stufe 3 rund 1200, Stufe 4 rund 900,
|
||||
Stufe 5 rund 1500; Stufe 6 ist überschaubar, Stufe 7 nochmal zwei bis drei
|
||||
Wochen.
|
||||
|
||||
Der **409-Fall** („nachfragen", mit `trotzdem=true` wiederholbar) ist in
|
||||
Stufe 4 angekommen und erledigt — siehe dort. In den Stufen 5 bis 7 kommt er
|
||||
|
||||
Reference in New Issue
Block a user