|
Some checks failed
Deploy Development / deploy (push) Successful in 39s
Test Suite / pytest-backend (push) Successful in 34s
Test Suite / lint-backend (push) Successful in 1s
Test Suite / build-frontend (push) Successful in 11s
Test Suite / playwright-tests (push) Failing after 1m23s
Implementiert server-seitige Rechteerklärungspflicht für alle Medien-Uploads
und Sichtbarkeits-Promotions (konservative Erstannahme: alle Uploads).
Backend:
- backend/media_rights.py (NEU): Kernmodul — validate_rights_declaration,
check_rights_coverage, assert_rights_for_promotion, assert_rights_for_exercise_link,
write_rights_declaration, update_rights_quick_fields
- backend/migrations/048_media_rights_declarations.sql (NEU): Tabelle
media_asset_rights_declarations (Append-only Audit-Log), Felder
rights_status/rights_visibility_level in media_assets
- backend/routers/media_assets.py: P-06-Pflichtprüfung in PATCH (single + bulk),
POST /api/media-assets/{id}/rights-declarations (Re-Deklaration),
GET /api/admin/media-rights/legacy-summary|legacy-assets (Admin-Endpoints)
- backend/routers/exercises.py: P-06-Felder in upload_exercise_media,
assert_rights_for_exercise_link in attach_exercise_media_from_asset
- backend/main.py: admin_rights_router registriert
Frontend:
- frontend/src/components/RightsDeclarationDialog.jsx (NEU): 9-Felder-Dialog
(konservativ: immer alle Fragen), Client-Validierung, VORLÄUFIG-Hinweis
- frontend/src/pages/MediaLibraryPage.jsx: Dialog-Intercept vor Upload,
Altbestand-Indikator (legacy_unreviewed)
- frontend/src/utils/api.js: P-06-Felder in bulkUploadMediaAssets weitergeleitet
Tests:
- backend/tests/test_media_rights_declaration.py (NEU): 28 Unit-/Integrationstests
- backend/tests/test_media_assets_archive.py: P-06 fetchone-Slots + Mock ergänzt
- backend/tests/test_media_assets_copyright_promotion.py: check_rights_coverage gemockt
- tests/dev-smoke-test.spec.js: 5 P-06 E2E-Tests ergänzt
Dokumentation:
- docs/compliance-implementation.md: P-06-Abschnitt
- docs/compliance-package-register.md: Status ⚠️ teilweise umgesetzt (KRIT-04 offen)
- docs/compliance-roadmap.md: P-06 im Freigaben-Log
Offen: KRIT-04 (rechtliche Finalisierung Einwilligungsformulierung) — technisch
vollständig, Rechtstext VORLÄUFIG.
version: 0.8.75
module: media_rights 1.0.0, media_assets 1.13.0, exercises 2.20.0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||
|---|---|---|
| .claude | ||
| .cursor/rules | ||
| .gitea/workflows | ||
| backend | ||
| docs | ||
| frontend | ||
| screenshots | ||
| test-results | ||
| tests | ||
| .env.example | ||
| .gitignore | ||
| CLAUDE.md | ||
| docker-compose.dev-env.yml | ||
| docker-compose.yml | ||
| mitai-jinkendo.code-workspace | ||
| package-lock.json | ||
| package.json | ||
| playwright.config.js | ||
| README.md | ||
| skills_mapping_clean_utf8.csv | ||
| skills_mapping_clean.csv | ||
| test-frontend.js | ||
| test-login.js | ||
| test-shinkan.js | ||
Shinkan Jinkendo (真観)
Trainer- und Vereinsplattform für Kampfsport-Trainingsplanung
Teil der Jinkendo-App-Familie (人拳道)
Was ist Shinkan?
Shinkan ist eine moderne Web- und Mobile-App für Kampfsport-Trainer und Vereine. Im Fokus stehen:
- Übungsverwaltung: Zentrale Übungsbibliothek mit Suche und Filter
- Trainingsplanung: Effiziente Planung für Gruppen und Termine
- Kataloge: Fähigkeiten und Trainingsmethoden strukturiert verwalten
- Standardisierung: Vereinsstandards und wiederverwendbare Vorlagen
- Freigabe: Gesteuerte Veröffentlichung von Inhalten
- Medien: Zentrale Medienbibliothek (
/media), Archiv mit Lifecycle/Papierkorb, Verknüpfung in Übungen — Norm:.claude/docs/technical/MEDIA_ASSETS_AND_ARCHIVE_SPEC.md· Einstieg:docs/HANDOVER.md
Nicht in Shinkan
- Kein persönliches Sportler-Tracking (dafür: Mitai Jinkendo)
- Kein Gürtel-Tracking im MVP
- Keine individuellen Technik-Fortschritte im MVP
Tech-Stack
- Frontend: React 18 + Vite + PWA
- Backend: FastAPI (Python 3.12)
- Datenbank: PostgreSQL 16
- Container: Docker + Docker Compose
- Auth: Token-basiert + bcrypt
Installation (Lokal)
Voraussetzungen
- Node 20+
- Python 3.12+
- PostgreSQL 16
- Docker + Docker Compose
Setup
# Repository clonen
git clone http://192.168.2.144:3000/Lars/shinkan-jinkendo.git
cd shinkan-jinkendo
# Environment-Variablen
cp .env.example .env
# .env anpassen!
# Backend
cd backend
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
# Frontend
cd ../frontend
npm install
# Datenbank
docker compose up -d postgres
# Migrations (automatisch beim Start)
cd ../backend
python main.py
Development
# Backend (Terminal 1)
cd backend
source venv/bin/activate
uvicorn main:app --reload --port 8098
# Frontend (Terminal 2)
cd frontend
npm run dev
Frontend: http://localhost:3098
Backend: http://localhost:8098
Docker (Empfohlen)
# Development
docker compose -f docker-compose.dev-env.yml up --build
# Production
docker compose up --build
Deployment
Production: https://shinkan.jinkendo.de
Development: https://dev.shinkan.jinkendo.de
Auto-Deploy via Gitea Actions:
develop→ Dev-Umgebungmain→ Prod-Umgebung
Dokumentation
- Setup:
.claude/docs/working/SHINKAN_PROJECT_SETUP.md - Anforderungen:
.claude/docs/functional/SHINKAN_REQUIREMENTS.md - Architektur:
.claude/rules/ARCHITECTURE.md
Lizenz
Proprietary – Lars Stommer
Kontakt
- Entwickler: Lars Stommer
- E-Mail: stommer@gmail.com
- Gitea: http://192.168.2.144:3000/Lars/shinkan-jinkendo