5.2 KiB
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
- 9 Blueprint-Module in
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
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
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
- Gehe zu https://admin-panel-undso.z5m7q9dk3ah2v1plx6ju.com/
- Logge dich mit den Admin-Credentials ein
- 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_activestattactivefür licenses Tabelleis_activestattactivefür sessions Tabelleis_teststattis_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')statturl_for('login')
Nächste Schritte
- Container neu bauen (siehe oben)
- Einloggen und testen ob /customers-licenses funktioniert
- Falls weiterhin Fehler: Docker Logs nach "CUSTOMERS-LICENSES ROUTE CALLED" durchsuchen
- Alternative: Temporär auf die große app.py.backup zurückwechseln:
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:
- customers.html: customer[0] → customer.id, etc.
- customers_licenses.html: Komplett umgestellt
- edit_customer.html: customer[0] → customer.id, etc.
- licenses.html: license[0] → license.id, etc.
- edit_license.html: license[0] → license.id, etc.
- sessions.html: session[0] → session.id, etc.
- audit_log.html: log[0] → log.id, etc.
- resources.html: resource[0] → resource.id, etc.
- backups.html: backup[0] → backup.id, etc.
API-Fixes
- api_routes.py: Fehlende /api/customers Route hinzugefügt
- api_routes.py: Doppelte api_customers Funktion entfernt
Model-Fixes
- models.py: get_customers() unterstützt jetzt show_test und search Parameter
- 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