All checks were successful
Deploy Development / deploy (push) Successful in 42s
Test Suite / pytest-backend (push) Successful in 40s
Test Suite / lint-backend (push) Successful in 1s
Test Suite / build-frontend (push) Successful in 13s
Test Suite / k6 /health Baseline (push) Successful in 33s
Test Suite / playwright-tests (push) Successful in 1m14s
- Introduced new functions to load exercise goals and variant names in chunks, improving data retrieval efficiency. - Integrated semantic scoring into the ranking logic, allowing for more nuanced exercise suggestions based on semantic relevance. - Updated the planning exercise suggestion process to include semantic brief handling, enriching the context for exercise recommendations. - Adjusted the retrieval phase to incorporate dynamic retrieval weights based on semantic strength, enhancing the overall suggestion accuracy. - Incremented version to 0.8.186 and updated changelog to reflect these significant enhancements in planning AI functionality.
90 lines
3.6 KiB
SQL
90 lines
3.6 KiB
SQL
-- Migration 075: Planungs-KI Phase E — Semantik-Enrichment + Pfad-QA Prompts
|
||
|
||
INSERT INTO ai_prompts (
|
||
slug, display_name, description, template,
|
||
category, output_format, output_schema, is_system_default, default_template, active, sort_order
|
||
)
|
||
SELECT
|
||
'planning_exercise_query_semantics',
|
||
'Planungs-Übungssuche Semantik',
|
||
'Erweitert deterministisches Semantic Brief um must/exclude phrases und Entwicklungsbogen.',
|
||
$t$Du bist Assistent für Kampfsport-Trainer bei der semantischen Analyse von Planungs-Anfragen.
|
||
|
||
Ziel: JSON für ein Semantic Brief — präzise Kernbegriffe, Ausschlüsse, Entwicklungsbogen.
|
||
Nutze das bestehende Brief als Basis; ergänze/verfeinere, ersetze aber keine eindeutige Technik-Identität.
|
||
|
||
Anfrage: {{search_query}}
|
||
Bestehendes Brief (deterministisch): {{semantic_brief_json}}
|
||
|
||
Regeln:
|
||
- must_phrases: konkrete Technik-/Themen-Phrasen aus der Anfrage (z. B. "mae geri", nicht nur "geri")
|
||
- exclude_phrases: konkurrierende Techniken/Themen, die NICHT gemeint sind
|
||
- development_arc: geordnete Phasen aus: einstieg, grundlage, vertiefung, anwendung, perfektion
|
||
- semantic_strength: 0.0–1.0 (höher bei spezifischer Technik/Thema)
|
||
- primary_topic: Hauptthema in wenigen Worten
|
||
- topic_type: technique | focus | method | skill | general
|
||
|
||
Antworte NUR mit JSON:
|
||
{
|
||
"primary_topic": "Mae Geri",
|
||
"topic_type": "technique",
|
||
"must_phrases": ["mae geri"],
|
||
"exclude_phrases": ["mawashi geri", "sakuto geri"],
|
||
"development_arc": ["einstieg", "grundlage", "vertiefung", "perfektion"],
|
||
"semantic_strength": 0.9,
|
||
"rationale": "Kurz auf Deutsch"
|
||
}$t$,
|
||
'training',
|
||
'json',
|
||
'{"type":"object","properties":{"must_phrases":{"type":"array"},"exclude_phrases":{"type":"array"},"development_arc":{"type":"array"},"semantic_strength":{"type":"number"}}}'::jsonb,
|
||
true,
|
||
NULL,
|
||
true,
|
||
12
|
||
WHERE NOT EXISTS (SELECT 1 FROM ai_prompts WHERE slug = 'planning_exercise_query_semantics');
|
||
|
||
INSERT INTO ai_prompts (
|
||
slug, display_name, description, template,
|
||
category, output_format, output_schema, is_system_default, default_template, active, sort_order
|
||
)
|
||
SELECT
|
||
'planning_exercise_path_qa',
|
||
'Planungs-Pfad QA',
|
||
'Semantische Qualitätsprüfung eines vorgeschlagenen Übungspfads inkl. Lücken und Brücken.',
|
||
$t$Du bist Assistent für Kampfsport-Trainer und prüfst einen vorgeschlagenen Übungspfad.
|
||
|
||
Ziel-Anfrage: {{goal_query}}
|
||
Semantic Brief: {{semantic_brief_json}}
|
||
Schritte (JSON): {{steps_json}}
|
||
Erkannte Lücken: {{gaps_json}}
|
||
Eingefügte Brücken: {{bridge_inserts_json}}
|
||
|
||
Prüfe:
|
||
1. Deckt der Pfad das Hauptthema der Anfrage ab (nicht nur Oberbegriffe)?
|
||
2. Ist die Reihenfolge didaktisch sinnvoll (Einstieg → Vertiefung → Ziel)?
|
||
3. Sind Sprünge zwischen benachbarten Schritten zu groß?
|
||
4. Sind Brücken-Übungen sinnvoll oder überflüssig?
|
||
5. Fehlen wichtige Zwischenschritte?
|
||
|
||
Antworte NUR mit JSON:
|
||
{
|
||
"overall_ok": true,
|
||
"quality_score": 0.85,
|
||
"topic_coverage": "Kurz: wie gut das Hauptthema abgedeckt ist",
|
||
"issues": ["…"],
|
||
"sequence_notes": ["…"],
|
||
"recommendations": ["…"]
|
||
}$t$,
|
||
'training',
|
||
'json',
|
||
'{"type":"object","required":["overall_ok"],"properties":{"overall_ok":{"type":"boolean"},"quality_score":{"type":"number"},"issues":{"type":"array"},"sequence_notes":{"type":"array"},"recommendations":{"type":"array"}}}'::jsonb,
|
||
true,
|
||
NULL,
|
||
true,
|
||
13
|
||
WHERE NOT EXISTS (SELECT 1 FROM ai_prompts WHERE slug = 'planning_exercise_path_qa');
|
||
|
||
UPDATE ai_prompts SET default_template = template
|
||
WHERE slug IN ('planning_exercise_query_semantics', 'planning_exercise_path_qa')
|
||
AND (default_template IS NULL OR TRIM(default_template) = '');
|