2026-04-27 11:18:49 +02:00
# Shinkan Jinkendo - Projekt-Status
2026-05-07 13:10:37 +02:00
**Stand:** 2026-05-07
2026-05-08 10:56:43 +02:00
**Version (Code):** 0.8.59 (`backend/version.py`, APP_VERSION)
**DB-Schema-Version:** `20260508049` (`backend/version.py`, DB_SCHEMA_VERSION)
2026-04-27 11:18:49 +02:00
**Branch:** develop
---
## Executive Summary
2026-05-08 10:56:43 +02:00
**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).
2026-04-27 11:18:49 +02:00
2026-05-07 13:10:37 +02:00
**Parallel weiter relevant:** **Trainingsrahmenprogramm** (036– 037), **Progressionsgraph** (032– 034) — siehe ** `TRAINING_FRAMEWORK_SPEC.md` **.
2026-04-27 11:18:49 +02:00
2026-05-08 10:56:43 +02:00
**Referenz:** [`library/FEATURES_DELIVERED_2026-Q2.md` ](library/FEATURES_DELIVERED_2026-Q2.md ) §12 · Medien-Norm: [`technical/MEDIA_ASSETS_AND_ARCHIVE_SPEC.md` ](technical/MEDIA_ASSETS_AND_ARCHIVE_SPEC.md ) (inkl. ** §11 Inline-Medien**, Planung)
2026-04-28 16:18:25 +02:00
2026-05-08 10:56:43 +02:00
**Nächste Schritte — Medien & Archiv** (Stand 2026-05-07, für **neue Session** ):
2026-04-28 16:18:25 +02:00
2026-05-07 14:10:26 +02:00
1. ~~**Übung → `official` Promotion** inkl. Medien-Anhebung + **Copyright-Pflicht** bei `official` (Spec §4.2)~~ — umgesetzt (0.8.47).
2026-05-08 10:56:43 +02:00
2. ~~**Eigenständige Medienmanager-Seite**~~ — **Basis umgesetzt** (`/media`); Ausbau nach Bedarf: Quotas, feinere Bulk-Workflows, Sichtbarkeits-PATCH in der UI vereinheitlichen.
3. **Tests & Observability:** gezielte pytest-Abdeckung für Archiv/Verknüpfen/Lifecycle; Retention-Job (`scripts/media_retention_job.py`) in Betrieb/Doku verankern.
2026-05-07 13:10:37 +02:00
4. **S3 / externes Backend** hinter Speicher-Abstraktion (Spec §7) — nach stabiler Nutzung lokaler/NAS-Pfade.
2026-05-08 10:56:43 +02:00
5. **Inline-Medien im Fließtext** (Spec ** §11**) — nächste inhaltliche Ausbaustufe: Platzhalter-Syntax, ein zentraler Renderer, keine zweite Governance; Archiv-Basis ist gelegt.
2026-05-07 12:55:50 +02:00
2026-05-08 10:56:43 +02:00
**Inline:** verbindliche Leitplanken ** `MEDIA_ASSETS_AND_ARCHIVE_SPEC.md` §11**; Umsetzung bewusst nach stabiler Archiv-/Governance-Basis.
2026-05-07 12:55:50 +02:00
---
**Nächste Schritte (Auszug — Planung/Rahmen):**
2026-04-28 16:18:25 +02:00
2026-05-05 13:39:30 +02:00
1. Kalender‑ UI: „Aus Rahmen übernehmen“ an ** `from-framework-slot` ** anbinden; ggf. Bulk.
2. Governance: Sichtbarkeit **club/official** für Rahmen so ausprägen, dass andere Trainer kopieren dürfen (Policy + API).
3. Optional Backlog Graph: Alternativgruppen / bessere Visualisierung (**§4**).
2026-04-27 11:18:49 +02:00
---
2026-04-28 16:18:25 +02:00
## Deployed Migrations (Dev / Zielstand)
2026-04-27 11:18:49 +02:00
| Migration | Beschreibung | Dev | Prod |
|-----------|--------------|-----|------|
2026-04-28 16:18:25 +02:00
| 001– 017 | Initial Schema + Exercise System | ✅ | ✅ |
2026-04-27 11:18:49 +02:00
| 018 | Wiki Import Tracking | ✅ | ✅ |
| 019 | Exercises Optional Fields | ✅ | ✅ |
| 020 | Exercise Skills UNIQUE Constraint | ✅ | 🔲 |
| 021 | ~~Import Skills from Matrix~~ (DEPRECATED) | ⚠️ | ❌ |
2026-04-28 16:18:25 +02:00
| 022 | Skills Schema Complete | ✅ | 🔲 |
| 023 | Skills Complete Import (69 Skills) | ✅ | 🔲 |
| 028– 029 | exercise_media / skills Stufen | ✅ | 🔲 |
| **030** | **training_unit_exercises.exercise_variant_id** | ✅ | 🔲 |
2026-05-05 08:30:48 +02:00
| **032– 034** | **Progressionsgraph Übung→Übung** | ✅ | 🔲 |
2026-05-05 13:39:30 +02:00
| **035– 037** | **Rahmenprogramm, Bibliothek‑ Kopf, Slot‑ Blueprint‑ Units** | ✅ | 🔲 |
2026-05-08 10:56:43 +02:00
| **040– 046** | **u. a. Mitgliedschaften, Übungs-Governance, `media_assets` (046 z. B. Tags/GIN), Plattform-Speicherpfad** | ✅ Dev | 🔲 Prod |
2026-04-27 11:18:49 +02:00
---
2026-04-28 16:18:25 +02:00
## Aktuelle Datenbank-Stats (Dev, Richtwerte)
2026-04-27 11:18:49 +02:00
2026-04-28 16:18:25 +02:00
Die exakten Zahlen hängen von der Umgebung ab (siehe Admin/DB). Die Skills/Übungen-Importe aus früheren Meilensteinen bleiben die Datenbasis.
2026-04-27 11:18:49 +02:00
---
## Feature-Status
### ✅ Deployed Features (Dev)
**Kern-System:**
2026-04-28 16:18:25 +02:00
2026-04-27 11:18:49 +02:00
- [x] Auth & Profile Management
- [x] Organisation (Clubs, Divisions, Groups)
2026-04-28 16:18:25 +02:00
- [x] Kataloge (Focus Areas, Styles, Target Groups – M:N)
2026-04-27 11:18:49 +02:00
**Übungen:**
2026-04-28 16:18:25 +02:00
2026-04-27 11:18:49 +02:00
- [x] CRUD (Create, Read, Update, Delete)
- [x] M:N Beziehungen (Focus Areas, Styles, Target Groups, Skills)
2026-04-28 16:18:25 +02:00
- [x] **Varianten** (CRUD, Reorder, Voraussetzung) + Anzeige im Detail
2026-05-05 08:30:48 +02:00
- [x] **Progressionsgraph zwischen Übungen** (Bibliotheks-Container, Kanten, Sequenz-Bulk, Varianten-Knoten — Zwischenstand, siehe TRAINING_FRAMEWORK_SPEC §4)
2026-04-28 16:18:25 +02:00
- [x] Medien (Upload/Embed, rollenabhängige Größenlimits)
- [x] Suche & Filter (Multi-Filter, Chips, Fokus beim Suchen)
2026-04-27 11:18:49 +02:00
- [x] Exercise Blocks (Bausteine)
2026-04-28 16:18:25 +02:00
- [x] Saved Searches (wo implementiert)
**Trainingsplanung:**
2026-05-05 13:39:30 +02:00
- [x] Training Units / strukturierter Ablauf (Sektionen + Items)
2026-04-28 16:18:25 +02:00
- [x] **Optionale Zuordnung einer Übungsvariante** pro Eintrag (`exercise_variant_id`)
2026-05-05 13:39:30 +02:00
- [x] **Trainingsrahmenprogramm Bibliothek** (Ziele, Slots, Kontext) + **Slot‑ Blueprints** in `training_units` (036– 037)
- [x] **Materialisierung** aus Rahmen‑ Slot (`POST …/training-units/from-framework-slot`; UI‑ Anbindung optional)
2026-04-28 16:18:25 +02:00
- [ ] Kalender-View / erweiterte Roadmap (Backlog)
2026-04-27 11:18:49 +02:00
**MediaWiki Import:**
2026-04-28 16:18:25 +02:00
- [x] Import-Tracking, Übungs-Import, Skills-Migration (siehe ältere Session-Docs)
2026-04-27 11:18:49 +02:00
**Skills-System:**
2026-04-28 16:18:25 +02:00
- [x] Hierarchisches Schema, Fokusbereich-Zuordnung, Exercise-Skill mit Levels
2026-04-27 11:18:49 +02:00
**Admin-UI:**
2026-04-28 16:18:25 +02:00
- [x] Katalog-CRUD, Matrix/Import je nach Rolle
### 🔲 In Arbeit / Backlog
2026-04-27 11:18:49 +02:00
2026-05-08 10:56:43 +02:00
- [x] **Medien:** Papierkorb (§5), Retention-Job, Archiv-API, „Aus Archiv verknüpfen“, Picker/Vorschau in Übungsbearbeitung (0.8.42 ff.)
- [x] **Medien:** Promotion Übung↔Medien + Copyright-Pflicht `official` / Vereins-Copyright-Regeln (Spec §4.2, Übungen+Assets)
- [x] **Medien:** Medienbibliothek `/media` (Filter, Tags, Copyright, Bulk-Lifecycle/PATCH, Lesemodus für eingeschränkte Rollen bei `official` )
- [x] **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)
2026-04-28 16:18:25 +02:00
- [ ] Admin-UI für Skill-Kategorien (CRUD) – falls noch offen
- [ ] Responsive Design / Dark Mode / PWA
- [ ] KI-Suche (`ai_search`) über reine Volltextsuche hinaus
2026-04-27 11:18:49 +02:00
2026-04-28 16:18:25 +02:00
### 📋 Geplant (Backlog)
2026-04-27 11:18:49 +02:00
2026-04-28 16:18:25 +02:00
- Trainingsplan-Generator, Bulk-Export, Review-Workflow (unverändert strategisch geplant)
2026-04-27 11:18:49 +02:00
---
## Technische Schulden
| Bereich | Issue | Priorität |
|---------|-------|-----------|
2026-04-28 16:18:25 +02:00
| Skills | Migration 021 bereinigen (falls noch referenziert) | Niedrig |
| Import | Reimport-Flag / DNS – je nach Prod-Realität prüfen | Mittel |
2026-04-27 11:18:49 +02:00
---
2026-04-28 16:18:25 +02:00
## Lessons Learned (Auszug)
2026-04-27 11:18:49 +02:00
2026-04-28 16:18:25 +02:00
- **Listen-UX:** Bedingtes Rendern der **gesamten Seite** bei `loading` zerstört Fokus und Scroll – separates `listFetching` für die Trefferliste.
- **Upload-Limits:** Vergleich immer in **MB** vor Umrechnung in Bytes; Admin-Limit nie unter Nutzer-Limit.
2026-04-27 11:18:49 +02:00
---
## Deployment-Status
2026-04-28 16:18:25 +02:00
### Dev
2026-05-08 10:56:43 +02:00
Branch `develop` ; Migrations bis mindestens **046** auf dem aktuellen Entwicklungsstand; Details in `backend/version.py` .
2026-04-28 16:18:25 +02:00
### Prod
Deployment der oben genannten Migrationen und Datenabgleich nach internem Prozess.
2026-04-27 11:18:49 +02:00
---
## Dokumentation-Status
| Dokument | Pfad | Stand | Status |
|----------|------|-------|--------|
2026-05-08 10:56:43 +02:00
| Lieferliste Q2 2026 | `library/FEATURES_DELIVERED_2026-Q2.md` | 2026-05-07 | ✅ Aktualisiert (§12 Medien 0.8.41– 0.8.59) |
2026-05-05 13:39:30 +02:00
| Trainingsrahmen + Graph | `technical/TRAINING_FRAMEWORK_SPEC.md` | 2026-05-05 | ✅ §2 Blueprint |
2026-04-28 16:18:25 +02:00
| Anforderungen (Index) | `functional/SHINKAN_REQUIREMENTS.md` | 2026-04-27 | ✅ Neu |
2026-05-08 10:56:43 +02:00
| 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 |
2026-05-05 08:30:48 +02:00
| 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 |
2026-04-28 16:18:25 +02:00
| Search & Filter | `technical/SEARCH_FILTER_SPEC.md` | 2026-04-27 | ✅ Aktualisiert (Liste UX) |
2026-05-08 10:56:43 +02:00
| 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 |
2026-04-27 11:18:49 +02:00
---
## Team & Kontakte
**Product Owner:** Lars
2026-04-28 16:18:25 +02:00
**Wiki (Datenquelle):** https://karatetrainer.net
2026-04-27 11:18:49 +02:00
---
2026-05-08 10:56:43 +02:00
**Letzte Aktualisierung:** 2026-05-07 (Medien-Doku abgestimmt, §12 FEATURES, Handover)