# Planungs-KI — Progressions-Roadmap (Phase F) **Version:** 0.1 **Datum:** 2026-06-07 **Status:** VERBINDLICHE ZIELARCHITEKTUR — **F0–F9 umgesetzt** (0.8.217) **Geltungsbereich:** **Progressionsgraph** (`exercise_progression_graphs`) — **ohne** Gruppenanalyse **Ist-Stand (Module, API, Graph-Verhalten, Persistenz):** `docs/architecture/PLANNING_PROGRESSION_GRAPH_KI.md` **Bezüge:** `working/PLANNING_EXERCISE_SUGGEST_CONTEXT.md` · `working/AI_PLANNING_KI_MULTISTAGE_FORECAST.md` · `technical/AI_TRAINING_PLANNING_CONCEPT.md` · `technical/AI_PROMPT_TARGET_ARCHITECTURE.md` · `docs/architecture/PLANNING_KI_ROADMAP.md` · `docs/HANDOVER.md` --- ## 1. Entscheidung (2026-06-07) ### 1.1 Problem Der Pfad-Builder (Phase C3/E) ist **retrieval-first**: Zieltext → N Übungen aus der Bibliothek → QS nachbessern. Das entspricht nicht der menschlichen Planung (Ziel → Roadmap → Stufenspezifikation → Übung). ### 1.2 Festlegung | Thema | Entscheidung | |--------|----------------| | **Progressionsgraph** | **Roadmap-first** — Phasen A→B→C, dann Bibliothek (D), dann Feinausplanung (E) | | **Gruppenanalyse** | **Nicht** in der Graphen-Pipeline — erst bei **Trainingsplanung** (Einheit/Rahmen) | | **Mitai Workflow-Engine** | **Nicht** jetzt portieren — **Workflow-lite** (`PlanningProgressionPipeline`), später workflow-ready | | **Ein Mega-Prompt** | **Verboten** — validierte Artefakte pro Phase | ### 1.3 Abgrenzung Trainingsplanung ``` Progressionsgraph-Pipeline Trainingsplanungs-Pipeline (später) ───────────────────────── ─────────────────────────────────── Ziel + N Major Steps Gruppe + Historie + Termin + Rahmen Kein Gruppenkontext Kontext-Pack S0 (AI_PLANNING_KI_MULTISTAGE_FORECAST) Curriculum / Technikpfad Session-Füllung / Reihenfolge / Zeiten ``` --- ## 2. Menschliches Vorbild → Phasen | Mensch | Phase | Output-Artefakt | LLM | |--------|-------|-----------------|-----| | Startpunkt + Zielzustand | **A** Zielanalyse | `goal_analysis` | Optional (klein) | | Zwischenziele, gewichten, auf N reduzieren | **B** Roadmap | `roadmap` (`micro_objectives[]`, `major_steps[N]`) | Ja | | Belastung, Übungstyp, Lernziel je Stufe | **C** Stufenspezifikation | `stage_specs[]` | Teilweise | | Bibliothek / Brücke | **D** Match | `step_matches[]` oder `gaps[]` | Nein (Retrieval) | | Skizze + Feinplan | **E** Übungsentwurf | bestehend `suggestExerciseAi` | On-demand | **Phase B** = Kern: 8–12 `micro_objectives` → Konsolidierung → exakt `max_steps` `major_steps`. --- ## 3. Pipeline-Orchestrator (Workflow-lite) Modul: **`backend/planning_progression_roadmap.py`** ```python ctx = ProgressionRoadmapContext(goal_query=..., max_steps=N, semantic_brief=...) ctx = phase_a_goal_analysis(ctx) # deterministisch + optional LLM ctx = phase_b_roadmap(ctx) # micro → major ctx = phase_c_stage_specs(ctx) # je major_step # Phase D/E: bestehende path_builder / retrieval / ai_fill — speisen von ctx.major_steps ``` Jede Phase: `(ctx) → ctx`, Zwischenergebnisse in API-Response für **Human-in-the-loop** (Roadmap-Review vor Übungs-Match). **Später:** jede Phase = Workflow-Knoten (Mitai-kompatibel), keine API-Änderung an Artefakten. --- ## 4. JSON-Artefakte (Pydantic) ### 4.1 `goal_analysis` (Phase A) ```json { "primary_topic": "Mae Geri", "start_assumption": "Grundkenntnisse der Standführung, keine Perfektion", "target_state": "Sicherer, präziser Mae Geri unter Belastung und in Anwendung", "success_criteria": ["saubere Kammerhaltung", "Hüftführung", "Kime am Zielpunkt"], "constraints": { "partner_required": false, "equipment": [] } } ``` ### 4.2 `roadmap` (Phase B) ```json { "micro_objectives": [ { "id": "m1", "phase": "grundlage", "title": "Stellung und Kammerhaltung", "weight": 0.9, "depends_on": [] }, { "id": "m2", "phase": "vertiefung", "title": "Hüft- und Kniekoordination", "weight": 0.85, "depends_on": ["m1"] } ], "major_steps": [ { "index": 0, "phase": "grundlage", "learning_goal": "Stabile Mae-Geri-Grundstellung", "consolidates": ["m1"], "rationale": "Einstieg ohne Perfektionsdruck" } ], "consolidation_notes": ["Perfektion mit Anwendung zusammengeführt"] } ``` ### 4.3 `stage_spec` (Phase C, je Major Step) ```json { "major_step_index": 2, "learning_goal": "…", "load_profile": ["präzision", "koordination"], "exercise_type": "kihon_einzel", "success_criteria": ["…"], "anti_patterns": ["reine Kraftübung ohne Technikbezug"] } ``` --- ## 5. API (schrittweise) ### 5.1 Erweiterung `POST /api/planning/progression-path-suggest` | Feld (neu) | Default | Bedeutung | |------------|---------|-----------| | `roadmap_first` | `false` → später `true` | Roadmap-Pipeline vor Retrieval | | `include_roadmap_preview` | `true` wenn `roadmap_first` | Artefakte A/B/C in Response | **Response (neu):** ```json { "progression_roadmap": { "goal_analysis": { }, "roadmap": { }, "stage_specs": [ ], "pipeline_phase": "roadmap_v1" }, "steps": [ ] } ``` **Übergangsphase (0.8.204):** `include_roadmap_preview=true` liefert Roadmap **parallel** zum bestehenden retrieval-first Pfad — UI kann Roadmap reviewen, Schritte bleiben vorerst retrieval-basiert. **Zielphase (F2):** `roadmap_first=true` — Retrieval pro Major Step aus `stage_specs`, nicht mehr iterativ „beste nächste Übung“. ### 5.2 Prompt-Slugs — nur in `ai_prompts`, nie im Code **Regel:** Prompt-**Texte** leben ausschließlich in der Tabelle `ai_prompts` (Superadmin bearbeitbar, Vorschau, `openrouter_model` pro Zeile). Python referenziert nur **Slugs** (`PROMPT_SLUG_*` in `planning_progression_roadmap.py`). Kein verstecktes Hardcoding von Templates. | Slug | Phase | Migration | |------|-------|-----------| | `planning_progression_start_target` | Start/Ziel | **087** | | `planning_progression_goal_analysis` | A | **078** | | `planning_progression_roadmap` | B | **078** | | `planning_progression_stage_spec` | C | **079** | **API:** `include_llm_roadmap` (Default `true`) — lädt Prompts via `load_and_render_ai_prompt`. Bei Fehler/kein OpenRouter: **deterministischer Fallback** (kein stilles Versagen). **Response:** `prompt_slugs` (genutzte Slugs), `prompt_slug_catalog` (Referenz), `llm_*_applied` Flags. **Admin:** Templates unter Kategorie `training` pflegen — siehe `AI_PROMPT_SYSTEM_SPEC.md`. --- ## 6. UI-Roadmap 1. **F1:** Roadmap-Box unter Ziel-Eingabe (Major Steps als Karten, editierbar) — vor Übungsliste 2. **F2:** Match-Ergebnis pro Major Step (Bibliothek / Lücke / KI anlegen) 3. **F3:** `roadmap_first` als Default im Graph-Builder --- ## 7. Was bewusst nicht in Phase F - Gruppen-Historie, Belastungssteuerung der Gruppe - Mitai `workflow_engine` Port - Vollautomatisches Speichern ohne Trainer-Review --- ## 8. Implementierungsstände | ID | Inhalt | Status | |----|--------|--------| | **F0** | Spec + Doku + `planning_progression_roadmap.py` Scaffold | ✅ 0.8.204 | | **F1** | `include_roadmap_preview` in API + deterministische A/B | ✅ 0.8.204 | | **F2** | LLM Phase A/B/C über `ai_prompts` (078/079), `include_llm_roadmap` | ✅ 0.8.205 | | **F3** | Retrieval aus `stage_specs` (roadmap_first) | ✅ 0.8.206–209 | | **F4** | UI Roadmap-Review + `roadmap_override` | ✅ 0.8.207 | | **F5** | Start/Ziel strukturiert + Prompt **087** + Zwei-Schritt-UI | ✅ 0.8.210–214 | | **F6** | Gap-Prep + `planning_context` an Übungs-KI | ✅ 0.8.212–214 | | **F7** | `planning_skill_expectations` | ✅ 0.8.215–216 | | **F8** | Editierbare `stage_specs` in UI | ✅ 0.8.216 | | **F9** | `planning_roadmap` JSONB (Migration **088**) | ✅ 0.8.217 | | **G** | Trainingsplanung: eigene Pipeline + Workflow-Engine | 🔲 | Details: `docs/architecture/PLANNING_PROGRESSION_GRAPH_KI.md` --- ## 9. Changelog - **2026-05-22:** Ist-Stand F5–F9 dokumentiert; Verweis auf `PLANNING_PROGRESSION_GRAPH_KI.md`. - **2026-06-07:** Erstfassung — Roadmap-first Entscheidung, Abgrenzung Graphen vs. Planung, Workflow-lite.