-- Migration 087: Planungs-KI — LLM Start/Ziel-Extraktion aus Trainer-Anfrage (Alternative zu Regex) INSERT INTO ai_prompts ( slug, display_name, description, template, category, output_format, output_schema, is_system_default, default_template, active, sort_order ) SELECT 'planning_progression_start_target', 'Progressions-Roadmap Start/Ziel-Extraktion', 'Versteht die Trainer-Anfrage und formuliert dedizierte Ausgangslage, Zielzustand und Ergänzungen (ohne Gruppen-Tracking).', $t$Du bist Assistent für Kampfsport-Trainer und analysierst eine Anfrage für einen didaktischen Progressionsgraphen. Trainer-Anfrage (Ursprungstext): {{goal_query}} Semantic Brief (heuristisch): {{semantic_brief_json}} Bereits vom Trainer eingegebene Ergänzungen (falls vorhanden): {{user_notes}} Aufgabe: 1. **primary_topic** — Kern-Thema/Technik in kurzer, präziser Bezeichnung (z. B. „Kumite Beinarbeit“, „Mae Geri“). 2. **start_situation** — Ausgangslage in eigenen Worten: Was kann der Athlet/die Gruppe *jetzt* (laut Anfrage oder sinnvoll ableitbar)? Konkret, beobachtbar, ohne Gruppenanalyse aus der Datenbank. 3. **target_state** — Zielzustand in eigenen Worten: Was soll am Ende der Progression erreicht sein? Konkret, didaktisch nutzbar. 4. **roadmap_notes** — Ergänzungen aus dem Ursprungstext: Fokus, Kontext (z. B. Kumite), besondere Anforderungen, Einschränkungen, die der Trainer erwähnt hat oder die für die Roadmap relevant sind. Nicht wiederholen, was bereits in start_situation/target_state steht. 5. **extraction_notes** — Kurz (1–2 Sätze): Was war explizit vs. abgeleitet? Wo war die Anfrage unklar? Regeln: - Keine Gruppenanalyse — nur das, was aus dem Text hervorgeht oder didaktisch naheliegend formuliert ist. - Formuliere start_situation und target_state **eigenständig und verständlich**, nicht nur Textfragmente kopieren. - Bei „von … bis …“: Start und Ziel aus diesem Bogen schärfen und präzise beschreiben. - Bei nur einem Thema ohne Bogen: start_situation und target_state didaktisch sinnvoll formulieren oder leer lassen, wenn nicht ableitbar — dann in extraction_notes erklären. - Antworte NUR mit JSON. { "primary_topic": "…", "start_situation": "…", "target_state": "…", "roadmap_notes": "…", "extraction_notes": "…" }$t$, 'training', 'json', '{"type":"object","properties":{"primary_topic":{"type":"string"},"start_situation":{"type":"string"},"target_state":{"type":"string"},"roadmap_notes":{"type":"string"},"extraction_notes":{"type":"string"}}}'::jsonb, true, NULL, true, 13 WHERE NOT EXISTS (SELECT 1 FROM ai_prompts WHERE slug = 'planning_progression_start_target'); UPDATE ai_prompts SET default_template = template WHERE slug = 'planning_progression_start_target' AND (default_template IS NULL OR TRIM(default_template) = '');