1.4 KiB
1.4 KiB
| type | status | owner | date |
|---|---|---|---|
| ADR | PROPOSED | Lead Architect | 2026-04-21 |
ADR-0025 — Wizard-Orchestrator (State-Machine, DSL, Guards, Effects)
Kontext
- Aktuelle Wizard-Implementierungen sind linear (
next/previous) und hart verdrahtet in ViewModels. - Anforderungen: Kontextabhängige Pfade, Offline‑First (Autosave/Resume), testbare Regeln, einheitliche UX.
Entscheidung
- Einführung eines generischen Orchestrators mit deklarativem Flow:
StepId(typsicher je Flow),WizardContext,WizardState,Guard,Transition,StepEffects.- Kotlin‑DSL:
flow { step { whenGuard(id) go target; otherwise go … } }. - Side‑Effects an Hooks (
onEnter/onLeave/onComplete) für Prefetch, Autosave, Finalisierung.
Konsequenzen
- Vorteile: zentrale, testbare Navigationslogik; konsistente Draft‑Policy; bessere Übersicht/Erweiterbarkeit.
- Risiken: Initialer Overhead, Lernkurve, Guard‑Sprawl; mitigiert durch README, DevTools, Linting/Namenskonventionen.
Umsetzung
- Modul
frontend/core/wizard(runtime, dsl, devtools, draft) undWizardScaffold(Breadcrumb, Footer, Hotkeys). - Strangler‑Migration beginnend mit Event‑Flow; Feature‑Flag
WizardRuntimeEnabled.
Verweise
- Roadmap‑Abschnitt:
docs/01_Architecture/MASTER_ROADMAP.md#3-initiative-wizard-orchestrator--offline-drafts-q2q3-2026 - Reference:
docs/01_Architecture/Reference/Wizard-DSL-README.md