From 533132002a7cf84f33bbeb656d38421f8681d907 Mon Sep 17 00:00:00 2001 From: Till Tomczak Date: Fri, 20 Jun 2025 12:07:10 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=9A=20Improved=20log=20management=20sy?= =?UTF-8?q?stem=20structure=20and=20organization?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/logs/app/app.log | 107 ++++++++++++++++++ backend/logs/calendar/calendar.log | 7 ++ backend/logs/core_system/core_system.log | 4 + .../logs/data_management/data_management.log | 4 + .../drucker_steuerung/drucker_steuerung.log | 2 + .../energy_monitoring/energy_monitoring.log | 2 + .../hardware_integration.log | 23 ++++ .../job_queue_system/job_queue_system.log | 14 +++ backend/logs/jobs/jobs.log | 8 ++ .../monitoring_analytics.log | 4 + backend/logs/permissions/permissions.log | 2 + backend/logs/scheduler/scheduler.log | 59 ++++++++++ .../logs/security_suite/security_suite.log | 6 + backend/logs/startup/startup.log | 18 +++ backend/logs/windows_fixes/windows_fixes.log | 4 + backend/models.py | 91 +++++++++++++++ 16 files changed, 355 insertions(+) diff --git a/backend/logs/app/app.log b/backend/logs/app/app.log index 275c3cf4b..3896cd988 100644 --- a/backend/logs/app/app.log +++ b/backend/logs/app/app.log @@ -64749,3 +64749,110 @@ WHERE users.role = ?] 2025-06-20 12:05:33 - [app] app - [DEBUG] DEBUG - Response: 2025-06-20 12:05:52 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: database/myp.db 2025-06-20 12:05:52 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) +2025-06-20 12:05:58 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 12:05:58 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 12:05:58 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 12:05:58 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 12:05:59 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 12:05:59 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 12:05:59 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 12:05:59 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 12:06:00 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 12:06:00 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 12:06:03 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 12:06:03 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 12:06:03 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 12:06:03 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 12:06:03 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 12:06:03 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 12:06:03 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 12:06:03 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 12:06:03 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 12:06:03 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 12:06:14 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 12:06:14 - [app] app - [INFO] INFO - Locating template 'jobs.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\jobs.html') +2025-06-20 12:06:14 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 12:06:14 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 12:06:14 - [app] app - [INFO] INFO - Not Found (404): +2025-06-20 12:06:14 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 12:06:14 - [app] app - [ERROR] ERROR - Fehler beim Laden des Benutzers : +2025-06-20 12:06:14 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 12:06:14 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 12:06:14 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 12:06:14 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 12:06:14 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 12:06:14 - [app] app - [INFO] INFO - ✅ API: Drucker abgerufen (include_inactive=) +2025-06-20 12:06:14 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 12:06:20 - [app] app - [INFO] INFO - [SHUTDOWN] 🧹 Cleanup wird ausgeführt... +2025-06-20 12:06:20 - [app] app - [INFO] INFO - [SHUTDOWN] ✅ Queue Manager gestoppt +2025-06-20 12:06:20 - [app] app - [ERROR] ERROR - [SHUTDOWN] ❌ Cleanup-Fehler: +2025-06-20 12:06:21 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: database/myp.db +2025-06-20 12:06:22 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: +2025-06-20 12:06:22 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: +2025-06-20 12:06:22 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration +2025-06-20 12:06:22 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration +2025-06-20 12:06:22 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Konfiguration aktiviert +2025-06-20 12:06:22 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: +2025-06-20 12:06:22 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: +2025-06-20 12:06:22 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: +2025-06-20 12:06:22 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) +2025-06-20 12:06:22 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: erstellt, aktualisiert +2025-06-20 12:06:22 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP -Umgebung +2025-06-20 12:06:22 - [app] app - [INFO] INFO - [STARTUP] 🏢 +2025-06-20 12:06:22 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: +2025-06-20 12:06:22 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank... +2025-06-20 12:06:22 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert +2025-06-20 12:06:22 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert +2025-06-20 12:06:22 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin... +2025-06-20 12:06:23 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt. +2025-06-20 12:06:23 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft +2025-06-20 12:06:23 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker... +2025-06-20 12:06:23 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100) +2025-06-20 12:06:23 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101) +2025-06-20 12:06:23 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102) +2025-06-20 12:06:23 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103) +2025-06-20 12:06:23 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104) +2025-06-20 12:06:23 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106) +2025-06-20 12:06:23 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert +2025-06-20 12:06:23 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert +2025-06-20 12:06:23 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105) +2025-06-20 12:06:23 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert +2025-06-20 12:06:23 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager... +2025-06-20 12:06:23 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet +2025-06-20 12:06:23 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler... +2025-06-20 12:06:23 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet +2025-06-20 12:06:23 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Steckdosen (alle auf 'aus' = frei)... +2025-06-20 12:06:41 - [app] app - [WARNING] WARNING - [STARTUP] ⚠️ Keine der 6 Steckdosen konnte initialisiert werden +2025-06-20 12:06:41 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://: +2025-06-20 12:06:41 - [app] app - [INFO] INFO - Locating template 'dashboard.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\dashboard.html') +2025-06-20 12:06:41 - [app] app - [INFO] INFO - Locating template 'base.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\base.html') +2025-06-20 12:06:41 - [app] app - [INFO] INFO - Locating template 'macros/ui_components.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\macros\\ui_components.html') +2025-06-20 12:06:41 - [app] app - [DEBUG] DEBUG - Response: diff --git a/backend/logs/calendar/calendar.log b/backend/logs/calendar/calendar.log index 0dc2f110b..6ff4bed61 100644 --- a/backend/logs/calendar/calendar.log +++ b/backend/logs/calendar/calendar.log @@ -140,3 +140,10 @@ AttributeError: 'ConflictManager' object has no attribute 'detect_conflicts' 2025-06-20 10:28:28 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 2 Einträge für Zeitraum 2025-06-14 22:00:00+00:00 bis 2025-06-21 22:00:00+00:00 2025-06-20 10:31:22 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 2 Einträge für Zeitraum 2025-06-14 22:00:00+00:00 bis 2025-06-21 22:00:00+00:00 2025-06-20 10:39:57 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 2 Einträge für Zeitraum 2025-06-14 22:00:00+00:00 bis 2025-06-21 22:00:00+00:00 +2025-06-20 12:05:58 - [calendar] calendar - [INFO] INFO - 🔍 Konfliktprüfung abgeschlossen: 0 Konflikte, Schweregrad: 0, Automatisch lösbar: True +2025-06-20 12:05:59 - [calendar] calendar - [INFO] INFO - 🔍 Konfliktprüfung abgeschlossen: 0 Konflikte, Schweregrad: 0, Automatisch lösbar: True +2025-06-20 12:06:00 - [calendar] calendar - [INFO] INFO - 🔍 Konfliktprüfung abgeschlossen: 0 Konflikte, Schweregrad: 0, Automatisch lösbar: True +2025-06-20 12:06:03 - [calendar] calendar - [INFO] INFO - 🔍 Konfliktprüfung abgeschlossen: 0 Konflikte, Schweregrad: 0, Automatisch lösbar: True +2025-06-20 12:06:03 - [calendar] calendar - [INFO] INFO - Automatische Druckerzuweisung wird verwendet für Job 'test' +2025-06-20 12:06:03 - [calendar] calendar - [INFO] INFO - Automatische Druckerzuweisung: Drucker 1 (Score: 174, Load: 0) +2025-06-20 12:06:03 - [calendar] calendar - [INFO] INFO - Neuer Kalendereintrag erstellt: ID 3, Name: test, Drucker: Drucker 1 (automatisch zugewiesen) diff --git a/backend/logs/core_system/core_system.log b/backend/logs/core_system/core_system.log index 18c96211f..94e449738 100644 --- a/backend/logs/core_system/core_system.log +++ b/backend/logs/core_system/core_system.log @@ -504,3 +504,7 @@ 2025-06-20 12:02:02 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion) 2025-06-20 12:02:30 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert 2025-06-20 12:02:30 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion) +2025-06-20 12:05:13 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert +2025-06-20 12:05:13 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion) +2025-06-20 12:06:21 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert +2025-06-20 12:06:21 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion) diff --git a/backend/logs/data_management/data_management.log b/backend/logs/data_management/data_management.log index 638634035..53656cc1c 100644 --- a/backend/logs/data_management/data_management.log +++ b/backend/logs/data_management/data_management.log @@ -1043,3 +1043,7 @@ 2025-06-20 12:02:03 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) 2025-06-20 12:02:31 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert 2025-06-20 12:02:31 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-20 12:05:13 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert +2025-06-20 12:05:13 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-20 12:06:21 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert +2025-06-20 12:06:21 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) diff --git a/backend/logs/drucker_steuerung/drucker_steuerung.log b/backend/logs/drucker_steuerung/drucker_steuerung.log index 0243cdd83..b580ada24 100644 --- a/backend/logs/drucker_steuerung/drucker_steuerung.log +++ b/backend/logs/drucker_steuerung/drucker_steuerung.log @@ -109,3 +109,5 @@ 2025-06-20 12:01:07 - [drucker_steuerung] drucker_steuerung - [INFO] INFO - 🖨️ Drucker-Steuerungs-Blueprint (Backend-Kontrolle) geladen 2025-06-20 12:02:04 - [drucker_steuerung] drucker_steuerung - [INFO] INFO - 🖨️ Drucker-Steuerungs-Blueprint (Backend-Kontrolle) geladen 2025-06-20 12:02:32 - [drucker_steuerung] drucker_steuerung - [INFO] INFO - 🖨️ Drucker-Steuerungs-Blueprint (Backend-Kontrolle) geladen +2025-06-20 12:05:14 - [drucker_steuerung] drucker_steuerung - [INFO] INFO - 🖨️ Drucker-Steuerungs-Blueprint (Backend-Kontrolle) geladen +2025-06-20 12:06:22 - [drucker_steuerung] drucker_steuerung - [INFO] INFO - 🖨️ Drucker-Steuerungs-Blueprint (Backend-Kontrolle) geladen diff --git a/backend/logs/energy_monitoring/energy_monitoring.log b/backend/logs/energy_monitoring/energy_monitoring.log index 084c6ae11..c25c328cd 100644 --- a/backend/logs/energy_monitoring/energy_monitoring.log +++ b/backend/logs/energy_monitoring/energy_monitoring.log @@ -838,3 +838,5 @@ 2025-06-20 12:01:07 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert 2025-06-20 12:02:04 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert 2025-06-20 12:02:32 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert +2025-06-20 12:05:14 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert +2025-06-20 12:06:22 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert diff --git a/backend/logs/hardware_integration/hardware_integration.log b/backend/logs/hardware_integration/hardware_integration.log index 05e3c052e..f90df7f00 100644 --- a/backend/logs/hardware_integration/hardware_integration.log +++ b/backend/logs/hardware_integration/hardware_integration.log @@ -3888,3 +3888,26 @@ 2025-06-20 12:04:33 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Steckdose 192.168.0.104 ist im Netzwerk nicht erreichbar 2025-06-20 12:04:39 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ 192.168.0.106 ist über keine Methode erreichbar 2025-06-20 12:04:39 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Steckdose 192.168.0.106 ist im Netzwerk nicht erreichbar +2025-06-20 12:05:13 - [hardware_integration] hardware_integration - [INFO] INFO - 🚀 Hardware Integration (Backend-Kontrolle) erfolgreich geladen +2025-06-20 12:05:15 - [hardware_integration] hardware_integration - [INFO] INFO - 🎯 DruckerSteuerung initialisiert - BACKEND ÜBERNIMMT KONTROLLE +2025-06-20 12:05:39 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ 192.168.0.100 ist über keine Methode erreichbar +2025-06-20 12:05:39 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Steckdose 192.168.0.100 ist im Netzwerk nicht erreichbar +2025-06-20 12:05:41 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Energiedaten von 192.168.0.100 nicht abrufbar: HTTPConnectionPool(host='192.168.0.100', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.100 timed out. (connect timeout=2)')) +2025-06-20 12:05:43 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Energiedaten von 192.168.0.100 nicht abrufbar: HTTPConnectionPool(host='192.168.0.100', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.100 timed out. (connect timeout=2)')) +2025-06-20 12:05:46 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Energiedaten von 192.168.0.100 nicht abrufbar: HTTPConnectionPool(host='192.168.0.100', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.100 timed out. (connect timeout=2)')) +2025-06-20 12:05:51 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ 192.168.0.101 ist über keine Methode erreichbar +2025-06-20 12:05:51 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Steckdose 192.168.0.101 ist im Netzwerk nicht erreichbar +2025-06-20 12:05:53 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Energiedaten von 192.168.0.101 nicht abrufbar: HTTPConnectionPool(host='192.168.0.101', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.101 timed out. (connect timeout=2)')) +2025-06-20 12:05:55 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Energiedaten von 192.168.0.101 nicht abrufbar: HTTPConnectionPool(host='192.168.0.101', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.101 timed out. (connect timeout=2)')) +2025-06-20 12:05:58 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Energiedaten von 192.168.0.101 nicht abrufbar: HTTPConnectionPool(host='192.168.0.101', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.101 timed out. (connect timeout=2)')) +2025-06-20 12:06:03 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ 192.168.0.102 ist über keine Methode erreichbar +2025-06-20 12:06:03 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Steckdose 192.168.0.102 ist im Netzwerk nicht erreichbar +2025-06-20 12:06:05 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Energiedaten von 192.168.0.102 nicht abrufbar: HTTPConnectionPool(host='192.168.0.102', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.102 timed out. (connect timeout=2)')) +2025-06-20 12:06:07 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Energiedaten von 192.168.0.102 nicht abrufbar: HTTPConnectionPool(host='192.168.0.102', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.102 timed out. (connect timeout=2)')) +2025-06-20 12:06:10 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Energiedaten von 192.168.0.102 nicht abrufbar: HTTPConnectionPool(host='192.168.0.102', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.102 timed out. (connect timeout=2)')) +2025-06-20 12:06:15 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ 192.168.0.103 ist über keine Methode erreichbar +2025-06-20 12:06:15 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Steckdose 192.168.0.103 ist im Netzwerk nicht erreichbar +2025-06-20 12:06:17 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Energiedaten von 192.168.0.103 nicht abrufbar: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-20 12:06:19 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Energiedaten von 192.168.0.103 nicht abrufbar: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-20 12:06:21 - [hardware_integration] hardware_integration - [INFO] INFO - 🚀 Hardware Integration (Backend-Kontrolle) erfolgreich geladen +2025-06-20 12:06:23 - [hardware_integration] hardware_integration - [INFO] INFO - 🎯 DruckerSteuerung initialisiert - BACKEND ÜBERNIMMT KONTROLLE diff --git a/backend/logs/job_queue_system/job_queue_system.log b/backend/logs/job_queue_system/job_queue_system.log index 61f943f8a..92ab0c57f 100644 --- a/backend/logs/job_queue_system/job_queue_system.log +++ b/backend/logs/job_queue_system/job_queue_system.log @@ -2018,3 +2018,17 @@ 2025-06-20 12:02:31 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) 2025-06-20 12:02:32 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) 2025-06-20 12:05:12 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) +2025-06-20 12:05:13 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert +2025-06-20 12:05:13 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) +2025-06-20 12:05:15 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) +2025-06-20 12:05:58 - [job_queue_system] job_queue_system - [WARNING] WARNING - Unvollständige Job-Daten für Konflikt-Erkennung +2025-06-20 12:05:59 - [job_queue_system] job_queue_system - [WARNING] WARNING - Unvollständige Job-Daten für Konflikt-Erkennung +2025-06-20 12:06:00 - [job_queue_system] job_queue_system - [WARNING] WARNING - Unvollständige Job-Daten für Konflikt-Erkennung +2025-06-20 12:06:03 - [job_queue_system] job_queue_system - [WARNING] WARNING - Unvollständige Job-Daten für Konflikt-Erkennung +2025-06-20 12:06:20 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) +2025-06-20 12:06:21 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert +2025-06-20 12:06:21 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) +2025-06-20 12:06:23 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) +2025-06-20 12:06:41 - [job_queue_system] job_queue_system - [ERROR] ERROR - Fehler bei Konflikt-Erkennung: 'Job' object has no attribute 'priority' +2025-06-20 12:06:41 - [job_queue_system] job_queue_system - [ERROR] ERROR - Fehler bei Konflikt-Erkennung: 'Job' object has no attribute 'priority' +2025-06-20 12:06:41 - [job_queue_system] job_queue_system - [ERROR] ERROR - Fehler bei Konflikt-Erkennung: 'Job' object has no attribute 'priority' diff --git a/backend/logs/jobs/jobs.log b/backend/logs/jobs/jobs.log index 2a82745e9..e92439c0a 100644 --- a/backend/logs/jobs/jobs.log +++ b/backend/logs/jobs/jobs.log @@ -1103,3 +1103,11 @@ sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) FOREIGN KEY constraint f 2025-06-20 12:01:02 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 1 von 1 (Seite 1) 2025-06-20 12:01:30 - [jobs] jobs - [INFO] INFO - 📋 Jobs-Abfrage gestartet von Benutzer 1 (Admin: True) 2025-06-20 12:01:30 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 1 von 1 (Seite 1) +2025-06-20 12:06:14 - [jobs] jobs - [INFO] INFO - 📋 Jobs-Abfrage gestartet von Benutzer 1 (Admin: True) +2025-06-20 12:06:14 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 3 von 3 (Seite 1) +2025-06-20 12:06:41 - [jobs] jobs - [INFO] INFO - 🚀 Neue Job-Erstellung gestartet von Benutzer 1 +2025-06-20 12:06:41 - [jobs] jobs - [INFO] INFO - 🚀 Neue Job-Erstellung gestartet von Benutzer 1 +2025-06-20 12:06:41 - [jobs] jobs - [INFO] INFO - 🚀 Neue Job-Erstellung gestartet von Benutzer 1 +2025-06-20 12:06:41 - [jobs] jobs - [WARNING] WARNING - ⚠️ Kritische Konflikte gefunden: ["Fehler bei Konflikt-Analyse: 'Job' object has no attribute 'priority'"] +2025-06-20 12:06:41 - [jobs] jobs - [WARNING] WARNING - ⚠️ Kritische Konflikte gefunden: ["Fehler bei Konflikt-Analyse: 'Job' object has no attribute 'priority'"] +2025-06-20 12:06:41 - [jobs] jobs - [WARNING] WARNING - ⚠️ Kritische Konflikte gefunden: ["Fehler bei Konflikt-Analyse: 'Job' object has no attribute 'priority'"] diff --git a/backend/logs/monitoring_analytics/monitoring_analytics.log b/backend/logs/monitoring_analytics/monitoring_analytics.log index 92a470ed2..b7b78ff62 100644 --- a/backend/logs/monitoring_analytics/monitoring_analytics.log +++ b/backend/logs/monitoring_analytics/monitoring_analytics.log @@ -1031,3 +1031,7 @@ 2025-06-20 12:02:04 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) 2025-06-20 12:02:31 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert 2025-06-20 12:02:31 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-20 12:05:14 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert +2025-06-20 12:05:14 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-20 12:06:22 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert +2025-06-20 12:06:22 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) diff --git a/backend/logs/permissions/permissions.log b/backend/logs/permissions/permissions.log index 2a29d2fb2..aad310fc9 100644 --- a/backend/logs/permissions/permissions.log +++ b/backend/logs/permissions/permissions.log @@ -570,3 +570,5 @@ WHERE users.role = ?] 2025-06-20 12:03:02 - [permissions] permissions - [INFO] INFO - UserPermission für Admin-Benutzer 1 aktualisiert 2025-06-20 12:03:08 - [permissions] permissions - [INFO] INFO - UserPermission für Admin-Benutzer 1 aktualisiert 2025-06-20 12:03:09 - [permissions] permissions - [INFO] INFO - UserPermission für Admin-Benutzer 1 aktualisiert +2025-06-20 12:05:14 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert +2025-06-20 12:06:22 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert diff --git a/backend/logs/scheduler/scheduler.log b/backend/logs/scheduler/scheduler.log index f0f7e24ba..58eaecb74 100644 --- a/backend/logs/scheduler/scheduler.log +++ b/backend/logs/scheduler/scheduler.log @@ -4661,3 +4661,62 @@ 2025-06-20 12:05:02 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet 2025-06-20 12:05:02 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined 2025-06-20 12:05:02 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten +2025-06-20 12:05:13 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-20 12:05:15 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-20 12:05:15 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-20 12:05:15 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte Steckdosen-Initialisierung beim Systemstart... +2025-06-20 12:05:15 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet +2025-06-20 12:05:15 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined +2025-06-20 12:05:15 - [scheduler] scheduler - [INFO] INFO - 🔍 Prüfe 6 konfigurierte Steckdosen... +2025-06-20 12:05:15 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten +2025-06-20 12:05:18 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 1: Steckdose 192.168.0.100 nicht erreichbar +2025-06-20 12:05:19 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet +2025-06-20 12:05:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined +2025-06-20 12:05:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten +2025-06-20 12:05:21 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 2: Steckdose 192.168.0.101 nicht erreichbar +2025-06-20 12:05:24 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 3: Steckdose 192.168.0.102 nicht erreichbar +2025-06-20 12:05:27 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 4: Steckdose 192.168.0.103 nicht erreichbar +2025-06-20 12:05:30 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 5: Steckdose 192.168.0.104 nicht erreichbar +2025-06-20 12:05:33 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 6: Steckdose 192.168.0.106 nicht erreichbar +2025-06-20 12:05:33 - [scheduler] scheduler - [INFO] INFO - ============================================================ +2025-06-20 12:05:33 - [scheduler] scheduler - [INFO] INFO - 🎯 STECKDOSEN-INITIALISIERUNG ABGESCHLOSSEN +2025-06-20 12:05:33 - [scheduler] scheduler - [INFO] INFO - 📊 Gesamt: 6 Steckdosen +2025-06-20 12:05:33 - [scheduler] scheduler - [INFO] INFO - ✅ Erfolgreich: 0 +2025-06-20 12:05:33 - [scheduler] scheduler - [INFO] INFO - 📡 Nicht erreichbar: 6 +2025-06-20 12:05:33 - [scheduler] scheduler - [INFO] INFO - ❌ Fehlgeschlagen: 0 +2025-06-20 12:05:33 - [scheduler] scheduler - [WARNING] WARNING - ⚠️ KEINE Steckdose konnte initialisiert werden! +2025-06-20 12:05:33 - [scheduler] scheduler - [INFO] INFO - ============================================================ +2025-06-20 12:05:45 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet +2025-06-20 12:05:45 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined +2025-06-20 12:05:45 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten +2025-06-20 12:05:49 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet +2025-06-20 12:05:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined +2025-06-20 12:05:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten +2025-06-20 12:06:15 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet +2025-06-20 12:06:15 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined +2025-06-20 12:06:15 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten +2025-06-20 12:06:19 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet +2025-06-20 12:06:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined +2025-06-20 12:06:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten +2025-06-20 12:06:21 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-20 12:06:23 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-20 12:06:23 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-20 12:06:23 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte Steckdosen-Initialisierung beim Systemstart... +2025-06-20 12:06:23 - [scheduler] scheduler - [INFO] INFO - 🔍 Prüfe 6 konfigurierte Steckdosen... +2025-06-20 12:06:23 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet +2025-06-20 12:06:23 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined +2025-06-20 12:06:23 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten +2025-06-20 12:06:26 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 1: Steckdose 192.168.0.100 nicht erreichbar +2025-06-20 12:06:29 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 2: Steckdose 192.168.0.101 nicht erreichbar +2025-06-20 12:06:32 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 3: Steckdose 192.168.0.102 nicht erreichbar +2025-06-20 12:06:35 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 4: Steckdose 192.168.0.103 nicht erreichbar +2025-06-20 12:06:38 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 5: Steckdose 192.168.0.104 nicht erreichbar +2025-06-20 12:06:41 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 6: Steckdose 192.168.0.106 nicht erreichbar +2025-06-20 12:06:41 - [scheduler] scheduler - [INFO] INFO - ============================================================ +2025-06-20 12:06:41 - [scheduler] scheduler - [INFO] INFO - 🎯 STECKDOSEN-INITIALISIERUNG ABGESCHLOSSEN +2025-06-20 12:06:41 - [scheduler] scheduler - [INFO] INFO - 📊 Gesamt: 6 Steckdosen +2025-06-20 12:06:41 - [scheduler] scheduler - [INFO] INFO - ✅ Erfolgreich: 0 +2025-06-20 12:06:41 - [scheduler] scheduler - [INFO] INFO - 📡 Nicht erreichbar: 6 +2025-06-20 12:06:41 - [scheduler] scheduler - [INFO] INFO - ❌ Fehlgeschlagen: 0 +2025-06-20 12:06:41 - [scheduler] scheduler - [WARNING] WARNING - ⚠️ KEINE Steckdose konnte initialisiert werden! +2025-06-20 12:06:41 - [scheduler] scheduler - [INFO] INFO - ============================================================ diff --git a/backend/logs/security_suite/security_suite.log b/backend/logs/security_suite/security_suite.log index 17686b390..ae6bdc76e 100644 --- a/backend/logs/security_suite/security_suite.log +++ b/backend/logs/security_suite/security_suite.log @@ -1559,3 +1559,9 @@ 2025-06-20 12:02:31 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert 2025-06-20 12:02:31 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) 2025-06-20 12:02:32 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert +2025-06-20 12:05:13 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert +2025-06-20 12:05:13 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-20 12:05:14 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert +2025-06-20 12:06:21 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert +2025-06-20 12:06:21 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-20 12:06:22 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert diff --git a/backend/logs/startup/startup.log b/backend/logs/startup/startup.log index 4f52e9e75..1e73aef12 100644 --- a/backend/logs/startup/startup.log +++ b/backend/logs/startup/startup.log @@ -4124,3 +4124,21 @@ 2025-06-20 12:02:31 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert 2025-06-20 12:02:31 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert 2025-06-20 12:02:31 - [startup] startup - [INFO] INFO - ================================================== +2025-06-20 12:05:14 - [startup] startup - [INFO] INFO - ================================================== +2025-06-20 12:05:14 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet... +2025-06-20 12:05:14 - [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-20 12:05:14 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32) +2025-06-20 12:05:14 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend +2025-06-20 12:05:14 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-20T12:05:14.674501 +2025-06-20 12:05:14 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert +2025-06-20 12:05:14 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert +2025-06-20 12:05:14 - [startup] startup - [INFO] INFO - ================================================== +2025-06-20 12:06:22 - [startup] startup - [INFO] INFO - ================================================== +2025-06-20 12:06:22 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet... +2025-06-20 12:06:22 - [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-20 12:06:22 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32) +2025-06-20 12:06:22 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend +2025-06-20 12:06:22 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-20T12:06:22.860668 +2025-06-20 12:06:22 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert +2025-06-20 12:06:22 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert +2025-06-20 12:06:22 - [startup] startup - [INFO] INFO - ================================================== diff --git a/backend/logs/windows_fixes/windows_fixes.log b/backend/logs/windows_fixes/windows_fixes.log index 24f9853ad..0cfc26d10 100644 --- a/backend/logs/windows_fixes/windows_fixes.log +++ b/backend/logs/windows_fixes/windows_fixes.log @@ -507,3 +507,7 @@ 2025-06-20 12:02:02 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet 2025-06-20 12:02:30 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an... 2025-06-20 12:02:30 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet +2025-06-20 12:05:13 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an... +2025-06-20 12:05:13 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet +2025-06-20 12:06:21 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an... +2025-06-20 12:06:21 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet diff --git a/backend/models.py b/backend/models.py index 66bad02f1..01861f9f8 100644 --- a/backend/models.py +++ b/backend/models.py @@ -702,6 +702,7 @@ class Job(Base): if cached_result is not None: return cached_result + # Grundlegende Job-Informationen result = { "id": self.id, "name": self.name, @@ -722,10 +723,100 @@ class Job(Base): "printer": self.printer.to_dict() if self.printer else None } + # Frontend-kompatible Felder hinzufügen + result.update({ + # Alternative Namen für Frontend-Kompatibilität + "title": self.name, # Alias für name + "filename": self.name, # Fallback für filename + "file_name": self.name, # Weitere Alias für file_name + + # Drucker-Informationen direkt verfügbar machen + "printer_name": self.printer.name if self.printer else "Unbekannter Drucker", + "printer_model": self.printer.model if self.printer else None, + "printer_location": self.printer.location if self.printer else None, + "printer_status": self.printer.status if self.printer else "unknown", + + # Benutzer-Informationen direkt verfügbar machen + "user_name": self.user.name if self.user else "Unbekannter Benutzer", + "username": self.user.username if self.user else None, + "user_email": self.user.email if self.user else None, + + # Zeitstempel in verschiedenen Formaten + "start_time": self.start_at.strftime('%d.%m.%Y %H:%M') if self.start_at else "Nicht festgelegt", + "end_time": self.end_at.strftime('%d.%m.%Y %H:%M') if self.end_at else "Nicht festgelegt", + "created_time": self.created_at.strftime('%d.%m.%Y %H:%M') if self.created_at else "Unbekannt", + + # Status-Text in Deutsch + "status_text": self._get_status_text(self.status), + + # Fortschritt berechnen (falls Job läuft) + "progress": self._calculate_progress(), + + # Ist der Job aktiv? + "is_active": self.status in ['scheduled', 'running', 'printing'], + + # Verbleibende Zeit berechnen + "remaining_minutes": self._calculate_remaining_minutes() + }) + # Ergebnis cachen (3 Minuten für Jobs) set_cache(cache_key, result, 180) return result + def _get_status_text(self, status: str) -> str: + """Wandelt englische Status-Codes in deutsche Texte um""" + status_mapping = { + 'scheduled': 'Geplant', + 'pending': 'Wartend', + 'ready': 'Bereit', + 'running': 'Läuft', + 'printing': 'Druckt', + 'paused': 'Pausiert', + 'completed': 'Abgeschlossen', + 'finished': 'Beendet', + 'failed': 'Fehlgeschlagen', + 'cancelled': 'Abgebrochen', + 'aborted': 'Abgebrochen', + 'waiting_for_printer': 'Wartet auf Drucker' + } + return status_mapping.get(status, status.title() if status else 'Unbekannt') + + def _calculate_progress(self) -> int: + """Berechnet den Fortschritt des Jobs in Prozent""" + if not self.start_at or not self.end_at: + return 0 + + now = datetime.now() + + if self.status == 'completed' or self.status == 'finished': + return 100 + elif self.status in ['failed', 'cancelled', 'aborted']: + return 0 + elif self.status in ['scheduled', 'pending']: + return 0 + elif self.status in ['running', 'printing']: + # Fortschritt basierend auf verstrichener Zeit + total_duration = (self.end_at - self.start_at).total_seconds() + elapsed_time = (now - self.start_at).total_seconds() + + if total_duration > 0: + progress = int((elapsed_time / total_duration) * 100) + return min(max(progress, 0), 100) # Zwischen 0 und 100 begrenzen + + return 0 + + def _calculate_remaining_minutes(self) -> int: + """Berechnet die verbleibenden Minuten für den Job""" + if not self.end_at or self.status not in ['running', 'printing']: + return 0 + + now = datetime.now() + if now >= self.end_at: + return 0 + + remaining_seconds = (self.end_at - now).total_seconds() + return max(int(remaining_seconds / 60), 0) + def update_status(self, new_status: str): """ Aktualisiert den Job-Status und invalidiert den Cache.