- Introduced new API endpoints for managing exercise media, including upload, update, delete, and reorder functionalities. - Updated the exercise creation and update logic to ensure goal and execution fields are validated and normalized. - Refactored frontend components to support the new exercise media features, including a dedicated import section for complete stack files. - Removed the deprecated ExercisesPage component and replaced it with a more modular structure for exercise management. - Incremented database schema version to 20260427028 and updated changelog to reflect these changes.
5.3 KiB
5.3 KiB
Shinkan Jinkendo – Entwicklungsstand & Handover
Stand: 2026-04-27
App-Version: 0.7.6 (backend/version.py)
DB-Schema-Version: 20260427027 (Migration 027)
Diese Datei ist die Einstiegs-Doku für neue Chat-Sessions: Anforderungen im Detail stehen in .claude/docs/ (siehe unten); hier der implementierte Stand und nächste Baustellen.
1. Pflichtlektüre (Kontext & Anforderungen)
| Thema | Pfad |
|---|---|
| Projekt-Setup, Domain grob | .claude/docs/working/SHINKAN_PROJECT_SETUP.md |
| Projekt-Status (Skills, Wiki, Stats) | .claude/docs/PROJECT_STATUS.md |
| Übungen: API, DB, Architektur, Routing | .claude/docs/technical/EXERCISES_API_SPEC.md, EXERCISES_DATABASE_FINAL.md, EXERCISES_ARCHITECTURE.md, EXERCISES_FRONTEND_ROUTING.md |
| Media / Upload | .claude/docs/technical/MEDIA_UPLOAD_SPEC.md |
| MediaWiki-Import | .claude/docs/technical/MEDIAWIKI_IMPORT_SPEC.md |
2. Implementierter Stand: Fähigkeiten & Reifegradmodelle
2.1 Datenbank
maturity_models,model_levels,model_skills,model_skill_levels: Matrix-Inhalt pro Modell.- Kontext am Modell (Legacy, M:N):
maturity_model_focus_areas,maturity_model_style_directions,maturity_model_target_groups(Migration 025). - Hierarchische Kontext-Zuordnung (Resolve):
maturity_model_context_bindingsmit optionalstyle_direction_id,training_type_id(Migration 026, 027). - 027: u. a.
Fokus + Trainingsstilohne Stilrichtung (partielle Unique-Indizes).
2.2 Resolve-Logik (Backend)
GET /api/maturity-models/resolve: Bindings zum Fokus, die zur Anfrage passen; Merge nach Spezifität (weniger spezifisch zuerst); spezifischere Zeilen überschreiben Zelltexte.- Matching: Gesetzte Spalten einer Binding-Zeile müssen mit der Anfrage übereinstimmen;
NULLin der Zeile = Wildcard (z. B. Fokus+Trainingsstil gilt für alle Stilrichtungen, aber nur für diesen Trainingsstil). - Legacy-Fallback: Nur wenn für den Fokus keine einzige Zeile in
maturity_model_context_bindingsexistiert. Sonst bei fehlendem Treffernull(kein stilles Legacy mit falschem Trainingsstil).
2.3 Export / Import (einzelnes Modell & aufgelöst)
GET /api/maturity-models/{id}/export:shinkan.maturity_model.v1inkl.context_bindings_for_model(IDs).GET /api/maturity-models/export-resolved:shinkan.maturity_matrix_resolved.v1(Query:focus_area_id, optionalstyle_direction_id,training_type_id).POST /api/maturity-models/import:create|replace, optionalimport_bindings(nur beimaturity_model.v1).
2.4 Komplett-Stack Test → Prod
GET /api/admin/matrix-stack/export:shinkan.matrix_stack.v1– Katalog (skill_main_categories,skill_categories,skills,skill_level_definitions) + alle Reifegradmodelle + Bindings mit Namen (Fokus/Stil/Trainingsstil).POST /api/admin/matrix-stack/import: Upsert Katalog per Slug; Skills per Kategorie+Name; Modelle neu anlegen; Bindings per Katalognamen. Optionalreplace_all_maturity_models+confirm_replace_all: "DELETE_MATURITY_STACK"(nur Superadmin).- Router:
backend/routers/matrix_stack_bundle.py, inmain.pyregistriert.
2.5 Frontend (Admin)
frontend/src/pages/AdminMaturityModelsPage.jsx: Tabs u. a. Katalog, Modelle, Kontext-Zuordnung, Matrix-Ansicht und Export.MaturityModelBindingsAdmin.jsx: Bindings CRUD, Erklärung Merge/Legacy.MaturityMatrixToolsAdmin.jsx: Kontext auflösen, hierarchische Matrix-Ansicht, Export einzelnes Modell / aufgelöst, Einzelmodell-Import; Komplett-Stack mit eigenem Export-Button und eigenem Dateifeld für Stack-Import (POST /api/admin/matrix-stack/import).frontend/src/utils/api.js: u. a.exportMatrixStackBundle,importMatrixStackBundle, Reifegrad-APIs.
3. Stand: Übungen (Lücke für nächste Session)
Ist (laut Projektdoku und aktuellem Produktziel):
- Backend: Übungen-CRUD, M:N, Suche, Blöcke, Medien-Struktur u. a. sind in
PROJECT_STATUS.mdals umgesetzt geführt; viele Übungen stammen aus MediaWiki-Import (Wiki-Tracking-Tabellen). - Soll / Nutzerfeedback: In der Praxis fehlt oder ist unzureichend: stabile Liste, gerenderte Detailansicht, Bearbeiten/Anlegen, Medien zuweisen/Upload – konkrete Fehler (404, leere Liste, falsche Route) sind vor Ort zu verifizieren.
Nächste Session sollte:
- Aktuelle Routen und Seiten prüfen (
App.jsx,EXERCISES_FRONTEND_ROUTING.md). GET /api/exercises(Filter, Auth) und eine Beispiel-Übung gegen die Dev-DB testen.- UI schrittweise: Liste → Detail → Formular → Medien (an Specs in
.claude/docs/technical/ausrichten).
4. Technische Referenz (kurz)
| Bereich | Einstieg |
|---|---|
| Backend API | backend/main.py, backend/routers/maturity_models.py, matrix_stack_bundle.py, exercises.py, catalogs.py, skills.py |
| Migrationen | backend/migrations/ (u. a. 024–027 Reifegrad/Bindings) |
| Frontend API | frontend/src/utils/api.js |
| Version / Changelog | backend/version.py |
5. Veraltete Hinweise
Die Datei .claude/docs/working/HANDOVER_NEXT_SESSION.md (2026-04-22) ist historisch; für den aktuellen Stand gilt docs/HANDOVER.md.
Ende Handover-Dokument.