# Shinkan Jinkendo - Projekt-Status **Stand:** 2026-04-27 **Version (Code):** 0.7.9 (`backend/version.py`, APP_VERSION) **DB-Schema-Version:** `20260427030` **Branch:** develop --- ## Executive Summary **Aktueller Meilenstein:** Übungsvarianten Ende-zu-Ende (API, DB 030, Planung, UI) sowie Listen-Suche ohne Full-Page-Reload ✅ **Letzte dokumentierte Änderungen (April 2026):** - ✅ Migration **030**: `training_unit_exercises.exercise_variant_id` (FK zu `exercise_variants`, ON DELETE SET NULL). - ✅ **GET `/api/exercises?include_variants=true`** für Trainingsplanung und Übersichten. - ✅ Varianten-**CRUD** + **Reorder**; Validierung in der Trainingsplanung (Variante gehört zur Übung). - ✅ **Übungsliste**: Filter-Chips, Modal, `listFetching` statt Full-Page-Spinner, ``-Titel aus Treffern. - ✅ **Medien-Upload**: rollenbasierte Limits (Standard 50 MB, Admin bis 1024 MB, Env-Vars). - ✅ **RichTextEditor**: Selection-Restore, Listen-Styling im Editor. **Referenz:** Ausführliche technische Liste → [`library/FEATURES_DELIVERED_2026-Q2.md`](library/FEATURES_DELIVERED_2026-Q2.md) **Nächste Schritte (Auszug):** 1. Prod-Deployment der Migrationen **020–030** und Smoke-Tests. 2. Optional: Server-Autocomplete für Suche; Progressions-Serien als Blöcke (siehe Feature-Doc). --- ## 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 | ~~Import Skills from Matrix~~ (DEPRECATED) | ⚠️ | ❌ | | 022 | Skills Schema Complete | ✅ | 🔲 | | 023 | Skills Complete Import (69 Skills) | ✅ | 🔲 | | 028–029 | exercise_media / skills Stufen | ✅ | 🔲 | | **030** | **training_unit_exercises.exercise_variant_id** | ✅ | 🔲 | --- ## 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:** - [x] Auth & Profile Management - [x] Organisation (Clubs, Divisions, Groups) - [x] Kataloge (Focus Areas, Styles, Target Groups – M:N) **Übungen:** - [x] CRUD (Create, Read, Update, Delete) - [x] M:N Beziehungen (Focus Areas, Styles, Target Groups, Skills) - [x] **Varianten** (CRUD, Reorder, Voraussetzung) + Anzeige im Detail - [x] Medien (Upload/Embed, rollenabhängige Größenlimits) - [x] Suche & Filter (Multi-Filter, Chips, Fokus beim Suchen) - [x] Exercise Blocks (Bausteine) - [x] Saved Searches (wo implementiert) **Trainingsplanung:** - [x] Training Units / Einbinden von Übungen - [x] **Optionale Zuordnung einer Übungsvariante** pro Eintrag (`exercise_variant_id`) - [ ] Kalender-View / erweiterte Roadmap (Backlog) **MediaWiki Import:** - [x] Import-Tracking, Übungs-Import, Skills-Migration (siehe ältere Session-Docs) **Skills-System:** - [x] Hierarchisches Schema, Fokusbereich-Zuordnung, Exercise-Skill mit Levels **Admin-UI:** - [x] Katalog-CRUD, Matrix/Import je nach Rolle ### 🔲 In Arbeit / 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 `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. --- ## Deployment-Status ### Dev Branch `develop`; Migrations bis mindestens **030** 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-04-27 | ✅ Neu | | Anforderungen (Index) | `functional/SHINKAN_REQUIREMENTS.md` | 2026-04-27 | ✅ Neu | | Database Schema | `technical/DATABASE_SCHEMA.md` | 2026-04-27 | ✅ Aktualisiert (030) | | Domain Model | `functional/DOMAIN_MODEL.md` | 2026-04-27 | ✅ Referenz | | API Übungen | `technical/EXERCISES_API_SPEC.md` | 2026-04-27 | ✅ Aktualisiert (v1.3) | | Frontend Routing | `technical/EXERCISES_FRONTEND_ROUTING.md` | 2026-04-27 | ✅ Aktualisiert | | Search & Filter | `technical/SEARCH_FILTER_SPEC.md` | 2026-04-27 | ✅ Aktualisiert (Liste UX) | | Media Upload | `technical/MEDIA_UPLOAD_SPEC.md` | 2026-04-27 | ✅ Aktualisiert (Limits) | | Projektstatus | `PROJECT_STATUS.md` | 2026-04-27 | ✅ Diese Datei | --- ## Team & Kontakte **Product Owner:** Lars **Wiki (Datenquelle):** https://karatetrainer.net --- **Letzte Aktualisierung:** 2026-04-27