Festlegung Vorhaben als Wurzel, Plan-Outline, Modal/DnD, Gate-Graph und Roadmap AP1.9b–AP1.13. Co-authored-by: Cursor <cursoragent@cursor.com>
9.0 KiB
Kairo — Plan-Modus Design v0.1
Status: PO-Arbeitsentwurf (Entscheidung ausstehend)
Stand: 2026-07-09
Bezug: Kairo_PM_Frontend_UI_Concept_v0.1.md §4.3, ADP_AP1_10_Initiative_Archetypes_and_Entity_Field_System_v0.1.md
Auslöser: Planen soll von Tab-Fragmenten zu durchgängiger Programmgestaltung werden — bis Struktur, Gates, Eingang, Arbeitspakete und Tasks
1. Leitfrage
Wie soll das Programm aufgebaut sein — von der Vorhabens-Identität bis zur ausführbaren Granularität?
Planen beantwortet Struktur- und Zielfragen. Es committet keine Tagesausführung (das ist Ausführen) und kein Lagebild (das ist Kontrolle).
2. Grundsatz: Vorhaben als Wurzel
/plan?initiative={id}&project={optional}
Initiative (Wurzel — immer im Scope)
├── Profil — Archetyp, Standard- + dynamische Felder
├── Struktur — Project-Baum (rekursiv)
├── Zielzustände — Gates / RoadmapItems (Liste + Graph)
├── Eingang — Backlog (triage → convert)
└── Arbeit — Actions (+ Tasks ab AP1.5d) im Plan-Kontext
Flache Vorhaben: Actions ohne project_id erscheinen als direkte Kinder der Initiative im Plan-Baum.
Commit-Grenze Plan → Ist:
| Objekt | In Plan | Commit-Aktion |
|---|---|---|
| BacklogItem | Ja | Convert → Action |
| Project / Gate | Ja | sofort „Struktur“ (kein separater Commit) |
| Action | Sichtbar | Anlage = committet |
| Task | Sichtbar (AP1.5d) | Anlage unter Action |
3. IA: Von Tabs zur Plan-Outline
3.1 Heute (AP1.9a)
/plan/structure | /plan/gates | /plan/inbox — drei lose Untertabs
3.2 Ziel (AP1.12)
Eine Planungsseite mit linker Outline (Baum) und rechtem Kontextbereich (Desktop) bzw. Drill-down (Mobile).
┌──────────────────────────────────────────────────────────────┐
│ Modus: Planen Scope: Portfolio › Vorhaben X › [Projekt Y] │
├──────────────────┬───────────────────────────────────────────┤
│ OUTLINE │ KONTEXT │
│ ▼ Vorhaben X │ [Profil-Karte / Mini-Snapshot] │
│ ▼ Struktur │ oder │
│ Phase 1 │ [Liste der Kinder des gewählten Knotens] │
│ Phase 2 │ oder │
│ Zielzustände │ [Graph-Ansicht Gates] │
│ Eingang (3) │ │
│ Arbeit (12) │ │
└──────────────────┴───────────────────────────────────────────┘
Routen (evolutionär):
| Route | Bedeutung |
|---|---|
/plan |
Portfolio: „Vorhaben ohne Struktur“, „Gates ohne Kriterien“ (Einstieg) |
/plan?initiative= |
Outline für ein Vorhaben |
/plan?initiative=&node=structure|gates|inbox|work |
Outline-Fokus (Query, kein Pflicht-Split) |
/gates/:id, /projects/:id |
Objekt-Modal / Deep Link (bestehend AP1.9) |
Untertabs /plan/structure etc. bleiben als Deep-Link-Aliase mit Redirect auf /plan?initiative=&node=… bis Entfernung in AP1.12.
4. Interaktion
4.1 Bearbeiten — Modal (verbindlich)
| Objekt | Trigger | Modal-Inhalt |
|---|---|---|
| Initiative | Outline „Profil“ / Stift-Icon | Standardfelder + EFS (AP1.10) |
| Project | Klick / Stift | Titel, Status, container_kind, Gate-Link, Parent |
| Gate | Klick / Stift | RoadmapItem + Kriterien (bestehend, polish) |
| Backlog | Klick | Triage-Felder, Gate-Link, Convert-Button |
| Action | Klick | ActionForm (bestehend) — oder Link zu /actions/:id |
| Task | Klick (AP1.5d) | TaskForm |
Regel (UI Concept P4): Kein dauerhaftes Inline-Formular in der Outline.
4.2 Reihenfolge
| Plattform | Mechanismus | Gilt für |
|---|---|---|
| Desktop (≥1024px) | Drag & Drop innerhalb gleicher Elternebene | Projects, Backlog (sort_order), Gates (optional Phase 2) |
| Mobile / Touch | ↑ / ↓ Buttons pro Zeile | gleich |
API: PATCH mit sort_order oder dediziertes POST …/reorder — idempotent, tenant-scoped.
4.3 Anlegen
„+“ am elterlichen Knoten in der Outline (nicht globaler FAB ohne Kontext).
5. Zielzustände — Graph-Editor
5.1 Zwei Ansichten
| Ansicht | Wann | UI |
|---|---|---|
| Liste | Flache Vorhaben, wenige Gates | RoadmapPlanSection (evolviert) |
| Graph | Komplexe Abhängigkeiten, Parallel-Gates | GateMapEditor (neu) |
Umschalter: „Liste | Graph“ im Knoten Zielzustände — Default Liste wenn ≤5 Gates, sonst letzter User-Choice (localStorage pro Initiative).
5.2 Graph-Editor (AP1.13) — Mitai-Pattern, Kairo-Semantik
Referenz (Pattern only): Mitai WorkflowEditorPage — Canvas, Zoom, Pan, Snap-to-grid.
Kairo-Scope (kein Workflow):
| Element | Semantik |
|---|---|
| Knoten | RoadmapItem (Gate, Meilenstein, Reifegrad) |
| Kanten | roadmap_item_dependencies (sequential / parallel / optional) |
| Kein | Lifecycle-Workflow, keine Prompt-Knoten, keine Mitai-Domäne |
Phase 1: Gates + Kanten CRUD im Graph
Phase 2: Project→Gate-Bezug als Badge am Knoten oder Filter-Layer
Verify / Kriterien: Weiterhin Detail-Modal / /gates/:id — nicht im Graph inline CRUD-Wand
5.3 Backend
Baut auf AP1.4d (Graph Engine read models) auf — UI AP1.13 nach 4d oder parallel wenn read APIs vorhanden.
6. Ebenen bis Workpackage & Task
| Ebene | Typ | Plan-Outline-Knoten | Tiefe |
|---|---|---|---|
| 0 | Initiative | Wurzel | 1 |
| 1 | Project | rekursiv | max. 5 (bestehend) |
| 2 | RoadmapItem | Zielzustände (Graph/Liste) | parallel zur Struktur |
| 3 | BacklogItem | Eingang | flach unter Initiative |
| 4 | Action | Arbeit | unter Project oder Initiative |
| 5 | Task | (AP1.5d) | unter Action, UI max. ~3 |
Plan-Baum „Arbeit“: Zeigt committete Actions + Tasks (read-heavy); Anlage öffnet Modal. Filter: optional nur „ohne Project“ / „unter gewähltem Project“ (Scope ?project=).
7. Scope-Breadcrumb (AP1.9b — Zuverlässigkeit)
Problem: Klick auf Vorhaben im Breadcrumb führt immer nach /control/status — in Planen falsch.
Regel: Mittlerer Breadcrumb-Klick ist modus-sensitiv:
| Aktiver Modus | Klick „Vorhaben X“ |
|---|---|
/plan/* |
/plan?initiative=X |
/control/* |
/control/status?initiative=X |
/work/* |
/work/today?initiative=X |
| Objekt-Route | passender Modus aus Objekttyp (/projects/ → Plan, /actions/ → Work) |
Portfolio-Klick: Scope leeren, Modus beibehalten.
Technik: ProgramScopeBar liest useLocation + Modus-Registry; kein hardcoded /control/status.
8. Implementierungspakete
AP1.9b Scope-Breadcrumb modus-sensitiv; Scope-Sync bei Deep Links härten
AP1.12a Plan-Outline Shell (Desktop Split / Mobile Drill-down)
AP1.12b Modal-Edit für Project, Backlog, Initiative-Profil (Standardfelder)
AP1.12c Reorder: sort_order API + DnD (Desktop) + ↑↓ (Mobile)
AP1.12d Outline-Knoten „Arbeit“ (Actions listen, Link zu Detail)
AP1.13a GateMapEditor read-only (Layout aus Dependencies)
AP1.13b GateMapEditor edit (Knoten/Kanten CRUD)
AP1.5d Tasks in Outline-Knoten „Arbeit“
AP1.10 Archetyp + EFS für Initiative-Profil-Modal (parallel ab 10a)
Empfohlene Reihenfolge:
9b → 12a → 12b → 10a/10c (Profil) → 12c → 12d → 5d → 13a → 13b
9. Nicht-Ziele (Scope Lock)
- Kein Sprint-/Capacity-Planning in Planen (später Team-Modus-Erweiterung)
- Kein Inline-CRUD aller Gates in der Outline-Liste
- Kein Mitai-Workflow-Clone
- Kein Steering pro Project-Ebene (ADP Recursive Containers)
10. Erfolgskriterien (PO)
- PO kann ein Vorhaben wählen und in einer Ansicht Struktur, Gates, Eingang und Arbeit sehen.
- Bearbeitung läuft nur im Modal — Outline bleibt übersichtlich.
- Project-Reihenfolge per DnD (Desktop) änderbar.
- Gates mit Abhängigkeiten im Graph darstellbar (AP1.13).
- Breadcrumb-Klick auf Vorhaben bleibt im Modus Planen.
11. PO-Freigabe
- Outline statt drei Tabs (AP1.12) angenommen
- Modal-Edit + DnD/↑↓ OK
- GateMapEditor (Mitai-Pattern) Scope OK
- AP1.9b Breadcrumb-Regel OK
Referenzen
docs/architecture/ADP_AP1_10_Initiative_Archetypes_and_Entity_Field_System_v0.1.mddocs/architecture/ADP_AP1_9_PM_Work_Modes_Frontend_IA_v0.1.mddocs/reference/design-principles/mitai/PROMPT_ENGINE_DESIGN_PRINCIPLES.md(WorkflowEditor-Referenz)