Migrate frontend navigation to V3: archive Navigation V2, implement updated screen-tree and back-stack rules, and adapt documentation for startable MVP flow.

This commit is contained in:
2026-04-02 20:09:22 +02:00
parent 8b40a0624b
commit b787504474
10 changed files with 563 additions and 21 deletions
@@ -0,0 +1,96 @@
---
type: Frontend
status: ARCHIVED
owner: 🎨 Frontend Expert & 🧹 Curator
archived_at: 2026-04-02
moved_from: docs/06_Frontend/Navigation_V2_Screen-Baum_und_Back-Stack.md
deprecated_by: docs/06_Frontend/Navigation_V3_Screen-Baum_und_Back-Stack.md
sources:
- docs/99_Journal/2026-04-01_Session_Log_BackStack_Navigation.md
- docs/02_Guides/Event-First-Workflow.md
---
# Navigation V2 — ScreenBaum & BackStackRegeln (archiviert)
ACHTUNG: Dieses Dokument beschreibt eine ältere Fassung mit Ping/SystemStatus und LoginFlow. Die jetzt gültige, startfähige Fassung ist „V3“:
- Aktuelle Version: `docs/06_Frontend/Navigation_V3_Screen-Baum_und_Back-Stack.md`
- Dieses V2Dokument bleibt als Referenz im Archiv bestehen.
---
## 1. ScreenBaum (Routen)
- AppRoot
- Landing
- SystemStatus (Ping, Verbindungen)
- Login(returnTo?)
- MainShell (nach Login)
- Dashboard
- Veranstaltungen
- Veranstaltung.Detail(eventId)
- Turnier.Detail(tournamentId)
- Bewerb.Detail(contestId)
- Abteilung.Detail(divisionId)
- Startliste(divisionId)
- Kassa.Turnier(tournamentId)
- Kassa.Veranstaltung(eventId)
- Suche (global)
- Einstellungen
Hinweise:
- Die Struktur folgt dem EventFirstWorkflow (→ Guide). Abteilung ist die kleinste ausführbare Einheit.
- Separate KassaScreens für Turnier und Veranstaltung (→ Ubiquitous Language: VeranstaltungsKassa, Turnierkassa).
---
## 2. NavigationsKonventionen
- Route IDs: Verwende stabile, serialisierbare IDs (`eventId`, `tournamentId`, `contestId`, `divisionId`). Kopfnummern sind keine stabilen IDs.
- SingleTop für HauptTabs (Dashboard, Veranstaltungen, Suche, Einstellungen): erneuter Klick bringt zum TabRoot und ersetzt nicht den Stack.
- DetailDrilldown ist hierarchisch (Parent → Child). Zurück führt jeweils eine Ebene hoch.
- Deep Links: `app://event/{eventId}/tournament/{tId}/contest/{cId}/division/{dId}` öffnen direkt die Abteilung; Eltern werden als „synthetische“ BackKette aufgebaut.
---
## 3. BackStackRegeln
1) Logout
- Poppt den gesamten MainShellStack und landet auf Landing → Login.
2) Wechsel Tab → Tab
- Jeder Tab hat eigenen Stack. Wechsel zwischen Tabs speichert den jeweiligen Stack (SingleTask je Tab).
3) Navigieren innerhalb „Veranstaltungen“
- Veranstaltungen (Liste) → Veranstaltung.Detail → Turnier.Detail → Bewerb.Detail → Abteilung.Detail → Startliste.
- Back springt exakt eine Ebene zurück; beim Verlassen von Startliste zurück zur Abteilung.
4) Öffnen Kassa
- Von Turnier.Detail zu Kassa.Turnier: Push auf Stack.
- Von Veranstaltung.Detail zu Kassa.Veranstaltung: Push auf Stack.
- Back kehrt zur jeweiligen Detailseite zurück.
5) OverrideDialoge (Regelwerk)
- Modal/Sheet, kein eigener StackEintrag. Schließen kehrt zum aktuellen Screen zurück. OverrideEvents werden protokolliert.
---
## 4. Zustandsmanagement
- Screens sind UDF/MVVMkompatibel (Details in eigener Doku; Verweis aus Sprint B).
- NavigationState hält `returnTo` für LoginFlüsse (z. B. Deep Link → Login → zurück zum Ziel).
---
## 5. EdgeCases & Tests
- Abteilungswechsel: Beim Wechsel der Abteilung innerhalb eines Bewerbs bleibt der Stack auf BewerbEbene erhalten; nur das AbteilungDetail wird ersetzt.
- Datenverlust vermeiden: Vor Navigation prüfen, ob ungespeicherte Änderungen vorliegen (z. B. KassaBuchung), ggf. ConfirmDialog.
---
## 6. Querverweise
- BackStack Session Log: `docs/99_Journal/2026-04-01_Session_Log_BackStack_Navigation.md`
- EventFirstWorkflow: `docs/02_Guides/Event-First-Workflow.md`
- Begriffe: `docs/03_Domain/01_Glossary/Ubiquitous_Language.md`