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