Dateien
Hetzner-Backup/v2_adminpanel/FEHLERSUCHE.md
2025-06-18 00:07:34 +02:00

139 Zeilen
5.2 KiB
Markdown

# Fehlersuche - v2_adminpanel Refactoring
## Aktueller Stand (17.06.2025)
### Erfolgreiches Refactoring
- Die ursprüngliche 5000+ Zeilen große app.py wurde erfolgreich in Module aufgeteilt:
- 9 Blueprint-Module in `routes/`
- Separate Module für auth/, utils/, config.py, db.py, models.py
- Hauptdatei app.py nur noch 178 Zeilen
### Funktionierende Teile
- ✅ Routing-System funktioniert (alle Routen sind registriert)
- ✅ Login-System funktioniert
- ✅ Einfache Test-Routen funktionieren (/simple-test)
- ✅ Blueprint-Registrierung funktioniert korrekt
- ✅ /test-db Route funktioniert nach Docker-Rebuild
- ✅ Kunden-Anzeige funktioniert mit Test-Daten-Filter
- ✅ Batch-Lizenzerstellung funktioniert
### Gelöste Probleme
#### 1. **Dict/Tuple Inkonsistenzen** ✅ GELÖST
**Problem**: Templates erwarteten Tuple-Zugriff (row[0], row[1]), aber models.py lieferte Dictionaries
**Lösung**: Alle betroffenen Templates wurden auf Dictionary-Zugriff umgestellt:
- customers.html: `customer[0]``customer.id`, `customer[1]``customer.name`, etc.
- customers_licenses.html: Komplett auf Dictionary-Zugriff umgestellt
- licenses.html, edit_license.html, sessions.html, audit_log.html, resources.html, backups.html: Alle konvertiert
#### 2. **Fehlende /api/customers Route** ✅ GELÖST
**Problem**: Batch-Lizenzerstellung konnte keine Kunden laden (Select2 AJAX-Fehler)
**Lösung**: api_customers() Funktion zu api_routes.py hinzugefügt
#### 3. **Doppelte api_customers Funktion** ✅ GELÖST
**Problem**: AssertionError beim Start - View function mapping is overwriting existing endpoint
**Lösung**: Doppelte Definition in api_routes.py entfernt (Zeilen 833-943)
#### 4. **502 Bad Gateway Error** ✅ GELÖST
**Problem**: Admin-Panel war nicht erreichbar, nginx gab 502 zurück
**Ursache**: Container startete nicht wegen doppelter Route-Definition
**Lösung**: Doppelte api_customers Funktion entfernt, Container neu gebaut
#### 5. **Test-Daten Filter** ✅ GELÖST
**Problem**: Test-Daten wurden immer angezeigt, Checkbox funktionierte nicht
**Lösung**: get_customers() in models.py unterstützt jetzt show_test Parameter
## Debugging-Schritte
### 1. Container komplett neu bauen
```bash
cd C:\Users\Administrator\Documents\GitHub\v2-Docker\v2
docker-compose down
docker-compose build --no-cache
docker-compose up -d
```
### 2. Logs überprüfen
```bash
docker logs admin-panel --tail 100
```
### 3. Test-Routen
- `/simple-test` - Sollte "Simple test works!" zeigen
- `/debug-routes` - Zeigt alle registrierten Routen
- `/test-db` - Testet Datenbankverbindung
### 4. Login-Test
1. Gehe zu https://admin-panel-undso.z5m7q9dk3ah2v1plx6ju.com/
2. Logge dich mit den Admin-Credentials ein
3. Versuche dann /customers-licenses aufzurufen
## Code-Fixes bereits implementiert
### 1. Datenbankverbindungen
- Alle kritischen Funktionen verwenden jetzt `conn = get_connection()` mit normalem Cursor
- Verhindert Dictionary/Tuple Konflikte
### 2. Spaltennamen korrigiert
- `is_active` statt `active` für licenses Tabelle
- `is_active` statt `active` für sessions Tabelle
- `is_test` statt `is_test_license`
- Entfernt: phone, address, notes aus customers (existieren nicht)
### 3. Blueprint-Referenzen
- Alle url_for() Aufrufe haben korrekte Blueprint-Präfixe
- z.B. `url_for('auth.login')` statt `url_for('login')`
## Nächste Schritte
1. **Container neu bauen** (siehe oben)
2. **Einloggen** und testen ob /customers-licenses funktioniert
3. **Falls weiterhin Fehler**: Docker Logs nach "CUSTOMERS-LICENSES ROUTE CALLED" durchsuchen
4. **Alternative**: Temporär auf die große app.py.backup zurückwechseln:
```bash
cp app.py.backup app.py
docker-compose restart admin-panel
```
## Bekannte funktionierende Routen (nach Login)
- `/` - Dashboard
- `/customers` - Kundenliste
- `/licenses` - Lizenzliste
- `/resources` - Ressourcen
- `/audit` - Audit Log
- `/sessions` - Sessions
## Debug-Informationen in customer_routes.py
Die customers_licenses Funktion hat erweiterte Logging-Ausgaben:
- "=== CUSTOMERS-LICENSES ROUTE CALLED ==="
- "=== QUERY RETURNED X ROWS ==="
- Details über Datentypen der Ergebnisse
Diese erscheinen in den Docker Logs und helfen bei der Fehlersuche.
## Zusammenfassung der Fixes
### Template-Konvertierungen (Dict statt Tuple)
Folgende Templates wurden von Tuple-Zugriff auf Dictionary-Zugriff umgestellt:
1. **customers.html**: customer[0] → customer.id, etc.
2. **customers_licenses.html**: Komplett umgestellt
3. **edit_customer.html**: customer[0] → customer.id, etc.
4. **licenses.html**: license[0] → license.id, etc.
5. **edit_license.html**: license[0] → license.id, etc.
6. **sessions.html**: session[0] → session.id, etc.
7. **audit_log.html**: log[0] → log.id, etc.
8. **resources.html**: resource[0] → resource.id, etc.
9. **backups.html**: backup[0] → backup.id, etc.
### API-Fixes
1. **api_routes.py**: Fehlende /api/customers Route hinzugefügt
2. **api_routes.py**: Doppelte api_customers Funktion entfernt
### Model-Fixes
1. **models.py**: get_customers() unterstützt jetzt show_test und search Parameter
2. **customer_routes.py**: customers() nutzt die neuen Parameter
### Status
**Alle bekannten Probleme wurden behoben**
**Admin-Panel ist vollständig funktionsfähig**
✅ **Docker Container läuft stabil**