📚 Improved backend structure & documentation, added new features, and refactored scripts. 🚀🔧📝💻🖥️
This commit is contained in:
263
backend/docs/EXPORT_FUNKTIONALITAET.md
Normal file
263
backend/docs/EXPORT_FUNKTIONALITAET.md
Normal file
@@ -0,0 +1,263 @@
|
||||
# 📊 Export-Funktionalität für Produktionsplanung
|
||||
|
||||
## Übersicht
|
||||
|
||||
Die Export-Funktionalität ermöglicht es Benutzern, ihre Produktionsplanung (Schichtplan) in verschiedenen Formaten zu exportieren. Diese Funktion wurde vollständig implementiert und bietet umfassende Filter- und Formatierungsoptionen.
|
||||
|
||||
## 🔧 Technische Implementierung
|
||||
|
||||
### Backend-Endpoint
|
||||
- **Route**: `/api/calendar/export`
|
||||
- **Methode**: GET
|
||||
- **Datei**: `blueprints/calendar.py`
|
||||
- **Funktionsname**: `api_export_calendar()`
|
||||
|
||||
### Frontend-Integration
|
||||
- **Datei**: `templates/calendar.html`
|
||||
- **Trigger**: Export-Button im Schichtplan-Interface
|
||||
- **Modal**: Dynamisch generiertes Export-Modal mit Konfigurationsoptionen
|
||||
|
||||
## 📋 Unterstützte Export-Formate
|
||||
|
||||
### 1. CSV-Export
|
||||
- **Format**: Semikolon-getrennte Werte (`;`)
|
||||
- **Encoding**: UTF-8 mit BOM (Excel-kompatibel)
|
||||
- **Dateiname**: `schichtplan_export_YYYYMMDD_HHMMSS.csv`
|
||||
- **Besonderheiten**:
|
||||
- Deutsche Spaltennamen
|
||||
- Formatierte Datums- und Zeitangaben
|
||||
- Excel-optimierte Darstellung
|
||||
|
||||
### 2. JSON-Export
|
||||
- **Format**: Strukturiertes JSON mit Metadaten
|
||||
- **Encoding**: UTF-8
|
||||
- **Dateiname**: `schichtplan_export_YYYYMMDD_HHMMSS.json`
|
||||
- **Struktur**:
|
||||
```json
|
||||
{
|
||||
"export_info": {
|
||||
"erstellt_am": "DD.MM.YYYY HH:MM:SS",
|
||||
"exportiert_von": "username",
|
||||
"zeitraum_von": "DD.MM.YYYY",
|
||||
"zeitraum_bis": "DD.MM.YYYY",
|
||||
"anzahl_jobs": 123,
|
||||
"filter_drucker_id": "1",
|
||||
"filter_status": "scheduled"
|
||||
},
|
||||
"produktionsplan": [...]
|
||||
}
|
||||
```
|
||||
|
||||
### 3. Excel-Export (XLSX)
|
||||
- **Format**: Microsoft Excel 2007+ (.xlsx)
|
||||
- **Dateiname**: `schichtplan_export_YYYYMMDD_HHMMSS.xlsx`
|
||||
- **Besonderheiten**:
|
||||
- Zwei Arbeitsblätter: "Produktionsplan" und "Zusammenfassung"
|
||||
- Automatische Spaltenbreiten-Anpassung
|
||||
- Statistische Auswertungen auf separatem Blatt
|
||||
- Abhängigkeit: pandas + openpyxl
|
||||
|
||||
## 🔍 Exportierte Datenfelder
|
||||
|
||||
| Feldname | Beschreibung | Datentyp |
|
||||
|----------|--------------|----------|
|
||||
| Job_ID | Eindeutige Job-Identifikation | Integer |
|
||||
| Auftragsname | Name des Produktionsauftrags | String |
|
||||
| Beschreibung | Detaillierte Auftragsbeschreibung | String |
|
||||
| Status | Aktueller Job-Status (deutsch) | String |
|
||||
| Priorität | Auftragspriorität (deutsch) | String |
|
||||
| Benutzer | Name des auftraggebenden Benutzers | String |
|
||||
| Benutzer_E-Mail | E-Mail-Adresse des Benutzers | String |
|
||||
| Drucker | Name der Produktionseinheit | String |
|
||||
| Drucker_Standort | Physischer Standort des Druckers | String |
|
||||
| Drucker_Modell | Druckermodell/Typ | String |
|
||||
| Startzeit | Geplante Startzeit (DD.MM.YYYY HH:MM:SS) | DateTime |
|
||||
| Endzeit | Geplante Endzeit (DD.MM.YYYY HH:MM:SS) | DateTime |
|
||||
| Dauer_Minuten | Produktionsdauer in Minuten | Integer |
|
||||
| Dauer_Stunden | Produktionsdauer in Stunden (decimal) | Float |
|
||||
| Erstellt_am | Auftragserstellungszeitpunkt | DateTime |
|
||||
| Abgeschlossen_am | Abschlusszeitpunkt (falls vorhanden) | DateTime |
|
||||
| Dateiname | Original-Dateiname (falls vorhanden) | String |
|
||||
| Materialverbrauch | Verbrauchte Materialien | String |
|
||||
| Kosten_EUR | Produktionskosten in Euro | String |
|
||||
|
||||
## ⚙️ Filter- und Konfigurationsoptionen
|
||||
|
||||
### Zeitraum-Filter
|
||||
- **Standard**: Aktueller Monat
|
||||
- **Schnellauswahl**:
|
||||
- Diese Woche (Montag-Sonntag)
|
||||
- Dieser Monat
|
||||
- Dieses Quartal
|
||||
- **Benutzerdefiniert**: Frei wählbare Start- und Enddaten
|
||||
|
||||
### Drucker-Filter
|
||||
- **Alle Drucker** (Standard)
|
||||
- **Spezifischer Drucker**: Auswahl aus aktiven Druckern
|
||||
- Anzeige: Druckername + Standort (falls vorhanden)
|
||||
|
||||
### Status-Filter
|
||||
- **Alle Status** (Standard)
|
||||
- **Geplant** (`scheduled`)
|
||||
- **Läuft** (`running`)
|
||||
- **Abgeschlossen** (`finished`)
|
||||
- **Abgebrochen** (`cancelled`)
|
||||
- **Fehlgeschlagen** (`failed`)
|
||||
|
||||
## 🛠️ API-Parameter
|
||||
|
||||
### URL-Parameter für `/api/calendar/export`
|
||||
|
||||
| Parameter | Typ | Beschreibung | Beispiel |
|
||||
|-----------|-----|--------------|----------|
|
||||
| `format` | String | Export-Format (csv/json/excel) | `format=csv` |
|
||||
| `start_date` | ISO DateTime | Start-Datum/Zeit | `start_date=2025-06-01T00:00:00` |
|
||||
| `end_date` | ISO DateTime | End-Datum/Zeit | `end_date=2025-06-30T23:59:59` |
|
||||
| `printer_id` | Integer | Drucker-ID für Filter | `printer_id=1` |
|
||||
| `status` | String | Status-Filter | `status=scheduled` |
|
||||
|
||||
### Beispiel-Anfrage
|
||||
```http
|
||||
GET /api/calendar/export?format=csv&start_date=2025-06-01T00:00:00&end_date=2025-06-30T23:59:59&printer_id=1&status=scheduled
|
||||
```
|
||||
|
||||
## 📊 Excel-Zusammenfassungsstatistiken
|
||||
|
||||
Das Excel-Format beinhaltet ein separates "Zusammenfassung"-Arbeitsblatt mit folgenden Metriken:
|
||||
|
||||
- Gesamte Jobs
|
||||
- Geplante Jobs
|
||||
- Laufende Jobs
|
||||
- Abgeschlossene Jobs
|
||||
- Abgebrochene Jobs
|
||||
- Gesamte Produktionszeit (Stunden)
|
||||
- Durchschnittliche Job-Dauer (Stunden)
|
||||
- Anzahl verschiedener Drucker
|
||||
- Anzahl verschiedener Benutzer
|
||||
- Export-Metadaten (Erstellungszeitpunkt, Zeitraum)
|
||||
|
||||
## 🔐 Berechtigungen
|
||||
|
||||
- **Erforderlich**: Angemeldeter Benutzer (`@login_required`)
|
||||
- **Keine zusätzlichen Berechtigungen**: Alle angemeldeten Benutzer können exportieren
|
||||
- **Datenfilterung**: Benutzer sehen nur Daten entsprechend ihrer normalen Kalender-Berechtigung
|
||||
|
||||
## 🎯 Benutzerinterface
|
||||
|
||||
### Export-Button
|
||||
- **Position**: Schichtplan-Header, neben anderen Aktionsbuttons
|
||||
- **Icon**: Download-Symbol
|
||||
- **Text**: "Exportieren"
|
||||
- **Verhalten**: Öffnet Export-Modal
|
||||
|
||||
### Export-Modal
|
||||
- **Design**: Modern, responsive Modal-Dialog
|
||||
- **Sections**:
|
||||
1. Format-Auswahl (Radio-Buttons mit Icons)
|
||||
2. Zeitraum-Konfiguration mit Schnellauswahl-Buttons
|
||||
3. Filter-Optionen (Drucker, Status)
|
||||
4. Aktions-Buttons (Abbrechen, Export starten)
|
||||
|
||||
### Loading-States
|
||||
- **Export-Button**: Spinner + "Exportiere..." Text während Verarbeitung
|
||||
- **Download**: Automatischer Datei-Download bei Erfolg
|
||||
- **Feedback**: Toast-Benachrichtigungen für Erfolg/Fehler
|
||||
|
||||
## 📝 Logging und Monitoring
|
||||
|
||||
### Log-Einträge
|
||||
```python
|
||||
logger.info(f"📊 CSV-Export erstellt: {len(export_data)} Einträge für Benutzer {current_user.username}")
|
||||
logger.info(f"📊 JSON-Export erstellt: {len(export_data)} Einträge für Benutzer {current_user.username}")
|
||||
logger.info(f"📊 Excel-Export erstellt: {len(export_data)} Einträge für Benutzer {current_user.username}")
|
||||
logger.error(f"Fehler beim Kalender-Export: {str(e)}")
|
||||
```
|
||||
|
||||
### Metriken
|
||||
- Export-Häufigkeit pro Format
|
||||
- Durchschnittliche Export-Größe
|
||||
- Fehlschlag-Rate
|
||||
- Benutzer-spezifische Export-Patterns
|
||||
|
||||
## 🐛 Fehlerbehandlung
|
||||
|
||||
### Backend-Fehler
|
||||
- **400**: Ungültige Parameter (Datum, Drucker-ID)
|
||||
- **404**: Keine Daten im angegebenen Zeitraum
|
||||
- **500**: Interne Serverfehler
|
||||
- **501**: Excel-Export nicht verfügbar (fehlende Dependencies)
|
||||
|
||||
### Frontend-Fehlerbehandlung
|
||||
- Validierung von Eingabefeldern
|
||||
- Benutzerfreundliche Fehlermeldungen
|
||||
- Automatische Wiederherstellung des UI-States
|
||||
- Graceful Degradation bei Netzwerkfehlern
|
||||
|
||||
## 🔄 Abhängigkeiten
|
||||
|
||||
### Python-Pakete
|
||||
- **Basis**: `flask`, `sqlalchemy`, `datetime`
|
||||
- **CSV**: Standard-Library `csv`, `io`
|
||||
- **JSON**: Standard-Library `json`
|
||||
- **Excel**: `pandas`, `openpyxl` (optional)
|
||||
|
||||
### Frontend-Dependencies
|
||||
- **JavaScript**: ES6+ Features (async/await, fetch API)
|
||||
- **CSS**: Tailwind CSS für Styling
|
||||
- **Browser**: Moderne Browser mit Blob/URL-Support
|
||||
|
||||
## 🚀 Performance-Optimierungen
|
||||
|
||||
### Backend
|
||||
- Efficient Database Queries mit SQLAlchemy
|
||||
- Streaming für große Datenmengen
|
||||
- Memory-effiziente CSV/Excel-Generierung
|
||||
- Query-Optimierung durch Index-Usage
|
||||
|
||||
### Frontend
|
||||
- Lazy Modal Creation (nur bei Bedarf)
|
||||
- Efficient Event Listeners
|
||||
- Minimal DOM-Manipulation
|
||||
- Progressive Enhancement
|
||||
|
||||
## 📈 Zukunftige Erweiterungen
|
||||
|
||||
### Geplante Features
|
||||
1. **PDF-Export** mit Grafiken und Charts
|
||||
2. **E-Mail-Versand** von Export-Dateien
|
||||
3. **Geplante Exports** (Cron-Jobs)
|
||||
4. **Export-Templates** für wiederkehrende Exports
|
||||
5. **Erweiterte Filter** (Datum-Bereiche, komplexe Bedingungen)
|
||||
6. **Bulk-Export** mehrerer Zeiträume
|
||||
7. **API-Integration** für externe Systeme
|
||||
|
||||
### Mögliche Optimierungen
|
||||
- **Caching** für häufige Export-Anfragen
|
||||
- **Asynchrone Verarbeitung** für große Datenmengen
|
||||
- **Komprimierung** für große Export-Dateien
|
||||
- **Export-History** und Wiederverwendung
|
||||
|
||||
## 📋 Checkliste für Entwickler
|
||||
|
||||
### Vor Deployment
|
||||
- [ ] Alle Export-Formate getestet
|
||||
- [ ] Filter-Funktionalitäten validiert
|
||||
- [ ] Performance mit großen Datenmengen geprüft
|
||||
- [ ] Browser-Kompatibilität sichergestellt
|
||||
- [ ] Error-Handling vollständig implementiert
|
||||
- [ ] Logging konfiguriert
|
||||
- [ ] Dependencies installiert
|
||||
|
||||
### Nach Deployment
|
||||
- [ ] Export-Funktionalität in Produktion getestet
|
||||
- [ ] Monitoring-Dashboard konfiguriert
|
||||
- [ ] Benutzer-Feedback gesammelt
|
||||
- [ ] Performance-Metriken überwacht
|
||||
- [ ] Log-Ausgaben kontrolliert
|
||||
|
||||
---
|
||||
|
||||
**Letzte Aktualisierung**: 01.06.2025
|
||||
**Version**: 1.0.0
|
||||
**Entwickler**: AI Assistant
|
||||
**Status**: ✅ Vollständig implementiert
|
1
backend/docs/FEHLER_BEHOBEN_DATABASE_LOCKED.md
Normal file
1
backend/docs/FEHLER_BEHOBEN_DATABASE_LOCKED.md
Normal file
@@ -0,0 +1 @@
|
||||
|
Reference in New Issue
Block a user