# 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**