docs: Add comprehensive session handover document
All checks were successful
Deploy Development / deploy (push) Successful in 35s

This commit is contained in:
Lars 2026-04-22 15:09:07 +02:00
parent 08326bdcc6
commit b1142070e9

View File

@ -0,0 +1,348 @@
# Shinkan Jinkendo - Session Handover
**Datum:** 2026-04-22
**Kontext:** App-Entwicklung nach Login-Setup - Kern-Features implementieren
---
## 🎯 Projekt-Mission
**Shinkan Jinkendo** (真観) - Trainer- und Vereinsplattform für Kampfsport-Trainingsplanung.
**NICHT:** Persönliches Athleten-Tracking (das ist Mitai)
**SONDERN:** Trainer verwalten Vereine, Gruppen, Übungen, Training
---
## 📚 Pflicht-Dokumentation (ZUERST LESEN!)
### Fachliches Design
```
c:\Dev\shinkan-jinkendo\.claude\docs\working\SHINKAN_PROJECT_SETUP.md
```
**Enthält:**
- Domain Model (Clubs, Groups, Skills, Methods, Exercises)
- MVP Features
- Datenbank-Schema
- User Stories
### Technisches Setup (bereits erstellt von vorheriger Session)
Siehe: `SHINKAN_PROJECT_SETUP.md` - Abschnitte:
- Tech Stack (React 18, FastAPI, PostgreSQL 16, Docker)
- Ports: Dev 3098/8098, Prod 3003/8003
- Deployment: Gitea Actions auf develop Branch
### Referenz-Codebase
```
c:\Dev\mitai-jinkendo\
```
**Nutzen für Standards:**
- Router-Struktur (`backend/routers/`)
- Frontend-Patterns (`frontend/src/pages/`)
- CSS-System (`frontend/src/app.css`)
**⚠️ WARNUNG:** Mitai-Code NICHT blind kopieren!
- Mitai hat AI-Features, Export, komplexes Membership
- Shinkan ist einfacher, andere DB-Spalten
- **Immer Schema prüfen** vor Copy/Paste!
---
## 🔧 Aktueller Stand
### ✅ Was funktioniert
- **Login/Auth:** lars@stommer.com / 12345678 (admin, premium)
- **Backend API:** http://192.168.2.49:8098
- **Frontend:** http://192.168.2.49:3098
- **Datenbank:**
- profiles, sessions (Auth)
- clubs, divisions, training_groups (Organisation)
- skills (12 Einträge), training_methods (8 Einträge) - bereits geseedet!
- exercises, exercise_skills (leer)
### ❌ Bekannte Probleme
**1. Navigation erscheint nicht im Browser**
- Code existiert: `frontend/src/components/Navigation.jsx`
- Routes hinzugefügt: ProfilePage, ExercisesPage, ClubsPage
- Deploy erfolgt (Commit c4b1b54)
- **Problem:** Nicht im Browser sichtbar - vermutlich Browser-Cache oder Build-Issue
**2. Sessions funktionieren nicht**
- User muss sich ständig neu einloggen
- Backend-Fix gepusht (Commit 08326bd) - Mitai-Spalten entfernt
- **Problem:** Unklar ob Fix deployed wurde
**Erste Aufgabe:** Diese beiden Issues fixen, DANN Features bauen!
### 📁 Code-Struktur
```
c:\Dev\shinkan-jinkendo\
├── backend/
│ ├── main.py (FastAPI setup, Router registration)
│ ├── auth.py (Session management, require_auth)
│ ├── db.py (PostgreSQL connection pool)
│ ├── models.py (Pydantic models)
│ ├── routers/
│ │ ├── auth.py (Login, Register, Logout)
│ │ └── profiles.py (User profile CRUD)
│ └── migrations/
│ ├── 001_auth_membership.sql
│ ├── 002_organization.sql
│ ├── 003_catalogs.sql (Skills + Methods seeded!)
│ └── 004_add_auth_columns.sql
├── frontend/src/
│ ├── App.jsx (Routing + ProtectedRoute)
│ ├── context/
│ │ └── AuthContext.jsx (User state, login/logout)
│ ├── components/
│ │ └── Navigation.jsx (Header-Menü - NICHT SICHTBAR)
│ ├── pages/
│ │ ├── LoginPage.jsx (✅ funktioniert)
│ │ ├── Dashboard.jsx (✅ zeigt Welcome)
│ │ ├── ProfilePage.jsx (NEU - Platzhalter)
│ │ ├── ExercisesPage.jsx (NEU - leer)
│ │ └── ClubsPage.jsx (NEU - leer)
│ └── utils/
│ └── api.js (Zentrale API-Client mit Token-Injektion)
└── .claude/docs/
└── working/
└── SHINKAN_PROJECT_SETUP.md (LESEN!)
```
---
## 🚀 Was JETZT gebaut werden muss (MVP Scope)
### Phase 1: Core CRUD (Priorität)
**1. Übungsverwaltung** (Kernobjekt) - 2-3h
- `backend/routers/exercises.py`
- GET /exercises (Liste mit Filter)
- POST /exercises (Create)
- GET /exercises/{id} (Detail)
- PUT /exercises/{id} (Update)
- DELETE /exercises/{id}
- `frontend/src/pages/ExercisesPage.jsx`
- Liste (Tabelle oder Cards)
- Create-Modal/Form
- Edit inline oder Modal
- Delete mit Confirm
**Schema:** Siehe `migrations/001_auth_membership.sql` - Tabelle `exercises`
**Felder:**
- title, summary, goal, execution, preparation, trainer_notes
- equipment (JSONB array), duration_min/max, group_size_min/max
- age_groups (JSONB), focus_area, secondary_areas (JSONB)
- training_character, visibility (private/club/public)
- primary_method_id, secondary_method_ids (JSONB)
**Referenz:** Mitai hat ähnliche CRUD-Pattern in `routers/weight.py`, `routers/activity.py`
---
**2. Vereinsverwaltung** - 1-2h
- `backend/routers/clubs.py`
- CRUD für clubs
- CRUD für divisions (optional)
- `frontend/src/pages/ClubsPage.jsx`
**Schema:** Siehe `migrations/002_organization.sql`
---
**3. Gruppenverwaltung** - 1-2h
- `backend/routers/groups.py`
- CRUD für training_groups
- Zuordnung zu Clubs
- Trainer-Zuordnung (trainer_id, co_trainer_ids)
- `frontend/src/pages/GroupsPage.jsx`
---
### Phase 2: Kataloge & Zuordnungen (Später)
**4. Skills & Methods anzeigen** - 0.5h
- `/skills` Route (Read-only, bereits geseedet)
- `/methods` Route (Read-only, bereits geseedet)
**5. Übungen ↔ Skills verknüpfen** - 1h
- M:N Relationship über `exercise_skills` Tabelle
- UI: Multi-Select für Skills beim Übung-Erstellen
---
## 🔍 Debugging-Checkliste (Vor neuen Features!)
### Problem: Navigation nicht sichtbar
```bash
# SSH zum Server
ssh lars@192.168.2.49
# Frontend Container prüfen
docker exec dev-shinkan-ui ls -la /usr/share/nginx/html/assets/
# Erwartung: Datei index-CYNK--85.js oder neuer
# Prüfen ob Navigation.jsx im Bundle
docker exec dev-shinkan-ui grep -o "Navigation\|Übungen" /usr/share/nginx/html/assets/index-*.js | head -5
# Falls nicht: Frontend neu bauen
cd /home/lars/docker/shinkan-dev
git pull
docker compose -f docker-compose.dev-env.yml build --no-cache frontend
docker compose -f docker-compose.dev-env.yml up -d
```
### Problem: Sessions funktionieren nicht
```bash
# Backend Logs prüfen
docker logs dev-shinkan-api --tail 50 | grep -E "error|Error|column.*does not exist"
# Erwartung: KEINE "column p.ai_enabled does not exist" Fehler mehr
# Session-Test
curl -X POST http://192.168.2.49:8098/api/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"lars@stommer.com","password":"12345678"}' | python3 -m json.tool
# Erwartung: {"token": "...", "role": "admin", ...}
```
---
## 🛠️ Entwicklungs-Workflow
### 1. Feature implementieren (Lokal)
```bash
# Backend
cd c:\Dev\shinkan-jinkendo
# Router erstellen: backend/routers/exercises.py
# Models ergänzen: backend/models.py
# Router registrieren: backend/main.py
# Frontend
# Seite erstellen: frontend/src/pages/ExercisesPage.jsx
# API-Funktionen: frontend/src/utils/api.js
# Route in App.jsx
```
### 2. Committen & Pushen
```bash
git add -A
git commit -m "feat: Exercise CRUD implementation"
git push origin develop
```
### 3. Gitea Action deployt automatisch
- Kein manuelles `docker compose` mehr!
- Warte 1-2 Min
- Prüfe: http://192.168.2.49:3098
### 4. Testen im Browser
- Login: lars@stommer.com / 12345678
- Feature testen
- Console prüfen (F12) bei Fehlern
---
## 📊 Datenbank-Zugriff
```bash
# SSH
ssh lars@192.168.2.49
# PostgreSQL CLI
docker exec -it dev-shinkan-postgres psql -U shinkan_dev -d shinkan_dev
# Hilfreiche Queries
\d profiles # Schema anzeigen
\d exercises # Exercise-Schema
SELECT * FROM skills; # Alle Skills (12 Einträge)
SELECT * FROM training_methods; # Alle Methods (8 Einträge)
```
---
## ⚠️ Lessons Learned (Vermeide diese Fehler!)
### 1. Mitai vs Shinkan Schema
**Problem:** Auth.py von Mitai kopiert, aber Spalten fehlen in Shinkan
**Fehler:**
- `ai_enabled`, `ai_limit_day`, `export_enabled` - existieren nur in Mitai
- `auth_type`, `verification_expires`, `trial_ends_at` - mussten hinzugefügt werden
- `created` vs `created_at` - unterschiedliche Spaltennamen
**Regel:** Vor Mitai-Code kopieren → **Schema prüfen**!
### 2. Frontend-Cache
**Problem:** Code deployed aber nicht sichtbar im Browser
**Lösung:**
- Browser-Cache leeren (Ctrl+Shift+R)
- Oder `docker compose build --no-cache frontend`
### 3. Gitea Actions nicht mit manuellen Deploys mischen
**Problem:** Container-Namens-Konflikte
**Regel:** Nur `git push` → Gitea macht den Rest
---
## 📞 Server-Info
| System | Wert |
|--------|------|
| **Pi IP** | 192.168.2.49 |
| **Gitea** | http://192.168.2.144:3000/Lars/shinkan-jinkendo |
| **Dev Frontend** | http://192.168.2.49:3098 |
| **Dev Backend** | http://192.168.2.49:8098 |
| **Deploy Path** | /home/lars/docker/shinkan-dev |
| **DB Name** | shinkan_dev |
| **DB User** | shinkan_dev |
| **DB Pass** | dev_password |
---
## 🎯 Erfolgs-Kriterien MVP
Nach MVP soll User können:
1. ✅ Login/Logout (erledigt)
2. ⏳ Übungen verwalten (CRUD)
3. ⏳ Vereine anlegen
4. ⏳ Trainingsgruppen anlegen
5. ⏳ Übungen Skills zuordnen
6. ⏳ Skills/Methods katalog ansehen
**Geschätzte Zeit:** 6-8h für Punkte 2-6
---
## 🚦 Start-Kommando für neue Session
```
Ich übernehme die Entwicklung von Shinkan Jinkendo.
Kontext gelesen: HANDOVER_NEXT_SESSION.md
Erste Schritte:
1. Navigation + Sessions debuggen
2. Dann: Exercise CRUD implementieren
Bitte bestätige dass du bereit bist und zeige mir den aktuellen Status (Container, letzte Commits, bekannte Probleme).
```
---
**Viel Erfolg!** 🥋