meldestelle/docs/06_Frontend/Wireframes/Bewerb_anlegen_Abteilungs-Logik_v1.md

4.7 KiB
Raw Blame History

type status owner last_update related
Frontend Wireframe DRAFT 🖌️ UI/UX Designer 2026-04-03
docs/06_Frontend/Navigation_V3_Screen-Baum_und_Back-Stack.md
docs/03_Domain/01_Glossary/Ubiquitous_Language.md
docs/04_Agents/Roadmaps/UIUX_Roadmap.md

Wireframes — Bewerb anlegen (mit AbteilungsLogik)

Ziel: Klarer 3StepFlow für das Anlegen eines Bewerbs inkl. automatischer AbteilungsVorschläge gemäß CSNCNEU PflichtTeilung. Desktopoptimiert (Compose), OfflineFriendly.

Flow: Grunddaten → AbteilungsVorschlag → Bestätigung.


Step 1 — Grunddaten

ASCIIWireframe (Modal Sheet empfohlen; Fullscreen falls weitere Metadaten benötigt):

┌────────── Bewerb anlegen — Grunddaten ──────────┐
│ Bezeichnung         [ Springen 1,10 m         ] │
│ Disziplin          [ Springen  v ]  Niveau [A] │
│ Alters-/Lizenz      [ Lizenz B v ]             │
│ Startgeld           [ 25,00 ]  Währung [EUR v] │
│ Optional: Max Nennungen [ 60 ]                 │
│                                                  
│ ← Zurück                        Weiter →        │
└─────────────────────────────────────────────────┘

Hinweise:

  • Felder minimal halten; Tooltips für Regelwerk.
  • Validierung live; „Weiter“ erst bei gültigen Pflichtfeldern.

Step 2 — AbteilungsVorschlag (CSNCNEU)

Visualisierung der automatischen Vorschläge, klare Unterscheidung der AbteilungsTypen:

┌──── Bewerb anlegen — AbteilungsVorschlag ─────┐
│ Vorschläge (automatisch):                      │
│  ▣ SEPARATE_SIEGEREHRUNG (PflichtTeilung)     │
│     • A   (Lizenz A)   ▢ zusammenlegen         │
│     • B   (Lizenz B)   ▢ zusammenlegen         │
│     • R1  (R1)         ▢ zusammenlegen         │
│                                                 │
│  ○ ORGANISATORISCH (nur Startlisten trennen)    │
│     • A+B zusammen (gemeinsame Wertung)        │
│                                                 │
│ Darstellung:                                    │
│  [A] [B] [R1]   → 3 Siegerehrungen getrennt     │
│  [A+B]          → 1 Siegerehrung gemeinsam      │
│                                                 │
│ Optionen:                                       │
│  [ Editieren… ]  (Abteilungen manuell anpassen) │
│  [ Info zur PflichtTeilung ]                   │
│                                                 │
│ ← Zurück                         Weiter →       │
└─────────────────────────────────────────────────┘

UIMuster:

  • Toggle zwischen SEPARATE_SIEGEREHRUNG und ORGANISATORISCH als RadioGroup mit erklärendem Subtext.
  • „Zusammenlegen“ Checkbox erlaubt in Grenzfällen organisatorisches Zusammenführen; deaktiviert bei harter PflichtTeilung.
  • Badge/Hint „CSNCNEU: PflichtTeilung aktiv“ mit Link zum Regeltext.

Step 3 — Bestätigung (Review)

┌──── Bewerb anlegen — Review & Bestätigung ─────┐
│ Bewerb: Springen 1,10 m  | Disziplin: Springen │
│ Lizenz: B  | Startgeld: 25,00 EUR              │
│                                                │
│ Abteilungen (Typ: SEPARATE_SIEGEREHRUNG):      │
│  • A (eigene Wertung/Siegerehrung)             │
│  • B (eigene Wertung/Siegerehrung)             │
│  • R1 (eigene Wertung/Siegerehrung)            │
│                                                │
│ [Zurück]                     [Bewerb anlegen]  │
└────────────────────────────────────────────────┘

Validierung & States:

  • Blocking Errors verhindern „Bewerb anlegen“.
  • BackendKonflikte (Dubletten) als InlineFehler mit CTA „Zum bestehenden Bewerb“.

Komponenten & Implementierungshinweise

  • Reusable: FormRow, RadioCard (TypAuswahl mit Subtext), DivisionPreviewChips (AbteilungsChips), InfoBadge.
  • Accessibility: FokusReihenfolge, ARIARollen analog (Compose Semantics).
  • Offline: Vorschläge aus lokalem Regelwerk + Cache berechnen; Sync klärt spätere Abweichungen.

EdgeCases

  • PflichtTeilung aktiv, aber zu wenige Nennungen: Hinweis, spätere Zusammenlegung möglich (nur organisatorisch) — dokumentieren.
  • Manuelle Anpassung erzeugt Konflikt mit Regel: Deutlicher Fehlerhinweis, Button disabled, Link „Warum?“.