Export Button geht jetzt

Dieser Commit ist enthalten in:
2025-06-22 18:30:11 +02:00
Ursprung 74391e6634
Commit b9b943ec15
11 geänderte Dateien mit 514 neuen und 167 gelöschten Zeilen

Datei anzeigen

@@ -1,5 +1,125 @@
# v2-Docker Projekt Journal
## Letzte Änderungen (22.06.2025 - 16:49 Uhr)
### Export-Funktionen Analyse und Lösungsplan ✅
**Problem:**
- CSV Export Buttons vorhanden, aber Backend liefert immer Excel-Dateien
- Monitoring Export zeigt nur Platzhalter-Alerts ("Export-Funktion wird implementiert")
- Leads/CRM Module hat keine Export-Funktionalität
- Format-Parameter wird in Export-Routes ignoriert
**Analyse-Ergebnisse:**
1. Excel-Exporte funktionieren für: Lizenzen, Kunden, Sessions, Audit Logs, Ressourcen
2. Export-Routes in `export_routes.py` prüfen nie den `format=csv` Parameter
3. Nur `create_excel_export()` existiert, keine CSV-Generierung implementiert
4. Monitoring-Exporte haben nur JavaScript-Platzhalter ohne Backend
5. Lead Management hat keine Export-Funktionalität
**Lösungsplan (YAGNI & Strukturiert):**
1. **CSV Export Fix (Priorität 1)**
- Format-Parameter in bestehenden Export-Routes prüfen
- CSV als Alternative zu Excel hinzufügen (Excel bleibt Default)
- Python's eingebautes csv-Modul nutzen, keine neuen Dependencies
- Minimale Änderung: ~10 Zeilen pro Route
2. **Monitoring Export (Priorität 2)**
- Neue Route `/export/monitoring` nach bestehendem Muster
- Daten von existierenden Monitoring-Endpoints nutzen
- Excel und CSV Format unterstützen
3. **Lead Export (Priorität 3)**
- Route `/leads/export` zum Lead Blueprint hinzufügen
- Institutionen mit Kontakt-Anzahl exportieren
- Gleiches Muster wie andere Exporte verwenden
**Vorteile dieser Lösung:**
- Keine Refaktorierung nötig
- Bestehende Excel-Exporte bleiben unverändert
- Konsistentes URL-Muster mit format-Parameter
- Rückwärtskompatibel (Excel als Standard)
- Einfach erweiterbar für zukünftige Formate
**Implementierung abgeschlossen:**
1. **CSV Export Support hinzugefügt:**
- Neue Funktion `create_csv_export()` in `utils/export.py`
- Alle Export-Routes prüfen jetzt den `format` Parameter
- CSV-Dateien mit UTF-8 BOM für Excel-Kompatibilität
2. **Monitoring Export implementiert:**
- Neue Route `/export/monitoring` in `export_routes.py`
- Exportiert Heartbeats und optional Anomalien
- JavaScript-Funktionen in Templates aktualisiert
3. **Lead Export hinzugefügt:**
- Neue Route `/leads/export` in `leads/routes.py`
- Exportiert Institutionen mit Kontakt-Statistiken
- Export-Buttons zu Institutions-Template hinzugefügt
**Geänderte Dateien:**
- `utils/export.py` - CSV-Export-Funktion hinzugefügt
- `routes/export_routes.py` - Format-Parameter-Prüfung für alle Routes
- `routes/export_routes.py` - Monitoring-Export hinzugefügt
- `leads/routes.py` - Lead-Export-Route hinzugefügt
- `templates/monitoring/analytics.html` - Export-Funktionen aktualisiert
- `templates/monitoring/live_dashboard.html` - Export-Funktionen aktualisiert
- `leads/templates/leads/institutions.html` - Export-Buttons hinzugefügt
**Testing abgeschlossen:**
- Alle Export-Routes sind verfügbar und funktionieren
- CSV-Export generiert korrekte CSV-Dateien mit UTF-8 BOM
- Excel bleibt der Standard wenn kein format-Parameter angegeben
- Container wurde neu gebaut und deployed
- Alle 7 Export-Endpoints unterstützen beide Formate:
- `/export/licenses`
- `/export/customers`
- `/export/sessions`
- `/export/audit`
- `/export/resources`
- `/export/monitoring`
- `/leads/export`
---
## Letzte Änderungen (22.06.2025 - 16:35 Uhr)
### Lizenzfilter System komplett überarbeitet ✅
**Problem:**
- Checkbox-basiertes Filtersystem war unübersichtlich und fummelig
- "Fake-Daten anzeigen" Checkbox funktionierte nicht richtig
- "Läuft bald ab" Status machte keinen Sinn (inaktive Lizenzen können nicht ablaufen)
**Lösung 1 - Neues Dropdown-System:**
- Checkbox-Filter ersetzt durch 3 klare Dropdowns:
- Datenquelle: Echte Lizenzen / 🧪 Fake-Daten / Alle Daten
- Lizenztyp: Alle Typen / Vollversion / Testversion
- Status: Alle Status / ✅ Aktiv / ⚠️ Abgelaufen / ❌ Deaktiviert
- Auto-Submit bei Änderung
- Übersichtlicher "Filter zurücksetzen" Button
**Lösung 2 - API Bug Fix:**
- SQLAlchemy Fehler behoben: `text()` Wrapper für Raw SQL Queries hinzugefügt
- License Server API funktioniert jetzt korrekt
**Lösung 3 - Status-Logik korrigiert:**
- "Läuft bald ab" komplett entfernt (gehört nur ins Dashboard als Hinweis)
- Klare Trennung der 3 Status:
- Aktiv = `is_active=true` (egal ob abgelaufen)
- Abgelaufen = `valid_until <= heute` (läuft aber weiter bis manuell deaktiviert)
- Deaktiviert = `is_active=false` (manuell gestoppt)
- Lizenzen laufen nach Ablauf weiter bis zur manuellen Deaktivierung
**Geänderte Dateien:**
- `templates/licenses.html` - Komplettes Filter-UI überarbeitet
- `routes/license_routes.py` - Filter-Logik angepasst
- `v2_lizenzserver/app/core/api_key_auth.py` - SQL Bug behoben
---
## Letzte Änderungen (22.06.2025 - 13:27 Uhr)
### Bug Fix: API Key Anzeige in Administration