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

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

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

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