- Updated the `ProgressionGraphSlotEditorSpec.md` to reflect UI consolidation, removing separate editors and integrating functionalities into `ExerciseProgressionGraphPanel`. - Refactored `ExerciseProgressionGraphPanel` to streamline the editing experience, removing unused state and logic for better performance. - Enhanced `ProgressionGraphEditor` to support embedded usage and trigger callbacks on save, improving integration with other components. - Simplified `ProgressionGraphEditPage` to redirect users to the exercises list with deep-linking support for selected graphs. - Incremented application version to reflect these updates.
2.9 KiB
Progressionsgraph — Slot-Editor (Phase B)
Stand: 2026-06-10 · Status: In Umsetzung
Ziel
Ein Progressionsgraph = ein linearer Hauptpfad (Roadmap = strukturgebend). Jeder Major Step ist ein Slot mit:
- primary — Hauptübung des Slots (Pfadknoten)
- siblings — 0..n Schwestern (gleiche Stufe,
edge_type: sibling)
KI-Entwürfe und Bibliotheksübungen leben im selben Slot-Modell, ohne sofortige Übungsanlage.
Slot-Zustände (kind)
| kind | Bedeutung |
|---|---|
empty |
Noch keine Übung |
library |
exercise_id (+ optional variant_id) |
proposal |
KI-Entwurf (ai_suggestion, kein exercise_id) |
Kanten
primary(n) → primary(n+1)—next_exercise(nur befüllte Primärkette, lückenlos verbunden)primary ↔ sibling—sibling(pro Slot)
Leere Slots in der Roadmap sind erlaubt; Kanten nur zwischen aufeinanderfolgenden befüllten Primär-Slots.
Editor-Zustand (ProgressionGraphDraft)
{
goalQuery, startSituation, targetState, roadmapNotes, maxSteps,
majorSteps: MajorStep[],
slots: Slot[], // index = major_step_index
pathSkillExpectations?,
lastFindings?, // path_qa-Snapshot
dirty: boolean,
}
Hydration: planning_roadmap + Kanten → Slots; slot_contents[] für Entwürfe; Primärkette aus next_exercise.
Speichern: Batch-Delete bestehender Pfad-/Schwester-Kanten → edges/sequence (Primärkette) → einzelne sibling-Kanten → PUT/sequence mit Artefakt inkl. slot_contents, optional last_findings.
Findings-Panel
Nutzt path_qa (overall_ok, quality_score, issues, recommendations, gap_fill_offers, …).
API: POST /api/planning/progression-path-suggest mit evaluate_only: true und evaluate_steps[] — QA ohne Re-Match.
Persistenz: planning_roadmap.last_findings.
Artefakt-Erweiterung (GraphPlanningRoadmapArtifact)
Zusätzlich optional:
slot_contents[]—{ major_step_index, primary, siblings[] }last_findings— letzterpath_qa-Snapshot
UI (konsolidiert)
- Eine Oberfläche:
ExerciseProgressionGraphPanelembeddetProgressionGraphEditor(Slots + Findings) - Kein separater Slot-Editor, kein 4-Schritt-KI-Wizard, kein
ProgressionChainEditorim Panel - Route
/progression-graphs/:id→ Redirect nach/exercises(Deep-Link wählt Graph) - Phase C: Übersicht mit Kacheln (Name, Start, Ziel)
Ersetzt (Legacy, nicht mehr im Panel)
ExerciseProgressionPathBuilder·ProgressionChainEditor— Code bleibt vorerst, nicht eingebunden
Implementierungsreihenfolge
| ID | Inhalt |
|---|---|
| B.0 | Draft + Laden/Speichern Slots ↔ Kanten |
| B.1 | Slot-Karten, Bibliothek + Entwurf |
| B.2 | Findings-Panel + evaluate_only |
| B.3 | Entwürfe im Artefakt + „Übung anlegen“ |
| B.4 | Route + Panel vereinfachen |
| B.5 | last_findings + Phase-C-Vorbereitung |