- .gitignore: .claude/docs, rules, commands tracken; settings.local weiter ignorieren - DOCUMENTATION.md: verbindliche Ablage functional/technical/working/issues - .claude/README.md: Agent-Einstieg; GITEA_ISSUES_INDEX aus MCP (Stand 2026-04-08) - Arbeitspapiere von docs/ nach .claude/docs/working/ verschoben - docs/MEMBERSHIP_SYSTEM.md als Stub; kanonisch technical/MEMBERSHIP_SYSTEM.md - CLAUDE.md Pflichtlektüre und Links angepasst; docs/README.md vereinfacht Made-with: Cursor
101 lines
2.1 KiB
Markdown
101 lines
2.1 KiB
Markdown
# Fix Bug
|
|
|
|
Strukturierter Workflow für Fehlerbehebung mit Bug-Tracking.
|
|
|
|
## Workflow
|
|
|
|
### 1. Bug in KNOWN_ISSUES.md finden
|
|
```bash
|
|
cat .claude/docs/KNOWN_ISSUES.md | grep -A 20 "BUG-XXX"
|
|
```
|
|
|
|
### 2. Status auf "In Bearbeitung"
|
|
```markdown
|
|
**Status:** 🟡 In Bearbeitung
|
|
```
|
|
|
|
### 3. Logs analysieren
|
|
|
|
**Docker Logs:**
|
|
```bash
|
|
docker logs -f dev-mitai-api | grep "ERROR\|Exception"
|
|
docker logs dev-mitai-api --tail 100
|
|
```
|
|
|
|
**Feature-Logs:**
|
|
```bash
|
|
tail -f backend/logs/feature-usage.log | jq .
|
|
```
|
|
|
|
### 4. Bug reproduzieren
|
|
- Schritte aus KNOWN_ISSUES.md nachstellen
|
|
- Fehler verifizieren
|
|
- Root Cause identifizieren (nicht nur Symptom!)
|
|
|
|
### 5. Fix implementieren
|
|
- Minimal invasive Änderung
|
|
- Keine "Verbesserungen" nebenbei
|
|
- Kommentiere komplexe Fixes
|
|
|
|
### 6. Testen
|
|
```bash
|
|
# Backend Syntax
|
|
python3 -m py_compile backend/[file].py
|
|
|
|
# Frontend Build
|
|
cd frontend && npm run build
|
|
```
|
|
|
|
### 7. Commit
|
|
```bash
|
|
git add [files]
|
|
git commit -m "fix: [BUG-XXX] Kurzbeschreibung
|
|
|
|
Root Cause: [Ursache]
|
|
Lösung: [Was geändert]
|
|
Tested: [Wie getestet]
|
|
|
|
Closes: BUG-XXX"
|
|
```
|
|
|
|
### 8. KNOWN_ISSUES.md aktualisieren
|
|
Nach Deploy:
|
|
- Status: ✅ Behoben (Commit `hash`)
|
|
- Ins Archiv verschieben
|
|
|
|
## Debugging-Checkliste
|
|
|
|
### Frontend-Bugs
|
|
- Browser Console (F12) → Fehler lesen
|
|
- Network Tab → API-Call prüfen
|
|
- Häufig:
|
|
- 401: Token fehlt → api.js nutzen
|
|
- undefined: Optional chaining `?.` verwenden
|
|
- Weißer Screen: JS-Fehler in Console
|
|
|
|
### Backend-Bugs
|
|
- Docker Logs → Traceback analysieren
|
|
- Syntax: `python3 -m py_compile backend/[file].py`
|
|
- Häufig:
|
|
- TypeError: Type-Konvertierung fehlt
|
|
- 404: Router nicht registriert
|
|
- 500: Unbehandelte Exception
|
|
|
|
### Häufige Fehler
|
|
- `session=Depends(require_auth)` in `Header()` → separater Parameter!
|
|
- `dayjs.week()` → Native ISO-Wochenberechnung
|
|
- `datetime.date` vs. `str` → Type-Check
|
|
- PostgreSQL Boolean: `true` nicht `1`
|
|
|
|
## Commit-Format
|
|
```
|
|
fix: [BUG-XXX] Kurze Beschreibung
|
|
|
|
Problem: TypeError in /api/nutrition/weekly
|
|
Root Cause: d['date'] ist datetime.date, nicht str
|
|
Lösung: Check if already datetime.date object
|
|
Tested: /nutrition Tab lädt ohne Error
|
|
|
|
Closes: BUG-XXX
|
|
```
|