All checks were successful
Deploy Development / deploy (push) Successful in 43s
Test Suite / pytest-backend (push) Successful in 43s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 13s
Test Suite / k6 /health Baseline (push) Successful in 33s
Test Suite / playwright-tests (push) Successful in 1m13s
- Added `planning_context` to the `suggestExerciseAi` endpoint, enabling structured planning context for new exercise creation. - Updated relevant components and backend logic to handle the new planning context, enhancing the AI's exercise suggestion capabilities. - Incremented application version to 0.8.208 to reflect these changes.
182 lines
7.4 KiB
SQL
182 lines
7.4 KiB
SQL
-- Migration 085: Planungskontext in Übungs-KI-Prompts (Phase D)
|
||
-- Platzhalter: {{planning_context_json}}, {{#has_planning_context}} … {{/has_planning_context}}
|
||
|
||
UPDATE ai_prompts
|
||
SET template = $s$Du bist Assistent fuer Kampfsport-Trainer.
|
||
Erstelle eine kurze Kurzbeschreibung fuer Listen und Trainingsplaene.
|
||
|
||
Anforderungen:
|
||
- Hochstens etwa 200 Zeichen (bei Bedarf gekuerzt fuer Mobile)
|
||
- Kern: Welche Trainingsqualitaeten? Wie fuehrt man die Uebung kurz aus?
|
||
- Sachlich, auf Deutsch
|
||
|
||
Uebung: {{exercise_title}}
|
||
Fokuskontext: {{exercise_focus_area}}
|
||
Ziel (Fliesstext, kann HTML sein): {{exercise_goal}}
|
||
Durchfuehrung (Fliesstext, kann HTML sein): {{exercise_execution}}
|
||
{{#has_planning_context}}
|
||
Planungskontext (JSON — Einordnung in Trainingsplan oder Progressionspfad):
|
||
{{planning_context_json}}
|
||
{{/has_planning_context}}
|
||
|
||
Antworte NUR mit der Kurzbeschreibung als einfachen Text (keine Markdown-Codeblocks, keine Anfuehrungszeichen um den ganzen Text).$s$,
|
||
default_template = $s$Du bist Assistent fuer Kampfsport-Trainer.
|
||
Erstelle eine kurze Kurzbeschreibung fuer Listen und Trainingsplaene.
|
||
|
||
Anforderungen:
|
||
- Hochstens etwa 200 Zeichen (bei Bedarf gekuerzt fuer Mobile)
|
||
- Kern: Welche Trainingsqualitaeten? Wie fuehrt man die Uebung kurz aus?
|
||
- Sachlich, auf Deutsch
|
||
|
||
Uebung: {{exercise_title}}
|
||
Fokuskontext: {{exercise_focus_area}}
|
||
Ziel (Fliesstext, kann HTML sein): {{exercise_goal}}
|
||
Durchfuehrung (Fliesstext, kann HTML sein): {{exercise_execution}}
|
||
{{#has_planning_context}}
|
||
Planungskontext (JSON — Einordnung in Trainingsplan oder Progressionspfad):
|
||
{{planning_context_json}}
|
||
{{/has_planning_context}}
|
||
|
||
Antworte NUR mit der Kurzbeschreibung als einfachen Text (keine Markdown-Codeblocks, keine Anfuehrungszeichen um den ganzen Text).$s$
|
||
WHERE slug = 'exercise_summary';
|
||
|
||
UPDATE ai_prompts
|
||
SET template = $j$Du bist Assistent fuer Kampfsport-Trainer.
|
||
Ordne diese Uebung dem globalen Skill-Katalog zu.
|
||
|
||
Daten zur Uebung:
|
||
Titel: {{exercise_title}}
|
||
Fokuskontext (optional): {{exercise_focus_area}}
|
||
Ziel (gekuerzt_plain): {{exercise_goal}}
|
||
Durchfuehrung (gekuerzt_plain): {{exercise_execution}}
|
||
{{#has_planning_context}}
|
||
Planungskontext (JSON):
|
||
{{planning_context_json}}
|
||
{{/has_planning_context}}
|
||
|
||
Verfuegbare Faehigkeiten (Auswahl NUR ueber diese IDs — keine anderen IDs verwenden):
|
||
{{skills_catalog}}
|
||
|
||
Waehle hoechstens 5 passende Skills. Für jede Faehigkeit:
|
||
- skill_id: ganze Zahl aus der Liste
|
||
- required_level: eines von basis, grundlagen, aufbau, fortgeschritten, optimierung
|
||
- target_level: derselbe Wertvorrat
|
||
- intensity: eines von niedrig, mittel, hoch
|
||
- is_primary (optional): true fuer die Hauptfaehigkeit der Uebung, sondern false/weglassen
|
||
|
||
Antworte NUR mit einem JSON-Array ohne Erklaertext, keine Markdown-Fences.
|
||
|
||
Beispielformat:
|
||
[{"skill_id": 1, "required_level": "grundlagen", "target_level": "aufbau", "intensity": "hoch", "is_primary": true}]
|
||
|
||
Wenn nichts gut passt, antworte mit [].$j$,
|
||
default_template = $j$Du bist Assistent fuer Kampfsport-Trainer.
|
||
Ordne diese Uebung dem globalen Skill-Katalog zu.
|
||
|
||
Daten zur Uebung:
|
||
Titel: {{exercise_title}}
|
||
Fokuskontext (optional): {{exercise_focus_area}}
|
||
Ziel (gekuerzt_plain): {{exercise_goal}}
|
||
Durchfuehrung (gekuerzt_plain): {{exercise_execution}}
|
||
{{#has_planning_context}}
|
||
Planungskontext (JSON):
|
||
{{planning_context_json}}
|
||
{{/has_planning_context}}
|
||
|
||
Verfuegbare Faehigkeiten (Auswahl NUR ueber diese IDs — keine anderen IDs verwenden):
|
||
{{skills_catalog}}
|
||
|
||
Waehle hoechstens 5 passende Skills. Für jede Faehigkeit:
|
||
- skill_id: ganze Zahl aus der Liste
|
||
- required_level: eines von basis, grundlagen, aufbau, fortgeschritten, optimierung
|
||
- target_level: derselbe Wertvorrat
|
||
- intensity: eines von niedrig, mittel, hoch
|
||
- is_primary (optional): true fuer die Hauptfaehigkeit der Uebung, sondern false/weglassen
|
||
|
||
Antworte NUR mit einem JSON-Array ohne Erklaertext, keine Markdown-Fences.
|
||
|
||
Beispielformat:
|
||
[{"skill_id": 1, "required_level": "grundlagen", "target_level": "aufbau", "intensity": "hoch", "is_primary": true}]
|
||
|
||
Wenn nichts gut passt, antworte mit [].$j$
|
||
WHERE slug = 'exercise_skill_suggestions';
|
||
|
||
UPDATE ai_prompts
|
||
SET template = $t$Du bist Assistent fuer Kampfsport-Trainer.
|
||
Ueberarbeite die Anleitung dieser Uebung: verbessere Formulierung, ergaenze fehlende Kernpunkte, kuerze ueberfluessige Passagen.
|
||
Wichtig: Texte sollen praezise und nachvollziehbar bleiben — keine Fuellsaetze, keine Wiederholungen, kein Marketing.
|
||
|
||
Stil:
|
||
- Deutsch, sachlich, direkt an Trainer gerichtet (Durchfuehrung: Imperativ oder klare Schritte)
|
||
- Ziel: 1–3 kurze Absaetze (Kern des Trainingsziels)
|
||
- Durchfuehrung: klare Schritte (nummerierte Liste oder kurze Absaetze)
|
||
- Vorbereitung/Aufbau: nur wenn noetig (Raum, Material, Aufbau) — sonst leerer String
|
||
- Trainer-Hinweise: Sicherheit, typische Fehler, Coaching-Tipps — knapp, Stichpunkte oder kurze Absaetze
|
||
|
||
Format (HTML fuer Rich-Text-Editor):
|
||
- Erlaubt: <p>, <ul>, <ol>, <li>, <strong>, <em>, <br>
|
||
- Keine Ueberschriften (h1–h6), keine Tabellen, kein Markdown, keine Code-Fences
|
||
- Medienverweise {{exerciseMedia:ID}} aus den Eingabetexten UNVERAENDERT an passender Stelle uebernehmen
|
||
|
||
Eingabe:
|
||
Titel: {{exercise_title}}
|
||
Fokuskontext: {{exercise_focus_area}}
|
||
|
||
Ziel (Plaintext, Ausgang): {{exercise_goal}}
|
||
Durchfuehrung (Plaintext, Ausgang): {{exercise_execution}}
|
||
Vorbereitung/Aufbau (Plaintext, Ausgang): {{exercise_preparation}}
|
||
Trainer-Hinweise (Plaintext, Ausgang): {{exercise_trainer_notes}}
|
||
{{#has_planning_context}}
|
||
Planungskontext (JSON):
|
||
{{planning_context_json}}
|
||
{{/has_planning_context}}
|
||
|
||
Antworte NUR mit einem JSON-Objekt (kein Text davor/danach):
|
||
{
|
||
"goal": "<p>…</p>",
|
||
"execution": "<ol><li>…</li></ol>",
|
||
"preparation": "<p>…</p> oder \"\"",
|
||
"trainer_notes": "<ul><li>…</li></ul> oder \"\""
|
||
}
|
||
|
||
Leere Felder als leerer String "" wenn nichts Sinnvolles ergibt.$t$,
|
||
default_template = $t$Du bist Assistent fuer Kampfsport-Trainer.
|
||
Ueberarbeite die Anleitung dieser Uebung: verbessere Formulierung, ergaenze fehlende Kernpunkte, kuerze ueberfluessige Passagen.
|
||
Wichtig: Texte sollen praezise und nachvollziehbar bleiben — keine Fuellsaetze, keine Wiederholungen, kein Marketing.
|
||
|
||
Stil:
|
||
- Deutsch, sachlich, direkt an Trainer gerichtet (Durchfuehrung: Imperativ oder klare Schritte)
|
||
- Ziel: 1–3 kurze Absaetze (Kern des Trainingsziels)
|
||
- Durchfuehrung: klare Schritte (nummerierte Liste oder kurze Absaetze)
|
||
- Vorbereitung/Aufbau: nur wenn noetig (Raum, Material, Aufbau) — sonst leerer String
|
||
- Trainer-Hinweise: Sicherheit, typische Fehler, Coaching-Tipps — knapp, Stichpunkte oder kurze Absaetze
|
||
|
||
Format (HTML fuer Rich-Text-Editor):
|
||
- Erlaubt: <p>, <ul>, <ol>, <li>, <strong>, <em>, <br>
|
||
- Keine Ueberschriften (h1–h6), keine Tabellen, kein Markdown, keine Code-Fences
|
||
- Medienverweise {{exerciseMedia:ID}} aus den Eingabetexten UNVERAENDERT an passender Stelle uebernehmen
|
||
|
||
Eingabe:
|
||
Titel: {{exercise_title}}
|
||
Fokuskontext: {{exercise_focus_area}}
|
||
|
||
Ziel (Plaintext, Ausgang): {{exercise_goal}}
|
||
Durchfuehrung (Plaintext, Ausgang): {{exercise_execution}}
|
||
Vorbereitung/Aufbau (Plaintext, Ausgang): {{exercise_preparation}}
|
||
Trainer-Hinweise (Plaintext, Ausgang): {{exercise_trainer_notes}}
|
||
{{#has_planning_context}}
|
||
Planungskontext (JSON):
|
||
{{planning_context_json}}
|
||
{{/has_planning_context}}
|
||
|
||
Antworte NUR mit einem JSON-Objekt (kein Text davor/danach):
|
||
{
|
||
"goal": "<p>…</p>",
|
||
"execution": "<ol><li>…</li></ol>",
|
||
"preparation": "<p>…</p> oder \"\"",
|
||
"trainer_notes": "<ul><li>…</li></ul> oder \"\""
|
||
}
|
||
|
||
Leere Felder als leerer String "" wenn nichts Sinnvolles ergibt.$t$
|
||
WHERE slug = 'exercise_instruction_rewrite';
|