All checks were successful
Deploy Development / deploy (push) Successful in 42s
Test Suite / pytest-backend (push) Successful in 43s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 14s
Test Suite / k6 /health Baseline (push) Successful in 34s
Test Suite / playwright-tests (push) Successful in 1m14s
- Added `include_llm_start_target` option to `ProgressionPathSuggestRequest` for improved roadmap suggestions. - Introduced new classes `StartTargetExtractArtifact` and `StartTargetResolveMeta` to handle LLM extraction results and metadata. - Implemented `try_llm_start_target_extract` function to extract start and target states from goal queries using LLM. - Updated `resolve_roadmap_structured_input` to prioritize user inputs, LLM extractions, and regex parsing for start/target resolution. - Enhanced `ExerciseProgressionPathBuilder` to utilize new structured inputs and display extraction sources. - Incremented application version to 0.8.211 to reflect these changes.
53 lines
2.8 KiB
SQL
53 lines
2.8 KiB
SQL
-- 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) = '');
|