FIX 3 für Codex

Dieser Commit ist enthalten in:
2025-06-18 01:35:54 +02:00
Ursprung a9cfecc699
Commit 231aa4caed
30 geänderte Dateien mit 573 neuen und 213 gelöschten Zeilen

Datei anzeigen

@@ -1,6 +1,6 @@
# Fehlersuche - v2_adminpanel Refactoring
## Aktueller Stand (17.06.2025)
## Aktueller Stand (17.06.2025 - 11:00 Uhr)
### Erfolgreiches Refactoring
- Die ursprüngliche 5000+ Zeilen große app.py wurde erfolgreich in Module aufgeteilt:
@@ -15,7 +15,10 @@
- ✅ Blueprint-Registrierung funktioniert korrekt
- ✅ /test-db Route funktioniert nach Docker-Rebuild
- ✅ Kunden-Anzeige funktioniert mit Test-Daten-Filter
- ✅ Lizenzen-Anzeige funktioniert mit erweiterten Filtern
- ✅ Batch-Lizenzerstellung funktioniert
- ✅ Ressourcen-Pool funktioniert vollständig
- ✅ Ressourcen hinzufügen funktioniert
### Gelöste Probleme
@@ -136,4 +139,128 @@ Folgende Templates wurden von Tuple-Zugriff auf Dictionary-Zugriff umgestellt:
### Status
✅ **Alle bekannten Probleme wurden behoben**
✅ **Admin-Panel ist vollständig funktionsfähig**
✅ **Docker Container läuft stabil**
✅ **Docker Container läuft stabil**
## Weitere gelöste Probleme (17.06.2025 - 11:00 Uhr)
### 1. **Test-Daten Checkbox funktioniert nicht** ✅ GELÖST
**Problem**: Die Checkbox zum Anzeigen von Test-Daten in Kunden- und Lizenzansicht funktionierte nicht
**Ursache**: Fehlende Blueprint-Präfixe in Template-URLs
**Lösung**:
- `customers.html`: Alle `url_for('customers')` → `url_for('customer.customers')`
- `licenses.html`: Alle `url_for('licenses')` → `url_for('license.licenses')`
- Formulare senden jetzt korrekt mit `show_test` Parameter
### 2. **Lizenz-Filter erweitert** ✅ GELÖST
**Problem**: Filter für Test-/Live-Daten fehlte in Lizenzansicht
**Lösung**: `license_routes.py` erweitert mit:
- Typ-Filter: `full`, `test`, `test_data`, `live_data`
- Status-Filter: `active`, `expiring`, `expired`, `inactive`
- Suche über Lizenzschlüssel, Kundenname und E-Mail
### 3. **Resource Pool Anzeige** ✅ GELÖST
**Problem**: Ressourcen-Pool Seite hatte fehlerhafte Links und Filter funktionierten nicht
**Lösung**:
- `resources.html`: Form-Action korrigiert zu `url_for('resources.resources')`
- JavaScript `toggleTestResources()` arbeitet jetzt mit URL-Parametern
- Alle Sortier- und Paginierungs-Links korrigiert
### 4. **Ressourcen hinzufügen fehlte** ✅ GELÖST
**Problem**: Route `/resources/add` existierte nicht
**Lösung**: Komplette `add_resources()` Funktion in `resource_routes.py` implementiert:
- Validierung für Domains, IPv4-Adressen und Telefonnummern
- Duplikat-Prüfung
- Bulk-Import mit detailliertem Feedback
- Test/Produktion Unterscheidung
### 5. **Navigation-Links** ✅ GELÖST
**Problem**: Sidebar-Links für Ressourcen verwendeten hardcodierte URLs
**Lösung**: `base.html` aktualisiert:
- Resource Pool Link: `href="{{ url_for('resources.resources') }}"`
- Add Resources Link: `href="{{ url_for('resources.add_resources') }}"`
- Active-Status Prüfung korrigiert für Blueprint-Endpunkte
## Routing-Analyse (17.06.2025 - 11:30 Uhr)
### Identifizierte Routing-Probleme
Nach systematischer Analyse wurden folgende Routing-Probleme gefunden:
#### 1. **Fehlende Blueprint-Präfixe** ⚠️ OFFEN
Viele `url_for()` Aufrufe fehlen Blueprint-Präfixe. Dies verursacht 500-Fehler:
**Betroffene Templates:**
- `profile.html`: 3 fehlerhafte Aufrufe (`change_password`, `disable_2fa`, `setup_2fa`)
- `setup_2fa.html`: 2 fehlerhafte Aufrufe (`profile`, `enable_2fa`)
- `backup_codes.html`: 1 fehlerhafter Aufruf (`profile`)
- `resource_history.html`: 2 fehlerhafte Aufrufe (`resources`, `edit_license`)
- `resource_metrics.html`: 2 fehlerhafte Aufrufe (`resources`, `resources_report`)
- `resource_report.html`: 2 fehlerhafte Aufrufe
- `sessions.html`: Mehrere fehlerhafte Aufrufe
- `audit_log.html`: Mehrere fehlerhafte Aufrufe
#### 2. **Hardcodierte URLs** ⚠️ OFFEN
Über 50 hardcodierte URLs gefunden, die mit `url_for()` ersetzt werden sollten:
**Hauptprobleme in `base.html`:**
- `href="/"` → `href="{{ url_for('admin.dashboard') }}"`
- `href="/profile"` → `href="{{ url_for('auth.profile') }}"`
- `href="/logout"` → `href="{{ url_for('auth.logout') }}"`
- `href="/customers-licenses"` → `href="{{ url_for('customer.customers_licenses') }}"`
- `href="/customer/create"` → `href="{{ url_for('customer.create_customer') }}"`
- `href="/create"` → `href="{{ url_for('license.create_license') }}"`
- `href="/batch"` → `href="{{ url_for('batch.batch_create') }}"`
- `href="/audit"` → `href="{{ url_for('admin.audit_log') }}"`
- `href="/sessions"` → `href="{{ url_for('session.sessions') }}"`
- `href="/backups"` → `href="{{ url_for('admin.backups') }}"`
#### 3. **Doppelte Route-Definitionen** ✅ GELÖST
- Entfernt: Doppelte `add_resource` Funktion in `resource_routes.py`
#### 4. **Route-Namenskonsistenz** ⚠️ OFFEN
- `resource_report` vs `resources_report` - inkonsistente Benennung
### Prioritäten für Fixes
1. **KRITISCH**: Fehlende Blueprint-Präfixe (verursachen 500-Fehler)
2. **HOCH**: Hardcodierte URLs in Navigation (`base.html`)
3. **MITTEL**: Andere hardcodierte URLs
4. **NIEDRIG**: Namenskonsistenz
### Vollständiger Report
Ein detaillierter Report wurde erstellt: `ROUTING_ISSUES_REPORT.md`
## Aktuelle Probleme (18.06.2025 - 01:30 Uhr)
### 1. **Resources Route funktioniert nicht** ❌ NICHT GELÖST
**Problem**: `/resources` Route leitet auf Dashboard um mit Fehlermeldung "Fehler beim Laden der Ressourcen!"
**Fehlermeldungen im Log**:
1. Ursprünglich: `FEHLER: Spalte l.customer_name existiert nicht`
2. Nach Fix: `'dict object' has no attribute 'total'`
**Versuchte Lösungen**:
1. SQL-Query in `resource_routes.py` korrigiert:
- JOIN mit customers Tabelle hinzugefügt für `c.name as customer_name`
- `l.customer_name` → `c.name` in WHERE-Klausel
2. Stats Dictionary erweitert um `'total': 0` und `stats[res_type]['total'] += count`
3. Template `resources.html` angepasst: `data.quarantine` → `data.quarantined`
**Status**: Trotz aller Fixes funktioniert die Route weiterhin nicht
### 2. **URL-Generierungsfehler** ✅ GELÖST
**Problem**: Mehrere `url_for()` Aufrufe mit falschen Endpunkt-Namen
**Gelöste Fehler**:
- `api.generate_license_key` → `api.api_generate_key`
- `api.customers` → `api.api_customers`
- `export.customers` → `export.export_customers`
- `export.licenses` → `export.export_licenses`
- `url_for()` mit leeren Parametern durch hardcodierte URLs ersetzt
### 3. **Customers-Licenses Route** ❌ NICHT GELÖST
**Problem**: `/customers-licenses` Route leitet auf Dashboard um
**Fehlermeldung im Log**: `ValueError: invalid literal for int() with base 10: ''`
**Ursache**: Template versucht `url_for('licenses.edit_license', license_id='')` mit leerem String aufzurufen
**Versuchte Lösungen**:
- `url_for('licenses.edit_license', license_id='')` durch hardcodierte URL ersetzt: `/license/edit/${license.id}`
- `url_for('customers.edit_customer', customer_id='')` durch hardcodierte URL ersetzt: `/customer/edit/${customerId}`
**Status**: Route funktioniert trotz Fixes nicht