diff --git a/backend/__pycache__/app.cpython-313.pyc b/backend/__pycache__/app.cpython-313.pyc
index 90fd9971..730afb04 100644
Binary files a/backend/__pycache__/app.cpython-313.pyc and b/backend/__pycache__/app.cpython-313.pyc differ
diff --git a/backend/app.py b/backend/app.py
index 5be9b641..4585981b 100644
--- a/backend/app.py
+++ b/backend/app.py
@@ -1610,6 +1610,9 @@ def kiosk_deactivate():
except Exception as e:
kiosk_logger.error(f"Unerwarteter Fehler bei Kiosk-Deaktivierung: {str(e)}")
return jsonify({"error": "Unerwarteter Fehler"}), 500
+
+@app.route('/api/kiosk/activate', methods=['POST'])
+@login_required
def kiosk_activate():
"""Kiosk-Modus aktivieren (nur für Admins)."""
try:
diff --git a/backend/database/myp.db b/backend/database/myp.db
index 2211b354..5360481e 100644
Binary files a/backend/database/myp.db and b/backend/database/myp.db differ
diff --git a/backend/database/myp.db-shm b/backend/database/myp.db-shm
index c2bb791f..62a2e48e 100644
Binary files a/backend/database/myp.db-shm and b/backend/database/myp.db-shm differ
diff --git a/backend/database/myp.db-wal b/backend/database/myp.db-wal
index a9085d2d..7892ad39 100644
Binary files a/backend/database/myp.db-wal and b/backend/database/myp.db-wal differ
diff --git a/backend/docs/FEHLER_LOG.md b/backend/docs/FEHLER_LOG.md
new file mode 100644
index 00000000..0519ecba
--- /dev/null
+++ b/backend/docs/FEHLER_LOG.md
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/backend/docs/KASKADEN_ANALYSE_FEHLER_001.md b/backend/docs/KASKADEN_ANALYSE_FEHLER_001.md
new file mode 100644
index 00000000..0519ecba
--- /dev/null
+++ b/backend/docs/KASKADEN_ANALYSE_FEHLER_001.md
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/backend/fix_public_stats.py b/backend/fix_public_stats.py
deleted file mode 100644
index 1468caec..00000000
--- a/backend/fix_public_stats.py
+++ /dev/null
@@ -1,130 +0,0 @@
-#!/usr/bin/env python3
-"""
-Temporäres Skript zum Hinzufügen der fehlenden /api/statistics/public Route
-"""
-
-with open('app.py', 'r', encoding='utf-8') as f:
- content = f.read()
-
-# Die neue Route die hinzugefügt werden soll
-new_route = '''
-# ===== ÖFFENTLICHE STATISTIK-API =====
-
-@app.route("/api/statistics/public", methods=['GET'])
-def api_public_statistics():
- """
- Öffentliche Statistiken ohne Authentifizierung.
-
- Stellt grundlegende, nicht-sensible Systemstatistiken bereit,
- die auf der Startseite angezeigt werden können.
-
- Returns:
- JSON: Öffentliche Statistiken
- """
- try:
- db_session = get_db_session()
-
- # Grundlegende, nicht-sensible Statistiken
- total_jobs = db_session.query(Job).count()
- completed_jobs = db_session.query(Job).filter(Job.status == "finished").count()
- total_printers = db_session.query(Printer).count()
- active_printers = db_session.query(Printer).filter(
- Printer.active == True,
- Printer.status.in_(["online", "available", "idle"])
- ).count()
-
- # Erfolgsrate berechnen
- success_rate = round((completed_jobs / total_jobs * 100) if total_jobs > 0 else 0, 1)
-
- # Anonymisierte Benutzerstatistiken
- total_users = db_session.query(User).filter(User.active == True).count()
-
- # Letzte 30 Tage Aktivität (anonymisiert)
- thirty_days_ago = datetime.now() - timedelta(days=30)
- recent_jobs = db_session.query(Job).filter(
- Job.created_at >= thirty_days_ago
- ).count()
-
- db_session.close()
-
- public_stats = {
- "system_info": {
- "total_jobs": total_jobs,
- "completed_jobs": completed_jobs,
- "success_rate": success_rate,
- "total_printers": total_printers,
- "active_printers": active_printers,
- "active_users": total_users,
- "recent_activity": recent_jobs
- },
- "health_indicators": {
- "system_status": "operational",
- "printer_availability": round((active_printers / total_printers * 100) if total_printers > 0 else 0, 1),
- "last_updated": datetime.now().isoformat()
- },
- "features": {
- "multi_location_support": True,
- "real_time_monitoring": True,
- "automated_scheduling": True,
- "advanced_reporting": True
- }
- }
-
- return jsonify(public_stats)
-
- except Exception as e:
- app_logger.error(f"Fehler bei öffentlichen Statistiken: {str(e)}")
-
- # Fallback-Statistiken bei Fehler
- return jsonify({
- "system_info": {
- "total_jobs": 0,
- "completed_jobs": 0,
- "success_rate": 0,
- "total_printers": 0,
- "active_printers": 0,
- "active_users": 0,
- "recent_activity": 0
- },
- "health_indicators": {
- "system_status": "maintenance",
- "printer_availability": 0,
- "last_updated": datetime.now().isoformat()
- },
- "features": {
- "multi_location_support": True,
- "real_time_monitoring": True,
- "automated_scheduling": True,
- "advanced_reporting": True
- },
- "error": "Statistiken temporär nicht verfügbar"
- }), 200 # 200 statt 500 um Frontend nicht zu brechen
-
-'''
-
-# Füge die Route vor @app.route("/api/stats", methods=['GET']) hinzu
-marker = '@app.route("/api/stats", methods=[\'GET\'])'
-if marker in content:
- parts = content.split(marker, 1)
- new_content = parts[0] + new_route + marker + parts[1]
-
- with open('app.py', 'w', encoding='utf-8') as f:
- f.write(new_content)
- print('✅ Öffentliche Statistik-API Route hinzugefügt')
-else:
- print('❌ Marker nicht gefunden - versuche alternativen Marker')
- # Versuche alternativen Marker
- alt_marker = '@app.route("/api/stats", methods=[\"GET\"])'
- if alt_marker in content:
- parts = content.split(alt_marker, 1)
- new_content = parts[0] + new_route + alt_marker + parts[1]
-
- with open('app.py', 'w', encoding='utf-8') as f:
- f.write(new_content)
- print('✅ Öffentliche Statistik-API Route mit alternativem Marker hinzugefügt')
- else:
- print('❌ Auch alternativer Marker nicht gefunden')
- print('Suche verfügbare Marker...')
- import re
- stats_markers = re.findall(r'@app\.route\("/api/stats".*?\)', content)
- print(f'Gefundene Stats-Marker: {stats_markers}')
\ No newline at end of file
diff --git a/backend/logs/analytics/analytics.log b/backend/logs/analytics/analytics.log
index 44ca440b..29490802 100644
--- a/backend/logs/analytics/analytics.log
+++ b/backend/logs/analytics/analytics.log
@@ -24,3 +24,9 @@
2025-06-01 04:29:28 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert
2025-06-01 04:31:09 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert
2025-06-01 04:36:21 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert
+2025-06-01 04:36:33 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert
+2025-06-01 04:38:00 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert
+2025-06-01 04:39:28 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert
+2025-06-01 04:39:58 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert
+2025-06-01 04:41:49 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert
+2025-06-01 04:46:30 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert
diff --git a/backend/logs/app/app.log b/backend/logs/app/app.log
index 7766ac1d..c39c1024 100644
--- a/backend/logs/app/app.log
+++ b/backend/logs/app/app.log
@@ -685,3 +685,120 @@ WHERE users.id = ?
2025-06-01 04:36:21 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\database\myp.db
2025-06-01 04:36:22 - [app] app - [INFO] INFO - SQLite für Produktionsumgebung konfiguriert (WAL-Modus, Cache, Optimierungen)
2025-06-01 04:36:22 - [app] app - [INFO] INFO - ✅ Timeout Force-Quit Manager geladen
+2025-06-01 04:36:33 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\database\myp.db
+2025-06-01 04:36:34 - [app] app - [INFO] INFO - SQLite für Produktionsumgebung konfiguriert (WAL-Modus, Cache, Optimierungen)
+2025-06-01 04:36:34 - [app] app - [INFO] INFO - ✅ Timeout Force-Quit Manager geladen
+2025-06-01 04:38:00 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\database\myp.db
+2025-06-01 04:38:01 - [app] app - [INFO] INFO - SQLite für Produktionsumgebung konfiguriert (WAL-Modus, Cache, Optimierungen)
+2025-06-01 04:38:01 - [app] app - [INFO] INFO - ✅ Timeout Force-Quit Manager geladen
+2025-06-01 04:38:01 - [app] app - [INFO] INFO - ✅ Zentraler Shutdown-Manager initialisiert
+2025-06-01 04:38:01 - [app] app - [INFO] INFO - 🔄 Starte Datenbank-Setup und Migrationen...
+2025-06-01 04:38:01 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert
+2025-06-01 04:38:01 - [app] app - [INFO] INFO - ✅ JobOrder-Tabelle bereits vorhanden
+2025-06-01 04:38:01 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt.
+2025-06-01 04:38:01 - [app] app - [INFO] INFO - ✅ Datenbank-Setup und Migrationen erfolgreich abgeschlossen
+2025-06-01 04:38:01 - [app] app - [INFO] INFO - 🖨️ Starte automatische Steckdosen-Initialisierung...
+2025-06-01 04:38:01 - [app] app - [INFO] INFO - ℹ️ Keine Drucker zur Initialisierung gefunden
+2025-06-01 04:38:01 - [app] app - [INFO] INFO - 🔄 Debug-Modus: Queue Manager deaktiviert für Entwicklung
+2025-06-01 04:38:01 - [app] app - [INFO] INFO - Job-Scheduler gestartet
+2025-06-01 04:38:01 - [app] app - [INFO] INFO - Starte Debug-Server auf 0.0.0.0:5000 (HTTP)
+2025-06-01 04:38:01 - [app] app - [INFO] INFO - Windows-Debug-Modus: Auto-Reload deaktiviert
+2025-06-01 04:38:06 - [app] app - [ERROR] ERROR - Fehler beim Laden der Admin-Dashboard-Daten: Could not build url for endpoint 'admin_settings'. Did you mean 'optimization_settings' instead?
+2025-06-01 04:38:18 - [app] app - [ERROR] ERROR - Fehler beim Laden der Admin-Dashboard-Daten: Could not build url for endpoint 'admin_settings'. Did you mean 'optimization_settings' instead?
+2025-06-01 04:38:33 - [app] app - [ERROR] ERROR - Fehler beim Laden der Admin-Dashboard-Daten: Could not build url for endpoint 'admin_settings'. Did you mean 'optimization_settings' instead?
+2025-06-01 04:38:37 - [app] app - [ERROR] ERROR - Fehler beim Laden der Admin-Dashboard-Daten: Could not build url for endpoint 'admin_settings'. Did you mean 'optimization_settings' instead?
+2025-06-01 04:39:28 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\database\myp.db
+2025-06-01 04:39:29 - [app] app - [INFO] INFO - SQLite für Produktionsumgebung konfiguriert (WAL-Modus, Cache, Optimierungen)
+2025-06-01 04:39:29 - [app] app - [INFO] INFO - ✅ Timeout Force-Quit Manager geladen
+2025-06-01 04:39:29 - [app] app - [INFO] INFO - ✅ Zentraler Shutdown-Manager initialisiert
+2025-06-01 04:39:29 - [app] app - [INFO] INFO - 🔄 Starte Datenbank-Setup und Migrationen...
+2025-06-01 04:39:29 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert
+2025-06-01 04:39:29 - [app] app - [INFO] INFO - ✅ JobOrder-Tabelle bereits vorhanden
+2025-06-01 04:39:30 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt.
+2025-06-01 04:39:30 - [app] app - [INFO] INFO - ✅ Datenbank-Setup und Migrationen erfolgreich abgeschlossen
+2025-06-01 04:39:30 - [app] app - [INFO] INFO - 🖨️ Starte automatische Steckdosen-Initialisierung...
+2025-06-01 04:39:30 - [app] app - [INFO] INFO - ℹ️ Keine Drucker zur Initialisierung gefunden
+2025-06-01 04:39:30 - [app] app - [INFO] INFO - 🔄 Debug-Modus: Queue Manager deaktiviert für Entwicklung
+2025-06-01 04:39:30 - [app] app - [INFO] INFO - Job-Scheduler gestartet
+2025-06-01 04:39:30 - [app] app - [INFO] INFO - Starte Debug-Server auf 0.0.0.0:5000 (HTTP)
+2025-06-01 04:39:30 - [app] app - [INFO] INFO - Windows-Debug-Modus: Auto-Reload deaktiviert
+2025-06-01 04:39:58 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\database\myp.db
+2025-06-01 04:39:59 - [app] app - [INFO] INFO - SQLite für Produktionsumgebung konfiguriert (WAL-Modus, Cache, Optimierungen)
+2025-06-01 04:39:59 - [app] app - [INFO] INFO - ✅ Timeout Force-Quit Manager geladen
+2025-06-01 04:39:59 - [app] app - [INFO] INFO - ✅ Zentraler Shutdown-Manager initialisiert
+2025-06-01 04:39:59 - [app] app - [INFO] INFO - 🔄 Starte Datenbank-Setup und Migrationen...
+2025-06-01 04:39:59 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert
+2025-06-01 04:39:59 - [app] app - [INFO] INFO - ✅ JobOrder-Tabelle bereits vorhanden
+2025-06-01 04:40:00 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt.
+2025-06-01 04:40:00 - [app] app - [INFO] INFO - ✅ Datenbank-Setup und Migrationen erfolgreich abgeschlossen
+2025-06-01 04:40:00 - [app] app - [INFO] INFO - 🖨️ Starte automatische Steckdosen-Initialisierung...
+2025-06-01 04:40:00 - [app] app - [INFO] INFO - ℹ️ Keine Drucker zur Initialisierung gefunden
+2025-06-01 04:40:00 - [app] app - [INFO] INFO - 🔄 Debug-Modus: Queue Manager deaktiviert für Entwicklung
+2025-06-01 04:40:00 - [app] app - [INFO] INFO - Job-Scheduler gestartet
+2025-06-01 04:40:00 - [app] app - [INFO] INFO - Starte Debug-Server auf 0.0.0.0:5000 (HTTP)
+2025-06-01 04:40:00 - [app] app - [INFO] INFO - Windows-Debug-Modus: Auto-Reload deaktiviert
+2025-06-01 04:40:05 - [app] app - [ERROR] ERROR - Fehler beim Laden der Admin-Dashboard-Daten: Could not build url for endpoint 'admin_settings'. Did you mean 'optimization_settings' instead?
+2025-06-01 04:40:09 - [app] app - [ERROR] ERROR - Fehler beim Laden der Admin-Dashboard-Daten: Could not build url for endpoint 'admin_settings'. Did you mean 'optimization_settings' instead?
+2025-06-01 04:40:21 - [app] app - [ERROR] ERROR - Fehler beim Laden der Admin-Dashboard-Daten: Could not build url for endpoint 'admin_settings'. Did you mean 'optimization_settings' instead?
+2025-06-01 04:41:32 - [app] app - [ERROR] ERROR - Fehler beim Laden der Admin-Dashboard-Daten: Could not build url for endpoint 'admin_settings'. Did you mean 'optimization_settings' instead?
+2025-06-01 04:41:49 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\database\myp.db
+2025-06-01 04:41:50 - [app] app - [INFO] INFO - SQLite für Produktionsumgebung konfiguriert (WAL-Modus, Cache, Optimierungen)
+2025-06-01 04:41:50 - [app] app - [INFO] INFO - ✅ Timeout Force-Quit Manager geladen
+2025-06-01 04:41:50 - [app] app - [INFO] INFO - ✅ Zentraler Shutdown-Manager initialisiert
+2025-06-01 04:41:50 - [app] app - [INFO] INFO - 🔄 Starte Datenbank-Setup und Migrationen...
+2025-06-01 04:41:50 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert
+2025-06-01 04:41:50 - [app] app - [INFO] INFO - ✅ JobOrder-Tabelle bereits vorhanden
+2025-06-01 04:41:50 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt.
+2025-06-01 04:41:50 - [app] app - [INFO] INFO - ✅ Datenbank-Setup und Migrationen erfolgreich abgeschlossen
+2025-06-01 04:41:50 - [app] app - [INFO] INFO - 🖨️ Starte automatische Steckdosen-Initialisierung...
+2025-06-01 04:41:50 - [app] app - [INFO] INFO - ℹ️ Keine Drucker zur Initialisierung gefunden
+2025-06-01 04:41:50 - [app] app - [INFO] INFO - 🔄 Debug-Modus: Queue Manager deaktiviert für Entwicklung
+2025-06-01 04:41:50 - [app] app - [INFO] INFO - Job-Scheduler gestartet
+2025-06-01 04:41:50 - [app] app - [INFO] INFO - Starte Debug-Server auf 0.0.0.0:5000 (HTTP)
+2025-06-01 04:41:50 - [app] app - [INFO] INFO - Windows-Debug-Modus: Auto-Reload deaktiviert
+2025-06-01 04:43:12 - [app] app - [ERROR] ERROR - Fehler beim Laden der Admin-Dashboard-Daten: Could not build url for endpoint 'admin_settings'. Did you mean 'optimization_settings' instead?
+2025-06-01 04:43:54 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\database\myp.db
+2025-06-01 04:43:54 - [app] app - [INFO] INFO - SQLite für Produktionsumgebung konfiguriert (WAL-Modus, Cache, Optimierungen)
+2025-06-01 04:44:06 - [app] app - [INFO] INFO - Dashboard-Refresh angefordert von User 1
+2025-06-01 04:44:06 - [app] app - [INFO] INFO - Dashboard-Refresh angefordert von User 1
+2025-06-01 04:44:06 - [app] app - [INFO] INFO - Dashboard-Refresh erfolgreich: {'active_jobs': 0, 'available_printers': 0, 'total_jobs': 0, 'pending_jobs': 0, 'success_rate': 0, 'completed_jobs': 0, 'failed_jobs': 0, 'cancelled_jobs': 0, 'total_users': 1, 'online_printers': 0, 'offline_printers': 0}
+2025-06-01 04:44:06 - [app] app - [INFO] INFO - Dashboard-Refresh erfolgreich: {'active_jobs': 0, 'available_printers': None, 'total_jobs': 0, 'pending_jobs': 0, 'success_rate': 0, 'completed_jobs': 0, 'failed_jobs': 0, 'cancelled_jobs': 0, 'total_users': 1, 'online_printers': 0, 'offline_printers': 0}
+2025-06-01 04:44:38 - [app] app - [INFO] INFO - Dashboard-Refresh angefordert von User 1
+2025-06-01 04:44:38 - [app] app - [INFO] INFO - Dashboard-Refresh angefordert von User 1
+2025-06-01 04:44:38 - [app] app - [INFO] INFO - Dashboard-Refresh erfolgreich: {'active_jobs': 0, 'available_printers': 0, 'total_jobs': 0, 'pending_jobs': 0, 'success_rate': 0, 'completed_jobs': 0, 'failed_jobs': 0, 'cancelled_jobs': 0, 'total_users': None, 'online_printers': 0, 'offline_printers': 0}
+2025-06-01 04:44:38 - [app] app - [INFO] INFO - Dashboard-Refresh erfolgreich: {'active_jobs': 0, 'available_printers': 0, 'total_jobs': 0, 'pending_jobs': 0, 'success_rate': 0, 'completed_jobs': None, 'failed_jobs': 0, 'cancelled_jobs': None, 'total_users': 1, 'online_printers': 0, 'offline_printers': None}
+2025-06-01 04:45:10 - [app] app - [INFO] INFO - Dashboard-Refresh angefordert von User 1
+2025-06-01 04:45:10 - [app] app - [INFO] INFO - Dashboard-Refresh angefordert von User 1
+2025-06-01 04:45:10 - [app] app - [INFO] INFO - Dashboard-Refresh erfolgreich: {'active_jobs': 0, 'available_printers': 0, 'total_jobs': 0, 'pending_jobs': 0, 'success_rate': 0, 'completed_jobs': 0, 'failed_jobs': 0, 'cancelled_jobs': 0, 'total_users': 1, 'online_printers': 0, 'offline_printers': 0}
+2025-06-01 04:45:10 - [app] app - [INFO] INFO - Dashboard-Refresh erfolgreich: {'active_jobs': 0, 'available_printers': 0, 'total_jobs': 0, 'pending_jobs': 0, 'success_rate': 0, 'completed_jobs': 0, 'failed_jobs': 0, 'cancelled_jobs': 0, 'total_users': 1, 'online_printers': 0, 'offline_printers': 0}
+2025-06-01 04:45:42 - [app] app - [INFO] INFO - Dashboard-Refresh angefordert von User 1
+2025-06-01 04:45:42 - [app] app - [INFO] INFO - Dashboard-Refresh angefordert von User 1
+2025-06-01 04:45:42 - [app] app - [INFO] INFO - Dashboard-Refresh erfolgreich: {'active_jobs': 0, 'available_printers': 0, 'total_jobs': 0, 'pending_jobs': 0, 'success_rate': 0, 'completed_jobs': 0, 'failed_jobs': 0, 'cancelled_jobs': 0, 'total_users': 1, 'online_printers': 0, 'offline_printers': 0}
+2025-06-01 04:45:42 - [app] app - [INFO] INFO - Dashboard-Refresh erfolgreich: {'active_jobs': 0, 'available_printers': 0, 'total_jobs': 0, 'pending_jobs': 0, 'success_rate': 0, 'completed_jobs': 0, 'failed_jobs': None, 'cancelled_jobs': 0, 'total_users': 1, 'online_printers': 0, 'offline_printers': 0}
+2025-06-01 04:46:14 - [app] app - [INFO] INFO - Dashboard-Refresh angefordert von User 1
+2025-06-01 04:46:14 - [app] app - [INFO] INFO - Dashboard-Refresh angefordert von User 1
+2025-06-01 04:46:14 - [app] app - [INFO] INFO - Dashboard-Refresh erfolgreich: {'active_jobs': 0, 'available_printers': 0, 'total_jobs': 0, 'pending_jobs': 0, 'success_rate': 0, 'completed_jobs': 0, 'failed_jobs': 0, 'cancelled_jobs': 0, 'total_users': 1, 'online_printers': 0, 'offline_printers': 0}
+2025-06-01 04:46:14 - [app] app - [INFO] INFO - Dashboard-Refresh erfolgreich: {'active_jobs': 0, 'available_printers': 0, 'total_jobs': 0, 'pending_jobs': 0, 'success_rate': 0, 'completed_jobs': 0, 'failed_jobs': 0, 'cancelled_jobs': 0, 'total_users': 1, 'online_printers': 0, 'offline_printers': 0}
+2025-06-01 04:46:30 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\database\myp.db
+2025-06-01 04:46:31 - [app] app - [INFO] INFO - SQLite für Produktionsumgebung konfiguriert (WAL-Modus, Cache, Optimierungen)
+2025-06-01 04:46:31 - [app] app - [INFO] INFO - ✅ Timeout Force-Quit Manager geladen
+2025-06-01 04:46:32 - [app] app - [INFO] INFO - ✅ Zentraler Shutdown-Manager initialisiert
+2025-06-01 04:46:32 - [app] app - [INFO] INFO - 🔄 Starte Datenbank-Setup und Migrationen...
+2025-06-01 04:46:32 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert
+2025-06-01 04:46:32 - [app] app - [INFO] INFO - ✅ JobOrder-Tabelle bereits vorhanden
+2025-06-01 04:46:32 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt.
+2025-06-01 04:46:32 - [app] app - [INFO] INFO - ✅ Datenbank-Setup und Migrationen erfolgreich abgeschlossen
+2025-06-01 04:46:32 - [app] app - [INFO] INFO - 🖨️ Starte automatische Steckdosen-Initialisierung...
+2025-06-01 04:46:32 - [app] app - [INFO] INFO - ℹ️ Keine Drucker zur Initialisierung gefunden
+2025-06-01 04:46:32 - [app] app - [INFO] INFO - 🔄 Debug-Modus: Queue Manager deaktiviert für Entwicklung
+2025-06-01 04:46:32 - [app] app - [INFO] INFO - Job-Scheduler gestartet
+2025-06-01 04:46:32 - [app] app - [INFO] INFO - Starte Debug-Server auf 0.0.0.0:5000 (HTTP)
+2025-06-01 04:46:32 - [app] app - [INFO] INFO - Windows-Debug-Modus: Auto-Reload deaktiviert
+2025-06-01 04:46:32 - [app] app - [INFO] INFO - Dashboard-Refresh angefordert von User 1
+2025-06-01 04:46:32 - [app] app - [INFO] INFO - Dashboard-Refresh erfolgreich: {'active_jobs': 0, 'available_printers': 0, 'total_jobs': 0, 'pending_jobs': 0, 'success_rate': 0, 'completed_jobs': 0, 'failed_jobs': 0, 'cancelled_jobs': 0, 'total_users': 1, 'online_printers': 0, 'offline_printers': 0}
+2025-06-01 04:46:32 - [app] app - [INFO] INFO - Dashboard-Refresh angefordert von User 1
+2025-06-01 04:46:32 - [app] app - [INFO] INFO - Dashboard-Refresh angefordert von User 1
+2025-06-01 04:46:32 - [app] app - [INFO] INFO - Dashboard-Refresh erfolgreich: {'active_jobs': 0, 'available_printers': 0, 'total_jobs': 0, 'pending_jobs': 0, 'success_rate': 0, 'completed_jobs': 0, 'failed_jobs': 0, 'cancelled_jobs': 0, 'total_users': 1, 'online_printers': 0, 'offline_printers': 0}
+2025-06-01 04:46:32 - [app] app - [INFO] INFO - Dashboard-Refresh erfolgreich: {'active_jobs': 0, 'available_printers': 0, 'total_jobs': 0, 'pending_jobs': 0, 'success_rate': 0, 'completed_jobs': 0, 'failed_jobs': 0, 'cancelled_jobs': 0, 'total_users': 1, 'online_printers': 0, 'offline_printers': 0}
+2025-06-01 04:46:35 - [app] app - [ERROR] ERROR - Fehler beim Laden der Admin-Dashboard-Daten: Could not build url for endpoint 'admin_settings'. Did you mean 'optimization_settings' instead?
+2025-06-01 04:46:37 - [app] app - [ERROR] ERROR - Fehler beim Laden der Admin-Dashboard-Daten: Could not build url for endpoint 'admin_settings'. Did you mean 'optimization_settings' instead?
diff --git a/backend/logs/backup/backup.log b/backend/logs/backup/backup.log
index 46c1f3b3..36ae1fcb 100644
--- a/backend/logs/backup/backup.log
+++ b/backend/logs/backup/backup.log
@@ -24,3 +24,9 @@
2025-06-01 04:29:28 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation)
2025-06-01 04:31:09 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation)
2025-06-01 04:36:21 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation)
+2025-06-01 04:36:33 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation)
+2025-06-01 04:38:00 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation)
+2025-06-01 04:39:28 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation)
+2025-06-01 04:39:58 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation)
+2025-06-01 04:41:49 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation)
+2025-06-01 04:46:30 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation)
diff --git a/backend/logs/calendar/calendar.log b/backend/logs/calendar/calendar.log
index 88417a9d..82f597fe 100644
--- a/backend/logs/calendar/calendar.log
+++ b/backend/logs/calendar/calendar.log
@@ -13,3 +13,11 @@
2025-06-01 04:31:18 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 0 Einträge für Zeitraum 2025-06-01 00:00:00 bis 2025-06-08 00:00:00
2025-06-01 04:31:38 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 0 Einträge für Zeitraum 2025-06-01 00:00:00 bis 2025-06-08 00:00:00
2025-06-01 04:31:41 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 0 Einträge für Zeitraum 2025-06-01 00:00:00 bis 2025-06-08 00:00:00
+2025-06-01 04:40:13 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 0 Einträge für Zeitraum 2025-06-01 00:00:00 bis 2025-06-08 00:00:00
+2025-06-01 04:42:56 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 0 Einträge für Zeitraum 2025-06-01 00:00:00 bis 2025-06-08 00:00:00
+2025-06-01 04:42:59 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 0 Einträge für Zeitraum 2025-06-08 00:00:00 bis 2025-06-15 00:00:00
+2025-06-01 04:43:00 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 0 Einträge für Zeitraum 2025-06-01 00:00:00 bis 2025-06-08 00:00:00
+2025-06-01 04:43:00 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 0 Einträge für Zeitraum 2025-05-25 00:00:00 bis 2025-06-01 00:00:00
+2025-06-01 04:43:02 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 0 Einträge für Zeitraum 2025-06-01 00:00:00 bis 2025-06-08 00:00:00
+2025-06-01 04:43:02 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 0 Einträge für Zeitraum 2025-06-08 00:00:00 bis 2025-06-15 00:00:00
+2025-06-01 04:46:41 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 0 Einträge für Zeitraum 2025-06-01 00:00:00 bis 2025-06-08 00:00:00
diff --git a/backend/logs/dashboard/dashboard.log b/backend/logs/dashboard/dashboard.log
index 63673cbd..bc973516 100644
--- a/backend/logs/dashboard/dashboard.log
+++ b/backend/logs/dashboard/dashboard.log
@@ -89,3 +89,27 @@
2025-06-01 04:36:22 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet
2025-06-01 04:36:22 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server wird mit threading initialisiert (eventlet-Fallback)
2025-06-01 04:36:22 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server initialisiert (async_mode: threading)
+2025-06-01 04:36:34 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet
+2025-06-01 04:36:34 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet
+2025-06-01 04:36:34 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server wird mit threading initialisiert (eventlet-Fallback)
+2025-06-01 04:36:34 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server initialisiert (async_mode: threading)
+2025-06-01 04:38:01 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet
+2025-06-01 04:38:01 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet
+2025-06-01 04:38:01 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server wird mit threading initialisiert (eventlet-Fallback)
+2025-06-01 04:38:01 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server initialisiert (async_mode: threading)
+2025-06-01 04:39:29 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet
+2025-06-01 04:39:29 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet
+2025-06-01 04:39:29 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server wird mit threading initialisiert (eventlet-Fallback)
+2025-06-01 04:39:29 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server initialisiert (async_mode: threading)
+2025-06-01 04:39:59 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet
+2025-06-01 04:39:59 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet
+2025-06-01 04:39:59 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server wird mit threading initialisiert (eventlet-Fallback)
+2025-06-01 04:39:59 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server initialisiert (async_mode: threading)
+2025-06-01 04:41:50 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet
+2025-06-01 04:41:50 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet
+2025-06-01 04:41:50 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server wird mit threading initialisiert (eventlet-Fallback)
+2025-06-01 04:41:50 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server initialisiert (async_mode: threading)
+2025-06-01 04:46:31 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet
+2025-06-01 04:46:31 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet
+2025-06-01 04:46:31 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server wird mit threading initialisiert (eventlet-Fallback)
+2025-06-01 04:46:31 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server initialisiert (async_mode: threading)
diff --git a/backend/logs/database/database.log b/backend/logs/database/database.log
index 756ca047..f5ae8b5e 100644
--- a/backend/logs/database/database.log
+++ b/backend/logs/database/database.log
@@ -24,3 +24,9 @@
2025-06-01 04:29:28 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet
2025-06-01 04:31:09 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet
2025-06-01 04:36:21 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet
+2025-06-01 04:36:33 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet
+2025-06-01 04:38:00 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet
+2025-06-01 04:39:28 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet
+2025-06-01 04:39:58 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet
+2025-06-01 04:41:49 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet
+2025-06-01 04:46:30 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet
diff --git a/backend/logs/email_notification/email_notification.log b/backend/logs/email_notification/email_notification.log
index 37c7f702..85004995 100644
--- a/backend/logs/email_notification/email_notification.log
+++ b/backend/logs/email_notification/email_notification.log
@@ -22,3 +22,9 @@
2025-06-01 04:29:28 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand)
2025-06-01 04:31:10 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand)
2025-06-01 04:36:22 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand)
+2025-06-01 04:36:34 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand)
+2025-06-01 04:38:01 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand)
+2025-06-01 04:39:29 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand)
+2025-06-01 04:39:59 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand)
+2025-06-01 04:41:50 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand)
+2025-06-01 04:46:31 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand)
diff --git a/backend/logs/jobs/jobs.log b/backend/logs/jobs/jobs.log
index 431d6def..8a504f78 100644
--- a/backend/logs/jobs/jobs.log
+++ b/backend/logs/jobs/jobs.log
@@ -52,3 +52,6 @@
2025-06-01 04:31:36 - [jobs] jobs - [INFO] INFO - Jobs abgerufen: 0 von 0 (Seite 1)
2025-06-01 04:31:53 - [jobs] jobs - [INFO] INFO - Jobs abgerufen: 0 von 0 (Seite 1)
2025-06-01 04:32:03 - [jobs] jobs - [INFO] INFO - Jobs abgerufen: 0 von 0 (Seite 1)
+2025-06-01 04:40:15 - [jobs] jobs - [INFO] INFO - Jobs abgerufen: 0 von 0 (Seite 1)
+2025-06-01 04:43:07 - [jobs] jobs - [INFO] INFO - Jobs abgerufen: 0 von 0 (Seite 1)
+2025-06-01 04:46:41 - [jobs] jobs - [INFO] INFO - Jobs abgerufen: 0 von 0 (Seite 1)
diff --git a/backend/logs/maintenance/maintenance.log b/backend/logs/maintenance/maintenance.log
index cddaf251..c8ed05e0 100644
--- a/backend/logs/maintenance/maintenance.log
+++ b/backend/logs/maintenance/maintenance.log
@@ -44,3 +44,15 @@
2025-06-01 04:31:10 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet
2025-06-01 04:36:22 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet
2025-06-01 04:36:22 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet
+2025-06-01 04:36:34 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet
+2025-06-01 04:36:34 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet
+2025-06-01 04:38:01 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet
+2025-06-01 04:38:01 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet
+2025-06-01 04:39:29 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet
+2025-06-01 04:39:29 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet
+2025-06-01 04:39:59 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet
+2025-06-01 04:39:59 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet
+2025-06-01 04:41:50 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet
+2025-06-01 04:41:50 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet
+2025-06-01 04:46:31 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet
+2025-06-01 04:46:31 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet
diff --git a/backend/logs/multi_location/multi_location.log b/backend/logs/multi_location/multi_location.log
index 99886626..31d7dea3 100644
--- a/backend/logs/multi_location/multi_location.log
+++ b/backend/logs/multi_location/multi_location.log
@@ -44,3 +44,15 @@
2025-06-01 04:31:10 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt
2025-06-01 04:36:22 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt
2025-06-01 04:36:22 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt
+2025-06-01 04:36:34 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt
+2025-06-01 04:36:34 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt
+2025-06-01 04:38:01 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt
+2025-06-01 04:38:01 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt
+2025-06-01 04:39:29 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt
+2025-06-01 04:39:29 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt
+2025-06-01 04:39:59 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt
+2025-06-01 04:39:59 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt
+2025-06-01 04:41:50 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt
+2025-06-01 04:41:50 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt
+2025-06-01 04:46:31 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt
+2025-06-01 04:46:31 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt
diff --git a/backend/logs/permissions/permissions.log b/backend/logs/permissions/permissions.log
index 29e32d27..7d0fd504 100644
--- a/backend/logs/permissions/permissions.log
+++ b/backend/logs/permissions/permissions.log
@@ -20,3 +20,9 @@
2025-06-01 04:29:29 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert
2025-06-01 04:31:10 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert
2025-06-01 04:36:22 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert
+2025-06-01 04:36:34 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert
+2025-06-01 04:38:01 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert
+2025-06-01 04:39:29 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert
+2025-06-01 04:39:59 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert
+2025-06-01 04:41:50 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert
+2025-06-01 04:46:31 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert
diff --git a/backend/logs/printer_monitor/printer_monitor.log b/backend/logs/printer_monitor/printer_monitor.log
index 208bd630..e94aabab 100644
--- a/backend/logs/printer_monitor/printer_monitor.log
+++ b/backend/logs/printer_monitor/printer_monitor.log
@@ -713,3 +713,143 @@
2025-06-01 04:32:52 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
2025-06-01 04:36:21 - [printer_monitor] printer_monitor - [INFO] INFO - 🖨️ Drucker-Monitor initialisiert
2025-06-01 04:36:21 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Automatische Tapo-Erkennung in separatem Thread gestartet
+2025-06-01 04:36:33 - [printer_monitor] printer_monitor - [INFO] INFO - 🖨️ Drucker-Monitor initialisiert
+2025-06-01 04:36:33 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Automatische Tapo-Erkennung in separatem Thread gestartet
+2025-06-01 04:38:00 - [printer_monitor] printer_monitor - [INFO] INFO - 🖨️ Drucker-Monitor initialisiert
+2025-06-01 04:38:00 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Automatische Tapo-Erkennung in separatem Thread gestartet
+2025-06-01 04:38:01 - [printer_monitor] printer_monitor - [INFO] INFO - 🚀 Starte Steckdosen-Initialisierung beim Programmstart...
+2025-06-01 04:38:01 - [printer_monitor] printer_monitor - [WARNING] WARNING - ⚠️ Keine aktiven Drucker zur Initialisierung gefunden
+2025-06-01 04:38:02 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Starte automatische Tapo-Steckdosenerkennung...
+2025-06-01 04:38:02 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Teste 6 Standard-IPs aus der Konfiguration
+2025-06-01 04:38:02 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 1/6: 192.168.0.103
+2025-06-01 04:38:05 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:38:05 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:38:05 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:38:05 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:38:08 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 2/6: 192.168.0.104
+2025-06-01 04:38:14 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 3/6: 192.168.0.100
+2025-06-01 04:38:20 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 4/6: 192.168.0.101
+2025-06-01 04:38:26 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 5/6: 192.168.0.102
+2025-06-01 04:38:32 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 6/6: 192.168.0.105
+2025-06-01 04:38:38 - [printer_monitor] printer_monitor - [INFO] INFO - ✅ Steckdosen-Erkennung abgeschlossen: 0/6 Steckdosen gefunden in 36.0s
+2025-06-01 04:39:28 - [printer_monitor] printer_monitor - [INFO] INFO - 🖨️ Drucker-Monitor initialisiert
+2025-06-01 04:39:28 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Automatische Tapo-Erkennung in separatem Thread gestartet
+2025-06-01 04:39:30 - [printer_monitor] printer_monitor - [INFO] INFO - 🚀 Starte Steckdosen-Initialisierung beim Programmstart...
+2025-06-01 04:39:30 - [printer_monitor] printer_monitor - [WARNING] WARNING - ⚠️ Keine aktiven Drucker zur Initialisierung gefunden
+2025-06-01 04:39:30 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Starte automatische Tapo-Steckdosenerkennung...
+2025-06-01 04:39:30 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Teste 6 Standard-IPs aus der Konfiguration
+2025-06-01 04:39:30 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 1/6: 192.168.0.103
+2025-06-01 04:39:58 - [printer_monitor] printer_monitor - [INFO] INFO - 🖨️ Drucker-Monitor initialisiert
+2025-06-01 04:39:58 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Automatische Tapo-Erkennung in separatem Thread gestartet
+2025-06-01 04:40:00 - [printer_monitor] printer_monitor - [INFO] INFO - 🚀 Starte Steckdosen-Initialisierung beim Programmstart...
+2025-06-01 04:40:00 - [printer_monitor] printer_monitor - [WARNING] WARNING - ⚠️ Keine aktiven Drucker zur Initialisierung gefunden
+2025-06-01 04:40:00 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Starte automatische Tapo-Steckdosenerkennung...
+2025-06-01 04:40:00 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Teste 6 Standard-IPs aus der Konfiguration
+2025-06-01 04:40:00 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 1/6: 192.168.0.103
+2025-06-01 04:40:06 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 2/6: 192.168.0.104
+2025-06-01 04:40:12 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 3/6: 192.168.0.100
+2025-06-01 04:40:18 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 4/6: 192.168.0.101
+2025-06-01 04:40:18 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:40:18 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:40:18 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:40:18 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:40:24 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 5/6: 192.168.0.102
+2025-06-01 04:40:30 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 6/6: 192.168.0.105
+2025-06-01 04:40:36 - [printer_monitor] printer_monitor - [INFO] INFO - ✅ Steckdosen-Erkennung abgeschlossen: 0/6 Steckdosen gefunden in 36.0s
+2025-06-01 04:41:49 - [printer_monitor] printer_monitor - [INFO] INFO - 🖨️ Drucker-Monitor initialisiert
+2025-06-01 04:41:49 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Automatische Tapo-Erkennung in separatem Thread gestartet
+2025-06-01 04:41:50 - [printer_monitor] printer_monitor - [INFO] INFO - 🚀 Starte Steckdosen-Initialisierung beim Programmstart...
+2025-06-01 04:41:50 - [printer_monitor] printer_monitor - [WARNING] WARNING - ⚠️ Keine aktiven Drucker zur Initialisierung gefunden
+2025-06-01 04:41:51 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Starte automatische Tapo-Steckdosenerkennung...
+2025-06-01 04:41:51 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Teste 6 Standard-IPs aus der Konfiguration
+2025-06-01 04:41:51 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 1/6: 192.168.0.103
+2025-06-01 04:41:57 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 2/6: 192.168.0.104
+2025-06-01 04:42:03 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 3/6: 192.168.0.100
+2025-06-01 04:42:09 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 4/6: 192.168.0.101
+2025-06-01 04:42:15 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 5/6: 192.168.0.102
+2025-06-01 04:42:21 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 6/6: 192.168.0.105
+2025-06-01 04:42:27 - [printer_monitor] printer_monitor - [INFO] INFO - ✅ Steckdosen-Erkennung abgeschlossen: 0/6 Steckdosen gefunden in 36.0s
+2025-06-01 04:43:04 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:43:04 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:43:04 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:43:04 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:43:07 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:43:07 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:43:07 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:43:07 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:43:20 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:43:20 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:43:20 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:43:20 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:43:21 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:43:21 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:43:21 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:43:21 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:43:22 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:43:22 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:43:22 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:43:22 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:43:27 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:43:27 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:43:27 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:43:27 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:43:33 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:43:33 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:43:33 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:43:33 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:43:36 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:43:36 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:43:36 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:43:36 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:44:07 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:44:07 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:44:07 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:44:07 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:44:38 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:44:38 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:44:38 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:44:38 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:44:39 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:44:39 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:44:39 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:44:39 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:45:10 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:45:10 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:45:10 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:45:10 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:45:11 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:45:11 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:45:11 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:45:11 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:45:42 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:45:42 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:45:42 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:45:42 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:45:43 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:45:43 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:45:43 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:45:43 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:46:14 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:46:14 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:46:14 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:46:14 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:46:15 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:46:15 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:46:15 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:46:15 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:46:30 - [printer_monitor] printer_monitor - [INFO] INFO - 🖨️ Drucker-Monitor initialisiert
+2025-06-01 04:46:30 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Automatische Tapo-Erkennung in separatem Thread gestartet
+2025-06-01 04:46:32 - [printer_monitor] printer_monitor - [INFO] INFO - 🚀 Starte Steckdosen-Initialisierung beim Programmstart...
+2025-06-01 04:46:32 - [printer_monitor] printer_monitor - [WARNING] WARNING - ⚠️ Keine aktiven Drucker zur Initialisierung gefunden
+2025-06-01 04:46:32 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:46:32 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:46:32 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:46:32 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:46:32 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Starte automatische Tapo-Steckdosenerkennung...
+2025-06-01 04:46:32 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Teste 6 Standard-IPs aus der Konfiguration
+2025-06-01 04:46:32 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 1/6: 192.168.0.103
+2025-06-01 04:46:33 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:46:33 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:46:33 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
+2025-06-01 04:46:33 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden
+2025-06-01 04:46:38 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 2/6: 192.168.0.104
diff --git a/backend/logs/printers/printers.log b/backend/logs/printers/printers.log
index 0d2edcfa..aec69e8d 100644
--- a/backend/logs/printers/printers.log
+++ b/backend/logs/printers/printers.log
@@ -3337,3 +3337,74 @@
2025-06-01 04:32:52 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 04:32:52 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 04:32:52 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 6.71ms
+2025-06-01 04:38:05 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
+2025-06-01 04:38:05 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
+2025-06-01 04:38:05 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 6.02ms
+2025-06-01 04:40:15 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check)
+2025-06-01 04:40:18 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check)
+2025-06-01 04:40:18 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
+2025-06-01 04:40:18 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
+2025-06-01 04:40:18 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 7.45ms
+2025-06-01 04:40:19 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check)
+2025-06-01 04:43:04 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
+2025-06-01 04:43:04 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
+2025-06-01 04:43:04 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 5.77ms
+2025-06-01 04:43:07 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check)
+2025-06-01 04:43:07 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
+2025-06-01 04:43:07 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
+2025-06-01 04:43:07 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 6.88ms
+2025-06-01 04:43:07 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check)
+2025-06-01 04:43:20 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check)
+2025-06-01 04:43:20 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
+2025-06-01 04:43:20 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
+2025-06-01 04:43:20 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 6.13ms
+2025-06-01 04:43:21 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
+2025-06-01 04:43:21 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
+2025-06-01 04:43:21 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 5.71ms
+2025-06-01 04:43:22 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check)
+2025-06-01 04:43:22 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
+2025-06-01 04:43:22 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
+2025-06-01 04:43:22 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 4.95ms
+2025-06-01 04:43:27 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
+2025-06-01 04:43:27 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
+2025-06-01 04:43:27 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 3.18ms
+2025-06-01 04:43:33 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
+2025-06-01 04:43:33 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
+2025-06-01 04:43:33 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 1.78ms
+2025-06-01 04:43:36 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
+2025-06-01 04:43:36 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
+2025-06-01 04:43:36 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 6.22ms
+2025-06-01 04:44:07 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
+2025-06-01 04:44:07 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
+2025-06-01 04:44:07 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 4.17ms
+2025-06-01 04:44:38 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
+2025-06-01 04:44:38 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
+2025-06-01 04:44:38 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 8.66ms
+2025-06-01 04:44:39 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
+2025-06-01 04:44:39 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
+2025-06-01 04:44:39 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 5.21ms
+2025-06-01 04:45:10 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
+2025-06-01 04:45:10 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
+2025-06-01 04:45:10 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 12.94ms
+2025-06-01 04:45:11 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
+2025-06-01 04:45:11 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
+2025-06-01 04:45:11 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 5.40ms
+2025-06-01 04:45:42 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
+2025-06-01 04:45:42 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
+2025-06-01 04:45:42 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 7.30ms
+2025-06-01 04:45:43 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
+2025-06-01 04:45:43 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
+2025-06-01 04:45:43 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 4.07ms
+2025-06-01 04:46:14 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
+2025-06-01 04:46:14 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
+2025-06-01 04:46:14 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 8.11ms
+2025-06-01 04:46:15 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
+2025-06-01 04:46:15 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
+2025-06-01 04:46:15 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 10.26ms
+2025-06-01 04:46:32 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
+2025-06-01 04:46:32 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
+2025-06-01 04:46:32 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 1.26ms
+2025-06-01 04:46:33 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
+2025-06-01 04:46:33 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
+2025-06-01 04:46:33 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 6.38ms
+2025-06-01 04:46:41 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check)
diff --git a/backend/logs/scheduler/scheduler.log b/backend/logs/scheduler/scheduler.log
index 00806711..59c7722e 100644
--- a/backend/logs/scheduler/scheduler.log
+++ b/backend/logs/scheduler/scheduler.log
@@ -2882,3 +2882,19 @@
2025-06-01 04:31:10 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet
2025-06-01 04:31:10 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet
2025-06-01 04:36:21 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True
+2025-06-01 04:36:33 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True
+2025-06-01 04:38:00 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True
+2025-06-01 04:38:01 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet
+2025-06-01 04:38:01 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet
+2025-06-01 04:39:28 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True
+2025-06-01 04:39:30 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet
+2025-06-01 04:39:30 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet
+2025-06-01 04:39:58 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True
+2025-06-01 04:40:00 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet
+2025-06-01 04:40:00 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet
+2025-06-01 04:41:49 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True
+2025-06-01 04:41:50 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet
+2025-06-01 04:41:50 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet
+2025-06-01 04:46:30 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True
+2025-06-01 04:46:32 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet
+2025-06-01 04:46:32 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet
diff --git a/backend/logs/security/security.log b/backend/logs/security/security.log
index e1e5920b..422469a4 100644
--- a/backend/logs/security/security.log
+++ b/backend/logs/security/security.log
@@ -20,3 +20,9 @@
2025-06-01 04:29:29 - [security] security - [INFO] INFO - 🔒 Security System initialisiert
2025-06-01 04:31:10 - [security] security - [INFO] INFO - 🔒 Security System initialisiert
2025-06-01 04:36:22 - [security] security - [INFO] INFO - 🔒 Security System initialisiert
+2025-06-01 04:36:34 - [security] security - [INFO] INFO - 🔒 Security System initialisiert
+2025-06-01 04:38:01 - [security] security - [INFO] INFO - 🔒 Security System initialisiert
+2025-06-01 04:39:29 - [security] security - [INFO] INFO - 🔒 Security System initialisiert
+2025-06-01 04:39:59 - [security] security - [INFO] INFO - 🔒 Security System initialisiert
+2025-06-01 04:41:50 - [security] security - [INFO] INFO - 🔒 Security System initialisiert
+2025-06-01 04:46:31 - [security] security - [INFO] INFO - 🔒 Security System initialisiert
diff --git a/backend/logs/shutdown_manager/shutdown_manager.log b/backend/logs/shutdown_manager/shutdown_manager.log
index b2866e1e..3d78cf7b 100644
--- a/backend/logs/shutdown_manager/shutdown_manager.log
+++ b/backend/logs/shutdown_manager/shutdown_manager.log
@@ -69,3 +69,13 @@
2025-06-01 04:36:22 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🧹 Führe 1 Cleanup-Funktionen aus...
2025-06-01 04:36:22 - [shutdown_manager] shutdown_manager - [INFO] INFO - ✅ Koordiniertes Shutdown abgeschlossen in 0.0s
2025-06-01 04:36:22 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🏁 System wird beendet...
+2025-06-01 04:36:34 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert
+2025-06-01 04:36:34 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔄 Starte koordiniertes System-Shutdown...
+2025-06-01 04:36:34 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🧹 Führe 1 Cleanup-Funktionen aus...
+2025-06-01 04:36:34 - [shutdown_manager] shutdown_manager - [INFO] INFO - ✅ Koordiniertes Shutdown abgeschlossen in 0.0s
+2025-06-01 04:36:34 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🏁 System wird beendet...
+2025-06-01 04:38:01 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert
+2025-06-01 04:39:29 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert
+2025-06-01 04:39:59 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert
+2025-06-01 04:41:50 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert
+2025-06-01 04:46:31 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert
diff --git a/backend/logs/startup/startup.log b/backend/logs/startup/startup.log
index 2523603b..16089955 100644
--- a/backend/logs/startup/startup.log
+++ b/backend/logs/startup/startup.log
@@ -192,3 +192,57 @@
2025-06-01 04:36:22 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert
2025-06-01 04:36:22 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert
2025-06-01 04:36:22 - [startup] startup - [INFO] INFO - ==================================================
+2025-06-01 04:36:34 - [startup] startup - [INFO] INFO - ==================================================
+2025-06-01 04:36:34 - [startup] startup - [INFO] INFO - 🚀 MYP Platform Backend wird gestartet...
+2025-06-01 04:36:34 - [startup] startup - [INFO] INFO - 🐍 Python Version: 3.13.3 (tags/v3.13.3:6280bb5, Apr 8 2025, 14:47:33) [MSC v.1943 64 bit (AMD64)]
+2025-06-01 04:36:34 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32)
+2025-06-01 04:36:34 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend
+2025-06-01 04:36:34 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-01T04:36:34.453836
+2025-06-01 04:36:34 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert
+2025-06-01 04:36:34 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert
+2025-06-01 04:36:34 - [startup] startup - [INFO] INFO - ==================================================
+2025-06-01 04:38:01 - [startup] startup - [INFO] INFO - ==================================================
+2025-06-01 04:38:01 - [startup] startup - [INFO] INFO - 🚀 MYP Platform Backend wird gestartet...
+2025-06-01 04:38:01 - [startup] startup - [INFO] INFO - 🐍 Python Version: 3.13.3 (tags/v3.13.3:6280bb5, Apr 8 2025, 14:47:33) [MSC v.1943 64 bit (AMD64)]
+2025-06-01 04:38:01 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32)
+2025-06-01 04:38:01 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend
+2025-06-01 04:38:01 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-01T04:38:01.515331
+2025-06-01 04:38:01 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert
+2025-06-01 04:38:01 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert
+2025-06-01 04:38:01 - [startup] startup - [INFO] INFO - ==================================================
+2025-06-01 04:39:29 - [startup] startup - [INFO] INFO - ==================================================
+2025-06-01 04:39:29 - [startup] startup - [INFO] INFO - 🚀 MYP Platform Backend wird gestartet...
+2025-06-01 04:39:29 - [startup] startup - [INFO] INFO - 🐍 Python Version: 3.13.3 (tags/v3.13.3:6280bb5, Apr 8 2025, 14:47:33) [MSC v.1943 64 bit (AMD64)]
+2025-06-01 04:39:29 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32)
+2025-06-01 04:39:29 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend
+2025-06-01 04:39:29 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-01T04:39:29.785583
+2025-06-01 04:39:29 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert
+2025-06-01 04:39:29 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert
+2025-06-01 04:39:29 - [startup] startup - [INFO] INFO - ==================================================
+2025-06-01 04:39:59 - [startup] startup - [INFO] INFO - ==================================================
+2025-06-01 04:39:59 - [startup] startup - [INFO] INFO - 🚀 MYP Platform Backend wird gestartet...
+2025-06-01 04:39:59 - [startup] startup - [INFO] INFO - 🐍 Python Version: 3.13.3 (tags/v3.13.3:6280bb5, Apr 8 2025, 14:47:33) [MSC v.1943 64 bit (AMD64)]
+2025-06-01 04:39:59 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32)
+2025-06-01 04:39:59 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend
+2025-06-01 04:39:59 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-01T04:39:59.650278
+2025-06-01 04:39:59 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert
+2025-06-01 04:39:59 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert
+2025-06-01 04:39:59 - [startup] startup - [INFO] INFO - ==================================================
+2025-06-01 04:41:50 - [startup] startup - [INFO] INFO - ==================================================
+2025-06-01 04:41:50 - [startup] startup - [INFO] INFO - 🚀 MYP Platform Backend wird gestartet...
+2025-06-01 04:41:50 - [startup] startup - [INFO] INFO - 🐍 Python Version: 3.13.3 (tags/v3.13.3:6280bb5, Apr 8 2025, 14:47:33) [MSC v.1943 64 bit (AMD64)]
+2025-06-01 04:41:50 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32)
+2025-06-01 04:41:50 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend
+2025-06-01 04:41:50 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-01T04:41:50.193284
+2025-06-01 04:41:50 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert
+2025-06-01 04:41:50 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert
+2025-06-01 04:41:50 - [startup] startup - [INFO] INFO - ==================================================
+2025-06-01 04:46:31 - [startup] startup - [INFO] INFO - ==================================================
+2025-06-01 04:46:31 - [startup] startup - [INFO] INFO - 🚀 MYP Platform Backend wird gestartet...
+2025-06-01 04:46:31 - [startup] startup - [INFO] INFO - 🐍 Python Version: 3.13.3 (tags/v3.13.3:6280bb5, Apr 8 2025, 14:47:33) [MSC v.1943 64 bit (AMD64)]
+2025-06-01 04:46:31 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32)
+2025-06-01 04:46:31 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend
+2025-06-01 04:46:31 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-01T04:46:31.751034
+2025-06-01 04:46:31 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert
+2025-06-01 04:46:31 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert
+2025-06-01 04:46:31 - [startup] startup - [INFO] INFO - ==================================================
diff --git a/backend/logs/windows_fixes/windows_fixes.log b/backend/logs/windows_fixes/windows_fixes.log
index 9f9a249c..20137bae 100644
--- a/backend/logs/windows_fixes/windows_fixes.log
+++ b/backend/logs/windows_fixes/windows_fixes.log
@@ -94,3 +94,27 @@
2025-06-01 04:36:21 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Subprocess automatisch gepatcht für UTF-8 Encoding (run + Popen)
2025-06-01 04:36:21 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Globaler subprocess-Patch angewendet
2025-06-01 04:36:21 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet
+2025-06-01 04:36:33 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an...
+2025-06-01 04:36:33 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Subprocess automatisch gepatcht für UTF-8 Encoding (run + Popen)
+2025-06-01 04:36:33 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Globaler subprocess-Patch angewendet
+2025-06-01 04:36:33 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet
+2025-06-01 04:38:00 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an...
+2025-06-01 04:38:00 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Subprocess automatisch gepatcht für UTF-8 Encoding (run + Popen)
+2025-06-01 04:38:00 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Globaler subprocess-Patch angewendet
+2025-06-01 04:38:00 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet
+2025-06-01 04:39:28 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an...
+2025-06-01 04:39:28 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Subprocess automatisch gepatcht für UTF-8 Encoding (run + Popen)
+2025-06-01 04:39:28 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Globaler subprocess-Patch angewendet
+2025-06-01 04:39:28 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet
+2025-06-01 04:39:58 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an...
+2025-06-01 04:39:58 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Subprocess automatisch gepatcht für UTF-8 Encoding (run + Popen)
+2025-06-01 04:39:58 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Globaler subprocess-Patch angewendet
+2025-06-01 04:39:58 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet
+2025-06-01 04:41:48 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an...
+2025-06-01 04:41:48 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Subprocess automatisch gepatcht für UTF-8 Encoding (run + Popen)
+2025-06-01 04:41:48 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Globaler subprocess-Patch angewendet
+2025-06-01 04:41:48 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet
+2025-06-01 04:46:30 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an...
+2025-06-01 04:46:30 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Subprocess automatisch gepatcht für UTF-8 Encoding (run + Popen)
+2025-06-01 04:46:30 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Globaler subprocess-Patch angewendet
+2025-06-01 04:46:30 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet
diff --git a/backend/static/js/glassmorphism-notifications.js b/backend/static/js/glassmorphism-notifications.js
index 993074d3..d7b8e31e 100644
--- a/backend/static/js/glassmorphism-notifications.js
+++ b/backend/static/js/glassmorphism-notifications.js
@@ -10,6 +10,10 @@ class GlassmorphismNotificationSystem {
this.soundEnabled = localStorage.getItem('myp-notification-sound') !== 'false';
this.animationsEnabled = !window.matchMedia('(prefers-reduced-motion: reduce)').matches;
+ // Callback-Registry für Actions hinzufügen
+ this.actionCallbacks = new Map();
+ this.callbackCounter = 0;
+
this.init();
this.setupGlobalFunctions();
this.injectStyles();
@@ -49,6 +53,9 @@ class GlassmorphismNotificationSystem {
window.showPersistentAlert = this.showPersistentAlert.bind(this);
window.showConfirmationToast = this.showConfirmationToast.bind(this);
window.showProgressToast = this.showProgressToast.bind(this);
+
+ // Globale Callback-Ausführungsfunktion
+ window.executeNotificationCallback = this.executeCallback.bind(this);
}
setupEventListeners() {
@@ -162,14 +169,23 @@ class GlassmorphismNotificationSystem {
}
createActionButtons(actions, toastId) {
- return actions.map(action => `
-
- `).join('');
+ return actions.map(action => {
+ // Callback in Registry speichern falls vorhanden
+ let callbackId = '';
+ if (action.callback && typeof action.callback === 'function') {
+ callbackId = `callback-${++this.callbackCounter}`;
+ this.actionCallbacks.set(callbackId, action.callback);
+ }
+
+ return `
+
+ `;
+ }).join('');
}
getIconSvg(type) {
@@ -299,6 +315,14 @@ class GlassmorphismNotificationSystem {
}
this.notifications.delete(toastId);
+
+ // Alle zugehörigen Callbacks löschen
+ this.actionCallbacks.forEach((callback, callbackId) => {
+ if (callbackId.includes(toastId)) {
+ this.actionCallbacks.delete(callbackId);
+ }
+ });
+
this.repositionAllToasts();
}
@@ -331,21 +355,49 @@ class GlassmorphismNotificationSystem {
* Spezielle Toast-Typen
*/
showConfirmationToast(message, onConfirm, onCancel = null, options = {}) {
+ const confirmCallback = () => {
+ if (typeof onConfirm === 'function') {
+ try {
+ onConfirm();
+ } catch (error) {
+ console.error('Fehler beim Ausführen der Bestätigungslogik:', error);
+ }
+ }
+ };
+
+ const cancelCallback = () => {
+ if (typeof onCancel === 'function') {
+ try {
+ onCancel();
+ } catch (error) {
+ console.error('Fehler beim Ausführen der Abbruchlogik:', error);
+ }
+ }
+ };
+
+ const actions = [
+ {
+ text: options.confirmText || 'Bestätigen',
+ type: 'primary',
+ callback: confirmCallback,
+ closeAfter: true
+ }
+ ];
+
+ // Cancel-Button nur hinzufügen wenn Callback vorhanden ist
+ if (onCancel || options.cancelText) {
+ actions.push({
+ text: options.cancelText || 'Abbrechen',
+ type: 'secondary',
+ callback: cancelCallback,
+ closeAfter: true
+ });
+ }
+
return this.showToast(message, 'warning', 0, {
persistent: true,
title: options.title || 'Bestätigung erforderlich',
- actions: [
- {
- text: options.confirmText || 'Bestätigen',
- type: 'primary',
- onClick: `(${onConfirm.toString()})()`
- },
- {
- text: options.cancelText || 'Abbrechen',
- type: 'secondary',
- onClick: onCancel ? `(${onCancel.toString()})()` : ''
- }
- ],
+ actions: actions,
...options
});
}
@@ -1485,6 +1537,43 @@ class GlassmorphismNotificationSystem {
document.head.appendChild(styles);
}
+
+ /**
+ * Behandelt Action-Button-Klicks
+ */
+ handleActionClick(callbackId, toastId, shouldClose = true) {
+ // Callback ausführen falls vorhanden
+ if (callbackId && this.actionCallbacks.has(callbackId)) {
+ const callback = this.actionCallbacks.get(callbackId);
+ try {
+ callback();
+ } catch (error) {
+ console.error('Fehler beim Ausführen des Action-Callbacks:', error);
+ }
+ // Callback nach Ausführung löschen
+ this.actionCallbacks.delete(callbackId);
+ }
+
+ // Toast schließen falls gewünscht
+ if (shouldClose) {
+ this.closeToast(toastId);
+ }
+ }
+
+ /**
+ * Für Rückwärtskompatibilität - führt Callback-Funktionen aus
+ */
+ executeCallback(callbackId) {
+ if (this.actionCallbacks.has(callbackId)) {
+ const callback = this.actionCallbacks.get(callbackId);
+ try {
+ callback();
+ } catch (error) {
+ console.error('Fehler beim Ausführen des Callbacks:', error);
+ }
+ this.actionCallbacks.delete(callbackId);
+ }
+ }
}
// Globale Instanz erstellen
diff --git a/backend/static/js/global-refresh-functions.js b/backend/static/js/global-refresh-functions.js
index 09bb98c6..61ad94ce 100644
--- a/backend/static/js/global-refresh-functions.js
+++ b/backend/static/js/global-refresh-functions.js
@@ -485,16 +485,25 @@ function updateStatsCounter(elementId, value, animate = true) {
return;
}
+ // Sichere Wert-Validierung hinzufügen
+ if (value === null || value === undefined) {
+ console.warn(`Ungültiger Wert für Element '${elementId}':`, value);
+ value = 0; // Fallback-Wert
+ }
+
if (animate) {
// Animierte Zählung
const currentValue = parseInt(element.textContent.replace(/[^\d]/g, '')) || 0;
const targetValue = parseInt(value.toString().replace(/[^\d]/g, '')) || 0;
if (currentValue !== targetValue) {
- animateCounter(element, currentValue, targetValue, value.toString());
+ // Sichere String-Konvertierung
+ const finalTextValue = value !== null && value !== undefined ? value.toString() : '0';
+ animateCounter(element, currentValue, targetValue, finalTextValue);
}
} else {
- element.textContent = value;
+ // Sichere Zuweisung ohne Animation
+ element.textContent = value !== null && value !== undefined ? value.toString() : '0';
}
}
@@ -502,6 +511,26 @@ function updateStatsCounter(elementId, value, animate = true) {
* Animierte Counter-Funktion
*/
function animateCounter(element, start, end, finalText) {
+ // Sichere Parameter-Validierung
+ if (!element) {
+ console.warn('animateCounter: Kein gültiges Element übergeben');
+ return;
+ }
+
+ // Sichere finalText-Validierung mit optimiertem Logging
+ if (typeof finalText !== 'string') {
+ // Nur bei problematischen Werten warnen (null, undefined, objects)
+ if (finalText === null || finalText === undefined || (typeof finalText === 'object' && finalText !== null)) {
+ console.warn('animateCounter: Problematischer finalText-Wert:', finalText);
+ }
+ // Normale Numbers stille konvertieren
+ finalText = finalText !== null && finalText !== undefined ? String(finalText) : '0';
+ }
+
+ // Sichere start/end-Validierung
+ start = parseInt(start) || 0;
+ end = parseInt(end) || 0;
+
const duration = 1000; // 1 Sekunde
const startTime = performance.now();
@@ -513,16 +542,28 @@ function animateCounter(element, start, end, finalText) {
const easeOut = 1 - Math.pow(1 - progress, 3);
const currentValue = Math.round(start + (end - start) * easeOut);
- if (finalText.includes('%')) {
- element.textContent = currentValue + '%';
- } else {
+ // Sichere includes-Prüfung
+ try {
+ if (typeof finalText === 'string' && finalText.includes('%')) {
+ element.textContent = currentValue + '%';
+ } else {
+ element.textContent = currentValue;
+ }
+ } catch (error) {
+ console.warn('animateCounter: Fehler bei finalText.includes:', error, 'finalText:', finalText);
element.textContent = currentValue;
}
if (progress < 1) {
requestAnimationFrame(updateCounter);
} else {
- element.textContent = finalText;
+ // Sichere Zuweisung des finalen Wertes
+ try {
+ element.textContent = finalText;
+ } catch (error) {
+ console.warn('animateCounter: Fehler bei finaler Zuweisung:', error);
+ element.textContent = String(end);
+ }
}
}
diff --git a/backend/static/js/printer_monitor.js b/backend/static/js/printer_monitor.js
index 01f4c92d..7664f852 100644
--- a/backend/static/js/printer_monitor.js
+++ b/backend/static/js/printer_monitor.js
@@ -161,20 +161,43 @@ class PrinterMonitor {
// Drucker-Daten aktualisieren
this.printers.clear();
- // Null-Check für data.printers hinzufügen
+ // Flexible Datenextraktion für verschiedene API-Response-Strukturen
+ let printersData = null;
+
if (data && data.printers && typeof data.printers === 'object') {
- Object.values(data.printers).forEach(printer => {
- this.printers.set(printer.id, {
- ...printer,
- statusInfo: this.statusCategories[printer.status] || this.statusCategories['offline']
- });
+ // Alte Struktur: data.printers
+ printersData = data.printers;
+ } else if (data && data.status && typeof data.status === 'object') {
+ // Neue Struktur: data.status
+ printersData = data.status;
+ } else if (data && typeof data === 'object' && !data.success && !data.error) {
+ // Direkte Drucker-Daten ohne Wrapper
+ printersData = data;
+ }
+
+ if (printersData && typeof printersData === 'object') {
+ // Drucker-Daten verarbeiten
+ Object.values(printersData).forEach(printer => {
+ // Sichere Validierung der Drucker-Objekte
+ if (printer && typeof printer === 'object' && printer.id) {
+ this.printers.set(printer.id, {
+ ...printer,
+ statusInfo: this.statusCategories[printer.status] || this.statusCategories['offline']
+ });
+ } else {
+ console.warn('⚠️ Ungültiges Drucker-Objekt übersprungen:', printer);
+ }
});
+
+ console.log(`✅ ${this.printers.size} Drucker erfolgreich verarbeitet`);
} else {
- console.warn('⚠️ Keine gültigen Drucker-Daten erhalten:', data);
- // Benachrichtige Callbacks über Fehler
+ console.warn('⚠️ Keine gültigen Drucker-Daten in Response-Struktur gefunden');
+ console.debug('Response-Struktur:', data);
+
+ // Benachrichtige Callbacks über fehlende Daten (aber nicht als Fehler)
this.notifyCallbacks({
- type: 'error',
- message: 'Ungültige Drucker-Daten erhalten',
+ type: 'warning',
+ message: 'Keine Drucker-Daten verfügbar',
data: data
});
return;
diff --git a/backend/templates/base.html b/backend/templates/base.html
index 7781969a..7c25b9ca 100644
--- a/backend/templates/base.html
+++ b/backend/templates/base.html
@@ -33,7 +33,6 @@
-