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
|
||
|
|
```
|