shinkan-jinkendo/.claude/docs/working/EXERCISE_ENRICHMENT_ADMIN.md
Lars 46fae3da33
All checks were successful
Deploy Development / deploy (push) Successful in 51s
Test Suite / pytest-backend (push) Successful in 44s
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 1m16s
Test Suite / pytest-backend (pull_request) Successful in 36s
Test Suite / lint-backend (pull_request) Successful in 0s
Test Suite / build-frontend (pull_request) Successful in 13s
Test Suite / k6 /health Baseline (pull_request) Successful in 33s
Test Suite / playwright-tests (pull_request) Successful in 1m23s
Enhance Exercise Enrichment Admin Functionality and Update Documentation
- Implemented a maximum of 3 exercises per preview request to prevent Gateway-504 errors, improving the stability of the exercise enrichment process.
- Adjusted batch sizes for applying exercises and previewing to optimize performance and resource management.
- Updated the frontend to reflect changes in preview handling, including user notifications about chunk sizes and potential timeouts.
- Incremented version to 0.8.180 and updated changelog to document these enhancements and fixes.
2026-05-23 07:46:35 +02:00

3.0 KiB

Superadmin: Übungs-Anreicherung per KI

Stand: 2026-05-23 · App 0.8.178

Zweck

Plattform-weites Werkzeug für Superadmins, um Übungen (typisch draft, ohne Skills) batchweise per KI mit Fähigkeiten anzureichern und kontrolliert auf in_review zu setzen.

Verbessert indirekt die Planungs-KI (POST /api/planning/exercise-suggest), die gegen Skill-Profile rankt — unvollständige exercise_skills führen dort zu Volltext-dominiertem Ranking.

UI

  • Route: /admin/exercise-enrichment (nur Superadmin)
  • Admin-Menü: „Übungs-Anreicherung“

API

Prefix: /api/admin/exercise-enrichment

Methode Pfad Beschreibung
GET /candidates Paginierte Kandidaten (Filter: status, visibility, focus_area, without_skills, with_ai_suggested_skills, include_club, search)
POST /preview Dry-Run — { exercise_ids[], modes: { skills, summary }, merge_mode }
POST /apply { items: [{ exercise_id, merged_skills }], merge_mode, set_status }

Auth: require_auth + is_superadminkein TenantContext (EXEMPT, siehe ACCESS_LAYER_ENDPOINT_AUDIT.md).

KI

Wiederverwendet run_exercise_form_ai_suggestion → Prompts exercise_skill_suggestions (MVP Pflicht), optional exercise_summary. Skill-Katalog via build_contextual_skills_catalog_block / ai_skill_retrieval_profiles.

Merge-Modi (Skills)

  • additive (Default): manuelle Skills bleiben; KI ergänzt neue; bestehende ai_suggested-Links werden aktualisiert
  • replace_ai_only: nur ai_suggested=true entfernen, dann KI-Set anwenden
  • replace_all: alle Skills ersetzen (explizit)

Defaults

  • Kandidaten: Status primär (Default draft); Sichtbarkeit Default private, wählbar bis „Alle“
  • Skill-Merge Default: replace_all (alle Skills KI-neu, ai_suggested=true — unterscheidbar von manuell)
  • Nach Apply: set_status=in_review (nie automatisch approved)
  • Batch: keine Gesamtgrenze (bis 10.000 IDs); Analyze + explizite Nutzerbestätigung
  • Preview: max. 3 Übungen/HTTP-Request (parallel LLM), Frontend chunked — vermeidet Gateway-504 (~60s Fritz!Box)
  • Apply: HTTP-Chunks à 25 (nur DB, kein LLM)

Inhalte (modular)

Modus Prompt Apply-Felder
Skills exercise_skill_suggestions exercise_skills inkl. Intensität, required/target_level, ai_suggested
Summary exercise_summary summary, summary_ai_generated=true
Anleitung exercise_instruction_rewrite goal, execution, preparation, trainer_notes

API (ergänzt)

Methode Pfad Beschreibung
GET /candidate-ids Alle IDs zum Filter (Select-all)
POST /analyze { exercise_ids[], modes } → Kosten-Schätzung vor Start

Keine Migration

Bestehende Spalte exercise_skills.ai_suggested reicht; kein Enrichment-Log in MVP.

Tests

backend/tests/test_exercise_enrichment_admin.py — 403, Merge-Logik, Status draft→in_review.