- Introduced a centralized media archive (`/media`) with lifecycle management, including soft delete and recovery options. - Enhanced media upload functionality to support multiple files and automatic type inference. - Updated documentation to reflect the new media architecture and inline media linking specifications. - Version bump to 0.8.59 to accommodate changes in media handling and database schema. Co-authored-by: Cursor <cursoragent@cursor.com>
8.7 KiB
Shinkan Jinkendo - Projekt-Status
Stand: 2026-05-07
Version (Code): 0.8.59 (backend/version.py, APP_VERSION)
DB-Schema-Version: 20260508049 (backend/version.py, DB_SCHEMA_VERSION)
Branch: develop
Executive Summary
Aktueller Meilenstein (Medien): Das Medien-Archiv (media_assets + exercise_media.media_asset_id) ist produktiv nutzbar: zentrale Bibliothek /media (Kacheln/Liste, Filter inkl. Lifecycle, Suche/Tags, Copyright, Bulk-Lifecycle und Bulk-PATCH), Verknüpfung aus dem Archiv in der Übungsbearbeitung (POST …/media/from-asset), deduplizierter Speicher unter library/… (Vereinsordner aus Name, Medienkind-Unterordner, Governance-Umzug bei Sichtbarkeitsänderung), Papierkorb & Lifecycle (Reaktivierung, Soft-Trash, Superadmin-Purge). Governance: Sichtbarkeit official nur noch Superadmin (Übungen und Medien); Plattform-Admin wie Trainer für Vereins-/Private-Inhalte. Vereinsübungen mit Datei-Assets: Copyright-Pflicht (API/UI). Aktiver Verein: Dropdown, Profilfeld active_club_id, Header X-Active-Club-Id und effective_club_id sind nach 0.8.59 synchronisiert (inkl. Plattform-Admin ohne Header beim ersten Request).
Parallel weiter relevant: Trainingsrahmenprogramm (036–037), Progressionsgraph (032–034) — siehe TRAINING_FRAMEWORK_SPEC.md.
Referenz: library/FEATURES_DELIVERED_2026-Q2.md §12 · Medien-Norm: technical/MEDIA_ASSETS_AND_ARCHIVE_SPEC.md (inkl. §11 Inline-Medien, Planung)
Nächste Schritte — Medien & Archiv (Stand 2026-05-07, für neue Session):
Übung →— umgesetzt (0.8.47).officialPromotion inkl. Medien-Anhebung + Copyright-Pflicht beiofficial(Spec §4.2)Eigenständige Medienmanager-Seite— Basis umgesetzt (/media); Ausbau nach Bedarf: Quotas, feinere Bulk-Workflows, Sichtbarkeits-PATCH in der UI vereinheitlichen.- Tests & Observability: gezielte pytest-Abdeckung für Archiv/Verknüpfen/Lifecycle; Retention-Job (
scripts/media_retention_job.py) in Betrieb/Doku verankern. - S3 / externes Backend hinter Speicher-Abstraktion (Spec §7) — nach stabiler Nutzung lokaler/NAS-Pfade.
- Inline-Medien im Fließtext (Spec §11) — nächste inhaltliche Ausbaustufe: Platzhalter-Syntax, ein zentraler Renderer, keine zweite Governance; Archiv-Basis ist gelegt.
Inline: verbindliche Leitplanken MEDIA_ASSETS_AND_ARCHIVE_SPEC.md §11; Umsetzung bewusst nach stabiler Archiv-/Governance-Basis.
Nächste Schritte (Auszug — Planung/Rahmen):
- Kalender‑UI: „Aus Rahmen übernehmen“ an
from-framework-slotanbinden; ggf. Bulk. - Governance: Sichtbarkeit club/official für Rahmen so ausprägen, dass andere Trainer kopieren dürfen (Policy + API).
- Optional Backlog Graph: Alternativgruppen / bessere Visualisierung (§4).
Deployed Migrations (Dev / Zielstand)
| Migration | Beschreibung | Dev | Prod |
|---|---|---|---|
| 001–017 | Initial Schema + Exercise System | ✅ | ✅ |
| 018 | Wiki Import Tracking | ✅ | ✅ |
| 019 | Exercises Optional Fields | ✅ | ✅ |
| 020 | Exercise Skills UNIQUE Constraint | ✅ | 🔲 |
| 021 | ⚠️ | ❌ | |
| 022 | Skills Schema Complete | ✅ | 🔲 |
| 023 | Skills Complete Import (69 Skills) | ✅ | 🔲 |
| 028–029 | exercise_media / skills Stufen | ✅ | 🔲 |
| 030 | training_unit_exercises.exercise_variant_id | ✅ | 🔲 |
| 032–034 | Progressionsgraph Übung→Übung | ✅ | 🔲 |
| 035–037 | Rahmenprogramm, Bibliothek‑Kopf, Slot‑Blueprint‑Units | ✅ | 🔲 |
| 040–046 | u. a. Mitgliedschaften, Übungs-Governance, media_assets (046 z. B. Tags/GIN), Plattform-Speicherpfad |
✅ Dev | 🔲 Prod |
Aktuelle Datenbank-Stats (Dev, Richtwerte)
Die exakten Zahlen hängen von der Umgebung ab (siehe Admin/DB). Die Skills/Übungen-Importe aus früheren Meilensteinen bleiben die Datenbasis.
Feature-Status
✅ Deployed Features (Dev)
Kern-System:
- Auth & Profile Management
- Organisation (Clubs, Divisions, Groups)
- Kataloge (Focus Areas, Styles, Target Groups – M:N)
Übungen:
- CRUD (Create, Read, Update, Delete)
- M:N Beziehungen (Focus Areas, Styles, Target Groups, Skills)
- Varianten (CRUD, Reorder, Voraussetzung) + Anzeige im Detail
- Progressionsgraph zwischen Übungen (Bibliotheks-Container, Kanten, Sequenz-Bulk, Varianten-Knoten — Zwischenstand, siehe TRAINING_FRAMEWORK_SPEC §4)
- Medien (Upload/Embed, rollenabhängige Größenlimits)
- Suche & Filter (Multi-Filter, Chips, Fokus beim Suchen)
- Exercise Blocks (Bausteine)
- Saved Searches (wo implementiert)
Trainingsplanung:
- Training Units / strukturierter Ablauf (Sektionen + Items)
- Optionale Zuordnung einer Übungsvariante pro Eintrag (
exercise_variant_id) - Trainingsrahmenprogramm Bibliothek (Ziele, Slots, Kontext) + Slot‑Blueprints in
training_units(036–037) - Materialisierung aus Rahmen‑Slot (
POST …/training-units/from-framework-slot; UI‑Anbindung optional) - Kalender-View / erweiterte Roadmap (Backlog)
MediaWiki Import:
- Import-Tracking, Übungs-Import, Skills-Migration (siehe ältere Session-Docs)
Skills-System:
- Hierarchisches Schema, Fokusbereich-Zuordnung, Exercise-Skill mit Levels
Admin-UI:
- Katalog-CRUD, Matrix/Import je nach Rolle
🔲 In Arbeit / Backlog
- Medien: Papierkorb (§5), Retention-Job, Archiv-API, „Aus Archiv verknüpfen“, Picker/Vorschau in Übungsbearbeitung (0.8.42 ff.)
- Medien: Promotion Übung↔Medien + Copyright-Pflicht
official/ Vereins-Copyright-Regeln (Spec §4.2, Übungen+Assets) - Medien: Medienbibliothek
/media(Filter, Tags, Copyright, Bulk-Lifecycle/PATCH, Lesemodus für eingeschränkte Rollen beiofficial) - Medien: Speicherpfad-Konvention
library/…, Plattform-Speicher-Konfiguration (platform_media_storage), Mandanten-/Governance-Umzug bei Asset-Änderungen - Medien: Inline im Fließtext — Spec §11 (nächste Session / Backlog)
- Admin-UI für Skill-Kategorien (CRUD) – falls noch offen
- Responsive Design / Dark Mode / PWA
- KI-Suche (
ai_search) über reine Volltextsuche hinaus
📋 Geplant (Backlog)
- Trainingsplan-Generator, Bulk-Export, Review-Workflow (unverändert strategisch geplant)
Technische Schulden
| Bereich | Issue | Priorität |
|---|---|---|
| Skills | Migration 021 bereinigen (falls noch referenziert) | Niedrig |
| Import | Reimport-Flag / DNS – je nach Prod-Realität prüfen | Mittel |
Lessons Learned (Auszug)
- Listen-UX: Bedingtes Rendern der gesamten Seite bei
loadingzerstört Fokus und Scroll – separateslistFetchingfür die Trefferliste. - Upload-Limits: Vergleich immer in MB vor Umrechnung in Bytes; Admin-Limit nie unter Nutzer-Limit.
Deployment-Status
Dev
Branch develop; Migrations bis mindestens 046 auf dem aktuellen Entwicklungsstand; Details in backend/version.py.
Prod
Deployment der oben genannten Migrationen und Datenabgleich nach internem Prozess.
Dokumentation-Status
| Dokument | Pfad | Stand | Status |
|---|---|---|---|
| Lieferliste Q2 2026 | library/FEATURES_DELIVERED_2026-Q2.md |
2026-05-07 | ✅ Aktualisiert (§12 Medien 0.8.41–0.8.59) |
| Trainingsrahmen + Graph | technical/TRAINING_FRAMEWORK_SPEC.md |
2026-05-05 | ✅ §2 Blueprint |
| Anforderungen (Index) | functional/SHINKAN_REQUIREMENTS.md |
2026-04-27 | ✅ Neu |
| Database Schema | technical/DATABASE_SCHEMA.md |
2026-05-07 | ✅ Hinweis 040–046 Medien (Kurz) |
| Domain Model | functional/DOMAIN_MODEL.md |
2026-05-07 | ✅ Abschnitt Medien-Archiv |
| API Übungen | technical/EXERCISES_API_SPEC.md |
2026-04-30 | ✅ Ergänzt Progressions-API |
| Frontend Routing | technical/EXERCISES_FRONTEND_ROUTING.md |
2026-04-30 | ✅ Ergänzt UI-Hinweise |
| Search & Filter | technical/SEARCH_FILTER_SPEC.md |
2026-04-27 | ✅ Aktualisiert (Liste UX) |
| Media Upload | technical/MEDIA_UPLOAD_SPEC.md |
2026-05-07 | ✅ Verweis Archiv/Inline |
| Medien-Archiv & Lifecycle | technical/MEDIA_ASSETS_AND_ARCHIVE_SPEC.md |
2026-05-07 | ✅ Ist-Changelog + §11 Inline geplant |
| Projektstatus | PROJECT_STATUS.md |
2026-05-07 | ✅ Medien + Tenant-Dropdown |
Team & Kontakte
Product Owner: Lars
Wiki (Datenquelle): https://karatetrainer.net
Letzte Aktualisierung: 2026-05-07 (Medien-Doku abgestimmt, §12 FEATURES, Handover)