diff --git a/backend/DOCS/ADMIN_GUEST_REQUESTS_API_FIX.md b/backend/DOCS/ADMIN_GUEST_REQUESTS_API_FIX.md new file mode 100644 index 000000000..0519ecba6 --- /dev/null +++ b/backend/DOCS/ADMIN_GUEST_REQUESTS_API_FIX.md @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/DOCS/STECKDOSEN_STARTUP_INITIALISIERUNG.md b/backend/DOCS/STECKDOSEN_STARTUP_INITIALISIERUNG.md new file mode 100644 index 000000000..0519ecba6 --- /dev/null +++ b/backend/DOCS/STECKDOSEN_STARTUP_INITIALISIERUNG.md @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/app.py b/backend/app.py index 03b45bc63..502cdb7e1 100644 --- a/backend/app.py +++ b/backend/app.py @@ -1946,6 +1946,28 @@ def main(): if scheduler: scheduler.start() app_logger.info("[STARTUP] ✅ Job Scheduler gestartet") + + # Steckdosen beim Systemstart initialisieren + app_logger.info("[STARTUP] Initialisiere Steckdosen (alle auf 'aus' = frei)...") + try: + initialization_results = scheduler.initialize_all_outlets_on_startup() + + if initialization_results: + success_count = sum(1 for result in initialization_results.values() if result.get('success', False)) + total_count = len(initialization_results) + + if success_count == total_count: + app_logger.info(f"[STARTUP] ✅ Alle {total_count} Steckdosen erfolgreich initialisiert") + elif success_count > 0: + app_logger.info(f"[STARTUP] ⚡ {success_count}/{total_count} Steckdosen erfolgreich initialisiert") + else: + app_logger.warning(f"[STARTUP] ⚠️ Keine der {total_count} Steckdosen konnte initialisiert werden") + else: + app_logger.info("[STARTUP] ℹ️ Keine Steckdosen zur Initialisierung gefunden") + + except Exception as e: + app_logger.warning(f"[STARTUP] ⚠️ Fehler bei Steckdosen-Initialisierung: {str(e)}") + else: app_logger.warning("[STARTUP] ⚠️ Job Scheduler nicht verfügbar") diff --git a/backend/backend/database/myp.db b/backend/backend/database/myp.db index 746ff98bc..caeab6b2c 100644 Binary files a/backend/backend/database/myp.db and b/backend/backend/database/myp.db differ diff --git a/backend/logs/admin/admin.log b/backend/logs/admin/admin.log index 763e8bd32..aa356f91b 100644 --- a/backend/logs/admin/admin.log +++ b/backend/logs/admin/admin.log @@ -1855,3 +1855,22 @@ jinja2.exceptions.UndefinedError: 'maintenance_info' is undefined 2025-06-20 08:19:36 - [admin] admin - [INFO] INFO - Tapo-Monitoring aufgerufen von admin 2025-06-20 08:19:39 - [admin] admin - [INFO] INFO - Tapo-Monitoring geladen: 6 Steckdosen, 0 online 2025-06-20 08:19:42 - [admin] admin - [INFO] INFO - Admin-Check für Funktion api_admin_tapo_health_check: User authenticated: True, User ID: 1, Is Admin: True +2025-06-20 08:20:20 - [admin] admin - [INFO] INFO - Admin-Check für Funktion tapo_monitoring: User authenticated: True, User ID: 1, Is Admin: True +2025-06-20 08:20:20 - [admin] admin - [INFO] INFO - Tapo-Monitoring aufgerufen von admin +2025-06-20 08:20:20 - [admin] admin - [INFO] INFO - Admin-Check für Funktion tapo_monitoring: User authenticated: True, User ID: 1, Is Admin: True +2025-06-20 08:20:20 - [admin] admin - [INFO] INFO - Tapo-Monitoring aufgerufen von admin +2025-06-20 08:20:23 - [admin] admin - [INFO] INFO - Tapo-Monitoring geladen: 6 Steckdosen, 0 online +2025-06-20 08:20:23 - [admin] admin - [INFO] INFO - Tapo-Monitoring geladen: 6 Steckdosen, 0 online +2025-06-20 08:22:15 - [admin] admin - [INFO] INFO - Admin-Check für Funktion admin_dashboard: User authenticated: True, User ID: 1, Is Admin: True +2025-06-20 08:22:15 - [admin] admin - [INFO] INFO - Admin-Dashboard geladen von admin +2025-06-20 08:22:15 - [admin] admin - [ERROR] ERROR - Fehler beim Laden des Admin-Dashboards: 'dict object' has no attribute 'online_printers' +2025-06-20 08:22:15 - [admin] admin - [INFO] INFO - Admin-Check für Funktion api_admin_live_stats: User authenticated: True, User ID: 1, Is Admin: True +2025-06-20 08:22:15 - [admin] admin - [INFO] INFO - Admin-Check für Funktion get_system_status_api: User authenticated: True, User ID: 1, Is Admin: True +2025-06-20 08:22:16 - [admin] admin - [INFO] INFO - System-Status abgerufen von admin +2025-06-20 08:22:17 - [admin] admin - [INFO] INFO - Admin-Check für Funktion guest_requests: User authenticated: True, User ID: 1, Is Admin: True +2025-06-20 08:22:48 - [admin] admin - [INFO] INFO - Admin-Check für Funktion get_guest_requests_api: User authenticated: True, User ID: 1, Is Admin: True +2025-06-20 08:22:48 - [admin] admin - [INFO] INFO - Gastanfragen abgerufen: 0 Einträge für Admin Administrator +2025-06-20 08:23:18 - [admin] admin - [INFO] INFO - Admin-Check für Funktion get_guest_requests_api: User authenticated: True, User ID: 1, Is Admin: True +2025-06-20 08:23:18 - [admin] admin - [INFO] INFO - Gastanfragen abgerufen: 0 Einträge für Admin Administrator +2025-06-20 08:23:48 - [admin] admin - [INFO] INFO - Admin-Check für Funktion get_guest_requests_api: User authenticated: True, User ID: 1, Is Admin: True +2025-06-20 08:23:48 - [admin] admin - [INFO] INFO - Gastanfragen abgerufen: 0 Einträge für Admin Administrator diff --git a/backend/logs/admin_api/admin_api.log b/backend/logs/admin_api/admin_api.log index 379b9ee06..bd1502eb2 100644 --- a/backend/logs/admin_api/admin_api.log +++ b/backend/logs/admin_api/admin_api.log @@ -704,3 +704,4 @@ 2025-06-20 08:19:42 - [admin_api] admin_api - [ERROR] ERROR - Fehler beim Gesundheitscheck für Drucker 5: 'DruckerSteuerung' object has no attribute 'ping_address' 2025-06-20 08:19:42 - [admin_api] admin_api - [ERROR] ERROR - Fehler beim Gesundheitscheck für Drucker 6: 'DruckerSteuerung' object has no attribute 'ping_address' 2025-06-20 08:19:42 - [admin_api] admin_api - [INFO] INFO - Tapo-Gesundheitscheck abgeschlossen: {'total': 6, 'healthy': 0, 'warning': 0, 'critical': 6} +2025-06-20 08:22:15 - [admin_api] admin_api - [INFO] INFO - Live-Statistiken abgerufen von Admin admin diff --git a/backend/logs/app/app.log b/backend/logs/app/app.log index ec545e1f1..9f3ad7770 100644 --- a/backend/logs/app/app.log +++ b/backend/logs/app/app.log @@ -58774,3 +58774,565 @@ WHERE users.role = ?] 2025-06-20 08:19:39 - [app] app - [DEBUG] DEBUG - Response: 2025-06-20 08:19:42 - [app] app - [DEBUG] DEBUG - Request: 2025-06-20 08:19:42 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:20:14 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: backend/database/myp.db +2025-06-20 08:20:16 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: +2025-06-20 08:20:16 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: +2025-06-20 08:20:16 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration +2025-06-20 08:20:16 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration +2025-06-20 08:20:16 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Konfiguration aktiviert +2025-06-20 08:20:16 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: +2025-06-20 08:20:16 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: +2025-06-20 08:20:16 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: +2025-06-20 08:20:16 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) +2025-06-20 08:20:16 - [app] app - [WARNING] WARNING - Fehler beim Korrigieren der Admin-Berechtigungen: +2025-06-20 08:20:16 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP -Umgebung +2025-06-20 08:20:16 - [app] app - [INFO] INFO - [STARTUP] 🏢 +2025-06-20 08:20:16 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: +2025-06-20 08:20:16 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank... +2025-06-20 08:20:16 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert +2025-06-20 08:20:16 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert +2025-06-20 08:20:16 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin... +2025-06-20 08:20:16 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) wurde angelegt. +2025-06-20 08:20:16 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft +2025-06-20 08:20:16 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker... +2025-06-20 08:20:16 - [app] app - [INFO] INFO - Drucker erstellt: Drucker 1 (192.168.0.100) +2025-06-20 08:20:16 - [app] app - [INFO] INFO - Drucker erstellt: Drucker 2 (192.168.0.101) +2025-06-20 08:20:16 - [app] app - [INFO] INFO - Drucker erstellt: Drucker 3 (192.168.0.102) +2025-06-20 08:20:16 - [app] app - [INFO] INFO - Drucker erstellt: Drucker 4 (192.168.0.103) +2025-06-20 08:20:16 - [app] app - [INFO] INFO - Drucker erstellt: Drucker 5 (192.168.0.104) +2025-06-20 08:20:16 - [app] app - [INFO] INFO - Drucker erstellt: Drucker 6 (192.168.0.106) +2025-06-20 08:20:16 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 6 erstellt, 0 aktualisiert +2025-06-20 08:20:16 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert +2025-06-20 08:20:16 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105) +2025-06-20 08:20:16 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert +2025-06-20 08:20:16 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager... +2025-06-20 08:20:16 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet +2025-06-20 08:20:16 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler... +2025-06-20 08:20:16 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet +2025-06-20 08:20:16 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://: +2025-06-20 08:20:18 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: backend/database/myp.db +2025-06-20 08:20:19 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: +2025-06-20 08:20:19 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: +2025-06-20 08:20:19 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration +2025-06-20 08:20:19 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration +2025-06-20 08:20:19 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Konfiguration aktiviert +2025-06-20 08:20:19 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: +2025-06-20 08:20:19 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: +2025-06-20 08:20:19 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: +2025-06-20 08:20:19 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) +2025-06-20 08:20:19 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: erstellt, aktualisiert +2025-06-20 08:20:19 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP -Umgebung +2025-06-20 08:20:19 - [app] app - [INFO] INFO - [STARTUP] 🏢 +2025-06-20 08:20:19 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: +2025-06-20 08:20:19 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank... +2025-06-20 08:20:19 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert +2025-06-20 08:20:19 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert +2025-06-20 08:20:19 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin... +2025-06-20 08:20:19 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt. +2025-06-20 08:20:19 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft +2025-06-20 08:20:19 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker... +2025-06-20 08:20:19 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100) +2025-06-20 08:20:19 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101) +2025-06-20 08:20:19 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102) +2025-06-20 08:20:19 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103) +2025-06-20 08:20:19 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104) +2025-06-20 08:20:19 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106) +2025-06-20 08:20:20 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert +2025-06-20 08:20:20 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert +2025-06-20 08:20:20 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105) +2025-06-20 08:20:20 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert +2025-06-20 08:20:20 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager... +2025-06-20 08:20:20 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet +2025-06-20 08:20:20 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler... +2025-06-20 08:20:20 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet +2025-06-20 08:20:20 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://: +2025-06-20 08:20:23 - [app] app - [INFO] INFO - Locating template 'admin_tapo_monitoring.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\\admin_tapo_monitoring.html') +2025-06-20 08:20:23 - [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 08:20:23 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:20:23 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:20:23 - [app] app - [ERROR] ERROR - Fehler beim Laden des Benutzers : +2025-06-20 08:20:23 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:20:23 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:20:33 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:20:33 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 1, Status: disconnected, Quelle: system +2025-06-20 08:20:33 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:20:33 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 2, Status: disconnected, Quelle: system +2025-06-20 08:20:33 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:20:33 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 3, Status: disconnected, Quelle: system +2025-06-20 08:20:33 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:20:34 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 4, Status: disconnected, Quelle: system +2025-06-20 08:20:34 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:20:36 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 5, Status: disconnected, Quelle: system +2025-06-20 08:20:36 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:20:36 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 6, Status: disconnected, Quelle: system +2025-06-20 08:20:36 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:20:36 - [app] app - [DEBUG] DEBUG - ✅ Status-Updates für Drucker erfolgreich gespeichert +2025-06-20 08:20:36 - [app] app - [INFO] INFO - Locating template 'printers.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\\printers.html') +2025-06-20 08:20:36 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:20:37 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:20:37 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:20:44 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:20:44 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 1, Status: disconnected, Quelle: system +2025-06-20 08:20:44 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:20:44 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 2, Status: disconnected, Quelle: system +2025-06-20 08:20:44 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:20:44 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 3, Status: disconnected, Quelle: system +2025-06-20 08:20:44 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:20:45 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 4, Status: disconnected, Quelle: system +2025-06-20 08:20:45 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:20:47 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 5, Status: disconnected, Quelle: system +2025-06-20 08:20:47 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:20:47 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 6, Status: disconnected, Quelle: system +2025-06-20 08:20:47 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:20:47 - [app] app - [DEBUG] DEBUG - ✅ Status-Updates für Drucker erfolgreich gespeichert +2025-06-20 08:20:47 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:20:47 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:20:47 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:20:58 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:20:58 - [app] app - [INFO] INFO - Locating template 'energy_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\\energy_dashboard.html') +2025-06-20 08:20:58 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:21:11 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:21:11 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:21:11 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:21:11 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:21:15 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:21:15 - [app] app - [INFO] INFO - Locating template 'energy_device_details.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\\energy_device_details.html') +2025-06-20 08:21:15 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:21:16 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:21:16 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:21:16 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:21:16 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:21:16 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:21:16 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:21:16 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:21:16 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:21:16 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:21:16 - [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 08:21:16 - [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 08:21:16 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:21:22 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:21:22 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 1, Status: disconnected, Quelle: system +2025-06-20 08:21:22 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:21:22 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 2, Status: disconnected, Quelle: system +2025-06-20 08:21:22 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:21:23 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 3, Status: disconnected, Quelle: system +2025-06-20 08:21:23 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:21:23 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 4, Status: disconnected, Quelle: system +2025-06-20 08:21:23 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:21:25 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 5, Status: disconnected, Quelle: system +2025-06-20 08:21:25 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:21:25 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 6, Status: disconnected, Quelle: system +2025-06-20 08:21:25 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:21:25 - [app] app - [DEBUG] DEBUG - ✅ Status-Updates für Drucker erfolgreich gespeichert +2025-06-20 08:21:25 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:21:26 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:21:26 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:21:56 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:21:56 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:22:15 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:22:15 - [app] app - [INFO] INFO - Locating template 'admin.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\\admin.html') +2025-06-20 08:22:15 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:22:15 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:22:15 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:22:15 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:22:15 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:22:15 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:22:16 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:22:17 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:22:17 - [app] app - [INFO] INFO - Locating template 'admin_guest_requests.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\\admin_guest_requests.html') +2025-06-20 08:22:17 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:22:18 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:22:18 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:22:18 - [app] app - [ERROR] ERROR - Fehler beim Laden des Benutzers : +2025-06-20 08:22:18 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:22:18 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:22:18 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:22:18 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:22:18 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:22:18 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:22:18 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:22:18 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:22:30 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:22:30 - [app] app - [INFO] INFO - Not Found (404): +2025-06-20 08:22:30 - [app] app - [INFO] INFO - Locating template 'errors/404.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\\errors\\404.html') +2025-06-20 08:22:30 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:22:48 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:22:48 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:22:48 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:22:48 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:23:18 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:23:18 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:23:18 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:23:18 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:23:48 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:23:48 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:23:48 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:23:48 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:24:07 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:24:08 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 1, Status: disconnected, Quelle: system +2025-06-20 08:24:08 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:24:08 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 2, Status: disconnected, Quelle: system +2025-06-20 08:24:08 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:24:08 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 3, Status: disconnected, Quelle: system +2025-06-20 08:24:08 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:24:08 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 4, Status: disconnected, Quelle: system +2025-06-20 08:24:08 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:24:10 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 5, Status: disconnected, Quelle: system +2025-06-20 08:24:10 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:24:10 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 6, Status: disconnected, Quelle: system +2025-06-20 08:24:10 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:24:10 - [app] app - [DEBUG] DEBUG - ✅ Status-Updates für Drucker erfolgreich gespeichert +2025-06-20 08:24:10 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:24:11 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:24:11 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:24:14 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:24:15 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 1, Status: disconnected, Quelle: system +2025-06-20 08:24:15 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:24:15 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 2, Status: disconnected, Quelle: system +2025-06-20 08:24:15 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:24:15 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 3, Status: disconnected, Quelle: system +2025-06-20 08:24:15 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:24:15 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 4, Status: disconnected, Quelle: system +2025-06-20 08:24:15 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:24:17 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 5, Status: disconnected, Quelle: system +2025-06-20 08:24:17 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:24:17 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 6, Status: disconnected, Quelle: system +2025-06-20 08:24:17 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:24:17 - [app] app - [DEBUG] DEBUG - ✅ Status-Updates für Drucker erfolgreich gespeichert +2025-06-20 08:24:17 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:24:18 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:24:18 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:24:30 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:24:31 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 1, Status: disconnected, Quelle: system +2025-06-20 08:24:31 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:24:31 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 2, Status: disconnected, Quelle: system +2025-06-20 08:24:31 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:24:33 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 3, Status: disconnected, Quelle: system +2025-06-20 08:24:33 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:24:34 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 4, Status: disconnected, Quelle: system +2025-06-20 08:24:34 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:24:36 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 5, Status: disconnected, Quelle: system +2025-06-20 08:24:36 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:24:36 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 6, Status: disconnected, Quelle: system +2025-06-20 08:24:36 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:24:36 - [app] app - [DEBUG] DEBUG - ✅ Status-Updates für Drucker erfolgreich gespeichert +2025-06-20 08:24:36 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:24:36 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:24:36 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:25:06 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:25:06 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:25:36 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:25:36 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:25:55 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:25:56 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 1, Status: disconnected, Quelle: system +2025-06-20 08:25:56 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:25:56 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 2, Status: disconnected, Quelle: system +2025-06-20 08:25:56 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:25:56 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 3, Status: disconnected, Quelle: system +2025-06-20 08:25:56 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:25:56 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 4, Status: disconnected, Quelle: system +2025-06-20 08:25:56 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:25:59 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 5, Status: disconnected, Quelle: system +2025-06-20 08:25:59 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:25:59 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 6, Status: disconnected, Quelle: system +2025-06-20 08:25:59 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:25:59 - [app] app - [DEBUG] DEBUG - ✅ Status-Updates für Drucker erfolgreich gespeichert +2025-06-20 08:25:59 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:25:59 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:25:59 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:26:29 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:26:29 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:26:33 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:26:33 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 1, Status: disconnected, Quelle: system +2025-06-20 08:26:33 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:26:33 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 2, Status: disconnected, Quelle: system +2025-06-20 08:26:33 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:26:33 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 3, Status: disconnected, Quelle: system +2025-06-20 08:26:33 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:26:33 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 4, Status: disconnected, Quelle: system +2025-06-20 08:26:33 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:26:35 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 5, Status: disconnected, Quelle: system +2025-06-20 08:26:35 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:26:36 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 6, Status: disconnected, Quelle: system +2025-06-20 08:26:36 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:26:36 - [app] app - [DEBUG] DEBUG - ✅ Status-Updates für Drucker erfolgreich gespeichert +2025-06-20 08:26:36 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:26:36 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:26:36 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:27:07 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:27:07 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:31:43 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: backend/database/myp.db +2025-06-20 08:33:20 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: backend/database/myp.db +2025-06-20 08:33:21 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: +2025-06-20 08:33:21 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: +2025-06-20 08:33:21 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration +2025-06-20 08:33:21 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration +2025-06-20 08:33:21 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Konfiguration aktiviert +2025-06-20 08:33:21 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: +2025-06-20 08:33:21 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: +2025-06-20 08:33:21 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: +2025-06-20 08:33:21 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) +2025-06-20 08:33:21 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: erstellt, aktualisiert +2025-06-20 08:33:21 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP -Umgebung +2025-06-20 08:33:21 - [app] app - [INFO] INFO - [STARTUP] 🏢 +2025-06-20 08:33:21 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: +2025-06-20 08:33:21 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank... +2025-06-20 08:33:21 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert +2025-06-20 08:33:21 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert +2025-06-20 08:33:21 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin... +2025-06-20 08:33:22 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt. +2025-06-20 08:33:22 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft +2025-06-20 08:33:22 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker... +2025-06-20 08:33:22 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100) +2025-06-20 08:33:22 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101) +2025-06-20 08:33:22 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102) +2025-06-20 08:33:22 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103) +2025-06-20 08:33:22 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104) +2025-06-20 08:33:22 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106) +2025-06-20 08:33:22 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert +2025-06-20 08:33:22 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert +2025-06-20 08:33:22 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105) +2025-06-20 08:33:22 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert +2025-06-20 08:33:22 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager... +2025-06-20 08:33:22 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet +2025-06-20 08:33:22 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler... +2025-06-20 08:33:22 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet +2025-06-20 08:33:22 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Steckdosen (alle auf 'aus' = frei)... +2025-06-20 08:33:40 - [app] app - [WARNING] WARNING - [STARTUP] ⚠️ Keine der 6 Steckdosen konnte initialisiert werden +2025-06-20 08:33:40 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://: +2025-06-20 08:33:41 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: backend/database/myp.db +2025-06-20 08:33:42 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: +2025-06-20 08:33:42 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: +2025-06-20 08:33:42 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration +2025-06-20 08:33:42 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration +2025-06-20 08:33:42 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Konfiguration aktiviert +2025-06-20 08:33:42 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: +2025-06-20 08:33:42 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: +2025-06-20 08:33:42 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: +2025-06-20 08:33:42 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) +2025-06-20 08:33:42 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: erstellt, aktualisiert +2025-06-20 08:33:42 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP -Umgebung +2025-06-20 08:33:42 - [app] app - [INFO] INFO - [STARTUP] 🏢 +2025-06-20 08:33:42 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: +2025-06-20 08:33:42 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank... +2025-06-20 08:33:42 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert +2025-06-20 08:33:42 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert +2025-06-20 08:33:42 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin... +2025-06-20 08:33:42 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt. +2025-06-20 08:33:42 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft +2025-06-20 08:33:42 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker... +2025-06-20 08:33:42 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100) +2025-06-20 08:33:42 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101) +2025-06-20 08:33:42 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102) +2025-06-20 08:33:42 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103) +2025-06-20 08:33:42 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104) +2025-06-20 08:33:42 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106) +2025-06-20 08:33:42 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert +2025-06-20 08:33:42 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert +2025-06-20 08:33:42 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105) +2025-06-20 08:33:42 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert +2025-06-20 08:33:42 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager... +2025-06-20 08:33:42 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet +2025-06-20 08:33:42 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler... +2025-06-20 08:33:42 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet +2025-06-20 08:33:42 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Steckdosen (alle auf 'aus' = frei)... +2025-06-20 08:34:00 - [app] app - [WARNING] WARNING - [STARTUP] ⚠️ Keine der 6 Steckdosen konnte initialisiert werden +2025-06-20 08:34:00 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://: +2025-06-20 08:34:00 - [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 08:34:00 - [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 08:34:00 - [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 08:34:00 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:34:01 - [app] app - [DEBUG] DEBUG - Request: +2025-06-20 08:34:01 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:34:06 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 1, Status: disconnected, Quelle: system +2025-06-20 08:34:06 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker -> +2025-06-20 08:34:09 - [app] app - [INFO] INFO - [SHUTDOWN] 🧹 Cleanup wird ausgeführt... +2025-06-20 08:34:09 - [app] app - [INFO] INFO - [SHUTDOWN] ✅ Queue Manager gestoppt +2025-06-20 08:34:09 - [app] app - [ERROR] ERROR - [SHUTDOWN] ❌ Cleanup-Fehler: +2025-06-20 08:34:10 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: backend/database/myp.db +2025-06-20 08:34:11 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: +2025-06-20 08:34:11 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: +2025-06-20 08:34:11 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration +2025-06-20 08:34:11 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration +2025-06-20 08:34:11 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Konfiguration aktiviert +2025-06-20 08:34:11 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: +2025-06-20 08:34:11 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: +2025-06-20 08:34:11 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: +2025-06-20 08:34:11 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) +2025-06-20 08:34:11 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: erstellt, aktualisiert +2025-06-20 08:34:11 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP -Umgebung +2025-06-20 08:34:11 - [app] app - [INFO] INFO - [STARTUP] 🏢 +2025-06-20 08:34:11 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: +2025-06-20 08:34:11 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank... +2025-06-20 08:34:11 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert +2025-06-20 08:34:11 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert +2025-06-20 08:34:11 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin... +2025-06-20 08:34:11 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt. +2025-06-20 08:34:11 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft +2025-06-20 08:34:11 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker... +2025-06-20 08:34:11 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100) +2025-06-20 08:34:11 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101) +2025-06-20 08:34:11 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102) +2025-06-20 08:34:11 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103) +2025-06-20 08:34:11 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104) +2025-06-20 08:34:11 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106) +2025-06-20 08:34:11 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert +2025-06-20 08:34:11 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert +2025-06-20 08:34:11 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105) +2025-06-20 08:34:11 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert +2025-06-20 08:34:11 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager... +2025-06-20 08:34:11 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet +2025-06-20 08:34:11 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler... +2025-06-20 08:34:11 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet +2025-06-20 08:34:11 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Steckdosen (alle auf 'aus' = frei)... +2025-06-20 08:34:29 - [app] app - [WARNING] WARNING - [STARTUP] ⚠️ Keine der 6 Steckdosen konnte initialisiert werden +2025-06-20 08:34:29 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://: +2025-06-20 08:34:30 - [app] app - [INFO] INFO - Locating template 'guest_request.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\\guest_request.html') +2025-06-20 08:34:30 - [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 08:34:30 - [app] app - [DEBUG] DEBUG - Response: +2025-06-20 08:34:30 - [app] app - [ERROR] ERROR - Fehler beim Laden des Benutzers : +2025-06-20 08:34:36 - [app] app - [INFO] INFO - [SHUTDOWN] 🧹 Cleanup wird ausgeführt... +2025-06-20 08:34:36 - [app] app - [INFO] INFO - [SHUTDOWN] ✅ Queue Manager gestoppt +2025-06-20 08:34:36 - [app] app - [ERROR] ERROR - [SHUTDOWN] ❌ Cleanup-Fehler: +2025-06-20 08:34:37 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: backend/database/myp.db +2025-06-20 08:34:39 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: +2025-06-20 08:34:39 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: +2025-06-20 08:34:39 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration +2025-06-20 08:34:39 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration +2025-06-20 08:34:39 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Konfiguration aktiviert +2025-06-20 08:34:39 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: +2025-06-20 08:34:39 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: +2025-06-20 08:34:39 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: +2025-06-20 08:34:39 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) +2025-06-20 08:34:39 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: erstellt, aktualisiert +2025-06-20 08:34:39 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP -Umgebung +2025-06-20 08:34:39 - [app] app - [INFO] INFO - [STARTUP] 🏢 +2025-06-20 08:34:39 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: +2025-06-20 08:34:39 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank... +2025-06-20 08:34:39 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert +2025-06-20 08:34:39 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert +2025-06-20 08:34:39 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin... +2025-06-20 08:34:40 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt. +2025-06-20 08:34:40 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft +2025-06-20 08:34:40 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker... +2025-06-20 08:34:40 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100) +2025-06-20 08:34:40 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101) +2025-06-20 08:34:40 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102) +2025-06-20 08:34:40 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103) +2025-06-20 08:34:40 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104) +2025-06-20 08:34:40 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106) +2025-06-20 08:34:40 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert +2025-06-20 08:34:40 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert +2025-06-20 08:34:40 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105) +2025-06-20 08:34:40 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert +2025-06-20 08:34:40 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager... +2025-06-20 08:34:40 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet +2025-06-20 08:34:40 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler... +2025-06-20 08:34:40 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet +2025-06-20 08:34:40 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Steckdosen (alle auf 'aus' = frei)... +2025-06-20 08:34:45 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: backend/database/myp.db diff --git a/backend/logs/core_system/core_system.log b/backend/logs/core_system/core_system.log index 79182b777..a2b4aa4ce 100644 --- a/backend/logs/core_system/core_system.log +++ b/backend/logs/core_system/core_system.log @@ -416,3 +416,15 @@ 2025-06-20 08:18:43 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion) 2025-06-20 08:18:46 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert 2025-06-20 08:18:46 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion) +2025-06-20 08:20:14 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert +2025-06-20 08:20:14 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion) +2025-06-20 08:20:17 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert +2025-06-20 08:20:17 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion) +2025-06-20 08:33:20 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert +2025-06-20 08:33:20 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion) +2025-06-20 08:33:41 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert +2025-06-20 08:33:41 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion) +2025-06-20 08:34:10 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert +2025-06-20 08:34:10 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion) +2025-06-20 08:34:37 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert +2025-06-20 08:34:37 - [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 478a464b5..e3019911b 100644 --- a/backend/logs/data_management/data_management.log +++ b/backend/logs/data_management/data_management.log @@ -947,3 +947,15 @@ 2025-06-20 08:18:43 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) 2025-06-20 08:18:46 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert 2025-06-20 08:18:46 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-20 08:20:14 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert +2025-06-20 08:20:14 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-20 08:20:18 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert +2025-06-20 08:20:18 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-20 08:33:20 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert +2025-06-20 08:33:20 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-20 08:33:41 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert +2025-06-20 08:33:41 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-20 08:34:10 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert +2025-06-20 08:34:10 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-20 08:34:37 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert +2025-06-20 08:34:37 - [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 821cafdaf..6c00dd64f 100644 --- a/backend/logs/drucker_steuerung/drucker_steuerung.log +++ b/backend/logs/drucker_steuerung/drucker_steuerung.log @@ -62,3 +62,8 @@ 2025-06-20 08:15:03 - [drucker_steuerung] drucker_steuerung - [INFO] INFO - 🖨️ Drucker-Steuerungs-Blueprint (Backend-Kontrolle) geladen 2025-06-20 08:18:44 - [drucker_steuerung] drucker_steuerung - [INFO] INFO - 🖨️ Drucker-Steuerungs-Blueprint (Backend-Kontrolle) geladen 2025-06-20 08:18:47 - [drucker_steuerung] drucker_steuerung - [INFO] INFO - 🖨️ Drucker-Steuerungs-Blueprint (Backend-Kontrolle) geladen +2025-06-20 08:20:16 - [drucker_steuerung] drucker_steuerung - [INFO] INFO - 🖨️ Drucker-Steuerungs-Blueprint (Backend-Kontrolle) geladen +2025-06-20 08:20:19 - [drucker_steuerung] drucker_steuerung - [INFO] INFO - 🖨️ Drucker-Steuerungs-Blueprint (Backend-Kontrolle) geladen +2025-06-20 08:33:21 - [drucker_steuerung] drucker_steuerung - [INFO] INFO - 🖨️ Drucker-Steuerungs-Blueprint (Backend-Kontrolle) geladen +2025-06-20 08:33:42 - [drucker_steuerung] drucker_steuerung - [INFO] INFO - 🖨️ Drucker-Steuerungs-Blueprint (Backend-Kontrolle) geladen +2025-06-20 08:34:11 - [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 7eba39c28..8cd19f1af 100644 --- a/backend/logs/energy_monitoring/energy_monitoring.log +++ b/backend/logs/energy_monitoring/energy_monitoring.log @@ -777,3 +777,10 @@ 2025-06-20 08:15:03 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert 2025-06-20 08:18:44 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert 2025-06-20 08:18:47 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert +2025-06-20 08:20:16 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert +2025-06-20 08:20:19 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert +2025-06-20 08:20:58 - [energy_monitoring] energy_monitoring - [INFO] INFO - 🔋 Energiemonitoring-Dashboard aufgerufen von admin +2025-06-20 08:21:15 - [energy_monitoring] energy_monitoring - [INFO] INFO - 🔍 Gerätedetails für ID 4 aufgerufen von admin +2025-06-20 08:33:21 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert +2025-06-20 08:33:42 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert +2025-06-20 08:34:11 - [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 cb18951c1..83c032f22 100644 --- a/backend/logs/hardware_integration/hardware_integration.log +++ b/backend/logs/hardware_integration/hardware_integration.log @@ -3611,3 +3611,79 @@ 2025-06-20 08:19:37 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.103: Error Code: -1501, Invalid Request or Credentials 2025-06-20 08:19:39 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) 2025-06-20 08:19:39 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.106: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:20:14 - [hardware_integration] hardware_integration - [INFO] INFO - 🚀 Hardware Integration (Backend-Kontrolle) erfolgreich geladen +2025-06-20 08:20:18 - [hardware_integration] hardware_integration - [INFO] INFO - 🚀 Hardware Integration (Backend-Kontrolle) erfolgreich geladen +2025-06-20 08:20:20 - [hardware_integration] hardware_integration - [INFO] INFO - 🎯 DruckerSteuerung initialisiert - BACKEND ÜBERNIMMT KONTROLLE +2025-06-20 08:20:20 - [hardware_integration] hardware_integration - [INFO] INFO - 🎯 DruckerSteuerung initialisiert - BACKEND ÜBERNIMMT KONTROLLE +2025-06-20 08:20:20 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.100: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:20:20 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.100: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:20:20 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.101: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:20:20 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.101: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:20:20 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.102: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:20:20 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.102: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:20:20 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.103: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:20:20 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.103: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:20:22 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-20 08:20:22 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-20 08:20:23 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.106: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:20:23 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.106: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:20:33 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.100: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:20:33 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.101: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:20:33 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.102: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:20:34 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.103: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:20:36 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-20 08:20:36 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.106: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:20:44 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.100: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:20:44 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.101: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:20:44 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.102: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:20:45 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.103: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:20:47 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-20 08:20:47 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.106: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:21:22 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.100: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:21:22 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.101: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:21:23 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.102: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:21:23 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.103: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:21:25 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-20 08:21:25 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.106: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:24:08 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.100: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:24:08 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.101: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:24:08 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.102: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:24:08 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.103: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:24:10 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-20 08:24:10 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.106: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:24:14 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.100: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:24:15 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.101: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:24:15 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.102: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:24:15 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.103: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:24:17 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-20 08:24:17 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.106: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:24:31 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.100: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:24:31 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.101: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:24:33 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.102: HTTPConnectionPool(host='192.168.0.102', port=80): Read timed out. (read timeout=2) +2025-06-20 08:24:34 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.103: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:24:36 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-20 08:24:36 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.106: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:25:56 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.100: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:25:56 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.101: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:25:56 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.102: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:25:56 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.103: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:25:59 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-20 08:25:59 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.106: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:26:33 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.100: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:26:33 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.101: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:26:33 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.102: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:26:33 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.103: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:26:35 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-20 08:26:35 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.106: Error Code: -1501, Invalid Request or Credentials +2025-06-20 08:33:20 - [hardware_integration] hardware_integration - [INFO] INFO - 🚀 Hardware Integration (Backend-Kontrolle) erfolgreich geladen +2025-06-20 08:33:22 - [hardware_integration] hardware_integration - [INFO] INFO - 🎯 DruckerSteuerung initialisiert - BACKEND ÜBERNIMMT KONTROLLE +2025-06-20 08:33:41 - [hardware_integration] hardware_integration - [INFO] INFO - 🚀 Hardware Integration (Backend-Kontrolle) erfolgreich geladen +2025-06-20 08:33:42 - [hardware_integration] hardware_integration - [INFO] INFO - 🎯 DruckerSteuerung initialisiert - BACKEND ÜBERNIMMT KONTROLLE +2025-06-20 08:34:06 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ 192.168.0.100 ist über keine Methode erreichbar +2025-06-20 08:34:06 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Steckdose 192.168.0.100 ist im Netzwerk nicht erreichbar +2025-06-20 08:34:10 - [hardware_integration] hardware_integration - [INFO] INFO - 🚀 Hardware Integration (Backend-Kontrolle) erfolgreich geladen +2025-06-20 08:34:11 - [hardware_integration] hardware_integration - [INFO] INFO - 🎯 DruckerSteuerung initialisiert - BACKEND ÜBERNIMMT KONTROLLE +2025-06-20 08:34:37 - [hardware_integration] hardware_integration - [INFO] INFO - 🚀 Hardware Integration (Backend-Kontrolle) erfolgreich geladen +2025-06-20 08:34:40 - [hardware_integration] hardware_integration - [INFO] INFO - 🎯 DruckerSteuerung initialisiert - BACKEND ÜBERNIMMT KONTROLLE +2025-06-20 08:34:45 - [hardware_integration] hardware_integration - [INFO] INFO - 🚀 Hardware Integration (Backend-Kontrolle) erfolgreich geladen +2025-06-20 08:34:45 - [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 3ab0ea95f..f1fc1ce65 100644 --- a/backend/logs/job_queue_system/job_queue_system.log +++ b/backend/logs/job_queue_system/job_queue_system.log @@ -1825,3 +1825,24 @@ 2025-06-20 08:18:48 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) 2025-06-20 08:19:52 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) 2025-06-20 08:19:52 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) +2025-06-20 08:20:14 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert +2025-06-20 08:20:14 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) +2025-06-20 08:20:16 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) +2025-06-20 08:20:18 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert +2025-06-20 08:20:18 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) +2025-06-20 08:20:20 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) +2025-06-20 08:27:32 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) +2025-06-20 08:27:32 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) +2025-06-20 08:33:20 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert +2025-06-20 08:33:20 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) +2025-06-20 08:33:22 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) +2025-06-20 08:33:41 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert +2025-06-20 08:33:41 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) +2025-06-20 08:33:42 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) +2025-06-20 08:34:09 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) +2025-06-20 08:34:10 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert +2025-06-20 08:34:10 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) +2025-06-20 08:34:11 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) +2025-06-20 08:34:36 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) +2025-06-20 08:34:37 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert +2025-06-20 08:34:37 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) diff --git a/backend/logs/monitoring_analytics/monitoring_analytics.log b/backend/logs/monitoring_analytics/monitoring_analytics.log index e5572ba8e..e8b83ceb3 100644 --- a/backend/logs/monitoring_analytics/monitoring_analytics.log +++ b/backend/logs/monitoring_analytics/monitoring_analytics.log @@ -937,3 +937,13 @@ 2025-06-20 08:18:44 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) 2025-06-20 08:18:47 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert 2025-06-20 08:18:47 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-20 08:20:16 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert +2025-06-20 08:20:16 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-20 08:20:19 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert +2025-06-20 08:20:19 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-20 08:33:21 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert +2025-06-20 08:33:21 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-20 08:33:42 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert +2025-06-20 08:33:42 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-20 08:34:11 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert +2025-06-20 08:34:11 - [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 1e2aaace7..a135e595b 100644 --- a/backend/logs/permissions/permissions.log +++ b/backend/logs/permissions/permissions.log @@ -494,3 +494,14 @@ WHERE user_permissions.user_id = ? 2025-06-20 08:15:03 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert 2025-06-20 08:18:44 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert 2025-06-20 08:18:48 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert +2025-06-20 08:20:16 - [permissions] permissions - [ERROR] ERROR - Fehler beim Korrigieren der Admin-Berechtigungen: (sqlite3.OperationalError) no such table: users +[SQL: SELECT users.id AS users_id, users.email AS users_email, users.username AS users_username, users.password_hash AS users_password_hash, users.name AS users_name, users.role AS users_role, users.active AS users_active, users.created_at AS users_created_at, users.last_login AS users_last_login, users.updated_at AS users_updated_at, users.settings AS users_settings, users.last_activity AS users_last_activity, users.department AS users_department, users.position AS users_position, users.phone AS users_phone, users.bio AS users_bio, users.theme_preference AS users_theme_preference, users.language_preference AS users_language_preference, users.email_notifications AS users_email_notifications, users.browser_notifications AS users_browser_notifications, users.dashboard_layout AS users_dashboard_layout, users.compact_mode AS users_compact_mode, users.show_completed_jobs AS users_show_completed_jobs, users.auto_refresh_interval AS users_auto_refresh_interval, users.auto_logout_timeout AS users_auto_logout_timeout +FROM users +WHERE users.role = ?] +[parameters: ('admin',)] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-06-20 08:20:19 - [permissions] permissions - [INFO] INFO - UserPermission für Admin admin (ID: 1) erstellt +2025-06-20 08:20:19 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 1 erstellt, 0 aktualisiert +2025-06-20 08:33:21 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert +2025-06-20 08:33:42 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert +2025-06-20 08:34:11 - [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 d8ec16dda..f849434d0 100644 --- a/backend/logs/scheduler/scheduler.log +++ b/backend/logs/scheduler/scheduler.log @@ -2587,3 +2587,74 @@ 2025-06-20 08:18:46 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True 2025-06-20 08:18:48 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet 2025-06-20 08:18:48 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-20 08:20:14 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-20 08:20:16 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-20 08:20:16 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-20 08:20:18 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-20 08:20:20 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-20 08:20:20 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-20 08:33:20 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-20 08:33:22 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-20 08:33:22 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-20 08:33:22 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte Steckdosen-Initialisierung beim Systemstart... +2025-06-20 08:33:22 - [scheduler] scheduler - [INFO] INFO - 🔍 Prüfe 6 konfigurierte Steckdosen... +2025-06-20 08:33:25 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 1: Steckdose 192.168.0.100 nicht erreichbar +2025-06-20 08:33:28 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 2: Steckdose 192.168.0.101 nicht erreichbar +2025-06-20 08:33:31 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 3: Steckdose 192.168.0.102 nicht erreichbar +2025-06-20 08:33:34 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 4: Steckdose 192.168.0.103 nicht erreichbar +2025-06-20 08:33:37 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 5: Steckdose 192.168.0.104 nicht erreichbar +2025-06-20 08:33:40 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 6: Steckdose 192.168.0.106 nicht erreichbar +2025-06-20 08:33:40 - [scheduler] scheduler - [INFO] INFO - ============================================================ +2025-06-20 08:33:40 - [scheduler] scheduler - [INFO] INFO - 🎯 STECKDOSEN-INITIALISIERUNG ABGESCHLOSSEN +2025-06-20 08:33:40 - [scheduler] scheduler - [INFO] INFO - 📊 Gesamt: 6 Steckdosen +2025-06-20 08:33:40 - [scheduler] scheduler - [INFO] INFO - ✅ Erfolgreich: 0 +2025-06-20 08:33:40 - [scheduler] scheduler - [INFO] INFO - 📡 Nicht erreichbar: 6 +2025-06-20 08:33:40 - [scheduler] scheduler - [INFO] INFO - ❌ Fehlgeschlagen: 0 +2025-06-20 08:33:40 - [scheduler] scheduler - [WARNING] WARNING - ⚠️ KEINE Steckdose konnte initialisiert werden! +2025-06-20 08:33:40 - [scheduler] scheduler - [INFO] INFO - ============================================================ +2025-06-20 08:33:41 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-20 08:33:42 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-20 08:33:42 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-20 08:33:42 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte Steckdosen-Initialisierung beim Systemstart... +2025-06-20 08:33:42 - [scheduler] scheduler - [INFO] INFO - 🔍 Prüfe 6 konfigurierte Steckdosen... +2025-06-20 08:33:45 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 1: Steckdose 192.168.0.100 nicht erreichbar +2025-06-20 08:33:48 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 2: Steckdose 192.168.0.101 nicht erreichbar +2025-06-20 08:33:51 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 3: Steckdose 192.168.0.102 nicht erreichbar +2025-06-20 08:33:54 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 4: Steckdose 192.168.0.103 nicht erreichbar +2025-06-20 08:33:57 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 5: Steckdose 192.168.0.104 nicht erreichbar +2025-06-20 08:34:00 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 6: Steckdose 192.168.0.106 nicht erreichbar +2025-06-20 08:34:00 - [scheduler] scheduler - [INFO] INFO - ============================================================ +2025-06-20 08:34:00 - [scheduler] scheduler - [INFO] INFO - 🎯 STECKDOSEN-INITIALISIERUNG ABGESCHLOSSEN +2025-06-20 08:34:00 - [scheduler] scheduler - [INFO] INFO - 📊 Gesamt: 6 Steckdosen +2025-06-20 08:34:00 - [scheduler] scheduler - [INFO] INFO - ✅ Erfolgreich: 0 +2025-06-20 08:34:00 - [scheduler] scheduler - [INFO] INFO - 📡 Nicht erreichbar: 6 +2025-06-20 08:34:00 - [scheduler] scheduler - [INFO] INFO - ❌ Fehlgeschlagen: 0 +2025-06-20 08:34:00 - [scheduler] scheduler - [WARNING] WARNING - ⚠️ KEINE Steckdose konnte initialisiert werden! +2025-06-20 08:34:00 - [scheduler] scheduler - [INFO] INFO - ============================================================ +2025-06-20 08:34:10 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-20 08:34:11 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-20 08:34:11 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-20 08:34:11 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte Steckdosen-Initialisierung beim Systemstart... +2025-06-20 08:34:11 - [scheduler] scheduler - [INFO] INFO - 🔍 Prüfe 6 konfigurierte Steckdosen... +2025-06-20 08:34:14 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 1: Steckdose 192.168.0.100 nicht erreichbar +2025-06-20 08:34:17 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 2: Steckdose 192.168.0.101 nicht erreichbar +2025-06-20 08:34:20 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 3: Steckdose 192.168.0.102 nicht erreichbar +2025-06-20 08:34:23 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 4: Steckdose 192.168.0.103 nicht erreichbar +2025-06-20 08:34:26 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 5: Steckdose 192.168.0.104 nicht erreichbar +2025-06-20 08:34:29 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 6: Steckdose 192.168.0.106 nicht erreichbar +2025-06-20 08:34:29 - [scheduler] scheduler - [INFO] INFO - ============================================================ +2025-06-20 08:34:29 - [scheduler] scheduler - [INFO] INFO - 🎯 STECKDOSEN-INITIALISIERUNG ABGESCHLOSSEN +2025-06-20 08:34:29 - [scheduler] scheduler - [INFO] INFO - 📊 Gesamt: 6 Steckdosen +2025-06-20 08:34:29 - [scheduler] scheduler - [INFO] INFO - ✅ Erfolgreich: 0 +2025-06-20 08:34:29 - [scheduler] scheduler - [INFO] INFO - 📡 Nicht erreichbar: 6 +2025-06-20 08:34:29 - [scheduler] scheduler - [INFO] INFO - ❌ Fehlgeschlagen: 0 +2025-06-20 08:34:29 - [scheduler] scheduler - [WARNING] WARNING - ⚠️ KEINE Steckdose konnte initialisiert werden! +2025-06-20 08:34:29 - [scheduler] scheduler - [INFO] INFO - ============================================================ +2025-06-20 08:34:37 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-20 08:34:40 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-20 08:34:40 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-20 08:34:40 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte Steckdosen-Initialisierung beim Systemstart... +2025-06-20 08:34:40 - [scheduler] scheduler - [INFO] INFO - 🔍 Prüfe 6 konfigurierte Steckdosen... +2025-06-20 08:34:43 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 1: Steckdose 192.168.0.100 nicht erreichbar +2025-06-20 08:34:45 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-20 08:34:46 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 2: Steckdose 192.168.0.101 nicht erreichbar diff --git a/backend/logs/security_suite/security_suite.log b/backend/logs/security_suite/security_suite.log index d7794d2d0..65c98633c 100644 --- a/backend/logs/security_suite/security_suite.log +++ b/backend/logs/security_suite/security_suite.log @@ -1416,3 +1416,21 @@ 2025-06-20 08:18:46 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert 2025-06-20 08:18:46 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) 2025-06-20 08:18:48 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert +2025-06-20 08:20:14 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert +2025-06-20 08:20:14 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-20 08:20:16 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert +2025-06-20 08:20:18 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert +2025-06-20 08:20:18 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-20 08:20:19 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert +2025-06-20 08:33:20 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert +2025-06-20 08:33:20 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-20 08:33:21 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert +2025-06-20 08:33:41 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert +2025-06-20 08:33:41 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-20 08:33:42 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert +2025-06-20 08:34:10 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert +2025-06-20 08:34:10 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-20 08:34:11 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert +2025-06-20 08:34:37 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert +2025-06-20 08:34:37 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-20 08:34:39 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert diff --git a/backend/logs/startup/startup.log b/backend/logs/startup/startup.log index 7371f0cca..479db21eb 100644 --- a/backend/logs/startup/startup.log +++ b/backend/logs/startup/startup.log @@ -3709,3 +3709,48 @@ 2025-06-20 08:18:47 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert 2025-06-20 08:18:47 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert 2025-06-20 08:18:47 - [startup] startup - [INFO] INFO - ================================================== +2025-06-20 08:20:16 - [startup] startup - [INFO] INFO - ================================================== +2025-06-20 08:20:16 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet... +2025-06-20 08:20:16 - [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 08:20:16 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32) +2025-06-20 08:20:16 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend +2025-06-20 08:20:16 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-20T08:20:16.099487 +2025-06-20 08:20:16 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert +2025-06-20 08:20:16 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert +2025-06-20 08:20:16 - [startup] startup - [INFO] INFO - ================================================== +2025-06-20 08:20:19 - [startup] startup - [INFO] INFO - ================================================== +2025-06-20 08:20:19 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet... +2025-06-20 08:20:19 - [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 08:20:19 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32) +2025-06-20 08:20:19 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend +2025-06-20 08:20:19 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-20T08:20:19.575052 +2025-06-20 08:20:19 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert +2025-06-20 08:20:19 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert +2025-06-20 08:20:19 - [startup] startup - [INFO] INFO - ================================================== +2025-06-20 08:33:21 - [startup] startup - [INFO] INFO - ================================================== +2025-06-20 08:33:21 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet... +2025-06-20 08:33:21 - [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 08:33:21 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32) +2025-06-20 08:33:21 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend +2025-06-20 08:33:21 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-20T08:33:21.669124 +2025-06-20 08:33:21 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert +2025-06-20 08:33:21 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert +2025-06-20 08:33:21 - [startup] startup - [INFO] INFO - ================================================== +2025-06-20 08:33:42 - [startup] startup - [INFO] INFO - ================================================== +2025-06-20 08:33:42 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet... +2025-06-20 08:33:42 - [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 08:33:42 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32) +2025-06-20 08:33:42 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend +2025-06-20 08:33:42 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-20T08:33:42.280402 +2025-06-20 08:33:42 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert +2025-06-20 08:33:42 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert +2025-06-20 08:33:42 - [startup] startup - [INFO] INFO - ================================================== +2025-06-20 08:34:11 - [startup] startup - [INFO] INFO - ================================================== +2025-06-20 08:34:11 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet... +2025-06-20 08:34:11 - [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 08:34:11 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32) +2025-06-20 08:34:11 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend +2025-06-20 08:34:11 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-20T08:34:11.469430 +2025-06-20 08:34:11 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert +2025-06-20 08:34:11 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert +2025-06-20 08:34:11 - [startup] startup - [INFO] INFO - ================================================== diff --git a/backend/logs/utilities_collection/utilities_collection.log b/backend/logs/utilities_collection/utilities_collection.log index d3b6d3bf7..fcc14554d 100644 --- a/backend/logs/utilities_collection/utilities_collection.log +++ b/backend/logs/utilities_collection/utilities_collection.log @@ -1229,3 +1229,19 @@ 2025-06-20 08:18:43 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) 2025-06-20 08:18:46 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert 2025-06-20 08:18:46 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-20 08:20:14 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-20 08:20:14 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-20 08:20:18 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-20 08:20:18 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-20 08:31:43 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-20 08:31:43 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-20 08:33:20 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-20 08:33:20 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-20 08:33:41 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-20 08:33:41 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-20 08:34:10 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-20 08:34:10 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-20 08:34:37 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-20 08:34:37 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-20 08:34:45 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-20 08:34:45 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) diff --git a/backend/logs/windows_fixes/windows_fixes.log b/backend/logs/windows_fixes/windows_fixes.log index bf044c2b2..add855648 100644 --- a/backend/logs/windows_fixes/windows_fixes.log +++ b/backend/logs/windows_fixes/windows_fixes.log @@ -419,3 +419,15 @@ 2025-06-20 08:18:43 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet 2025-06-20 08:18:46 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an... 2025-06-20 08:18:46 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet +2025-06-20 08:20:14 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an... +2025-06-20 08:20:14 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet +2025-06-20 08:20:17 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an... +2025-06-20 08:20:17 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet +2025-06-20 08:33:20 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an... +2025-06-20 08:33:20 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet +2025-06-20 08:33:41 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an... +2025-06-20 08:33:41 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet +2025-06-20 08:34:10 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an... +2025-06-20 08:34:10 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet +2025-06-20 08:34:37 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an... +2025-06-20 08:34:37 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet diff --git a/backend/scripts/diagnose_tapo.py b/backend/scripts/diagnose_tapo.py new file mode 100644 index 000000000..e944c415a --- /dev/null +++ b/backend/scripts/diagnose_tapo.py @@ -0,0 +1,281 @@ +#!/usr/bin/env python3 +""" +Tapo Steckdosen Diagnose-Tool +============================ + +Dieses Script hilft bei der Diagnose von Verbindungsproblemen mit Tapo-Steckdosen. + +Autor: Till Tomczak +Datum: 2025-06-20 +""" + +import sys +import socket +import subprocess +import time +import os +from datetime import datetime + +# Farben für Terminal-Ausgabe +class Colors: + GREEN = '\033[92m' + YELLOW = '\033[93m' + RED = '\033[91m' + BLUE = '\033[94m' + ENDC = '\033[0m' + BOLD = '\033[1m' + +def print_header(text): + """Druckt eine formatierte Überschrift""" + print(f"\n{Colors.BOLD}{Colors.BLUE}{'=' * 60}{Colors.ENDC}") + print(f"{Colors.BOLD}{Colors.BLUE}{text:^60}{Colors.ENDC}") + print(f"{Colors.BOLD}{Colors.BLUE}{'=' * 60}{Colors.ENDC}\n") + +def print_success(text): + """Druckt eine Erfolgsmeldung""" + print(f"{Colors.GREEN}✅ {text}{Colors.ENDC}") + +def print_warning(text): + """Druckt eine Warnung""" + print(f"{Colors.YELLOW}⚠️ {text}{Colors.ENDC}") + +def print_error(text): + """Druckt eine Fehlermeldung""" + print(f"{Colors.RED}❌ {text}{Colors.ENDC}") + +def print_info(text): + """Druckt eine Info-Meldung""" + print(f"{Colors.BLUE}ℹ️ {text}{Colors.ENDC}") + +def test_port_connection(ip, port, timeout=3): + """ + Testet die Verbindung zu einem bestimmten Port. + + Args: + ip: IP-Adresse + port: Port-Nummer + timeout: Timeout in Sekunden + + Returns: + bool: True wenn Verbindung möglich + """ + try: + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.settimeout(timeout) + result = sock.connect_ex((ip, port)) + sock.close() + return result == 0 + except Exception as e: + print_error(f"Socket-Fehler: {e}") + return False + +def test_icmp_ping(ip): + """ + Führt einen ICMP Ping durch. + + Args: + ip: IP-Adresse + + Returns: + bool: True wenn Ping erfolgreich + """ + try: + # Windows und Linux kompatibel + param = '-n' if os.name == 'nt' else '-c' + command = ['ping', param, '1', '-w', '2000', ip] + result = subprocess.run(command, capture_output=True, text=True, timeout=5) + return result.returncode == 0 + except Exception as e: + print_error(f"Ping-Fehler: {e}") + return False + +def test_dns_resolution(hostname): + """ + Testet die DNS-Auflösung eines Hostnamens. + + Args: + hostname: Hostname zum Auflösen + + Returns: + str: Aufgelöste IP oder None + """ + try: + ip = socket.gethostbyname(hostname) + return ip + except Exception as e: + print_error(f"DNS-Auflösung fehlgeschlagen: {e}") + return None + +def test_tapo_connection(ip, username="admin", password="admin"): + """ + Testet die Tapo-Verbindung. + + Args: + ip: IP-Adresse der Steckdose + username: Tapo-Benutzername + password: Tapo-Passwort + + Returns: + dict: Ergebnis der Tests + """ + results = { + "timestamp": datetime.now().isoformat(), + "ip": ip, + "tests": {} + } + + # Test 1: ICMP Ping + print_info(f"Teste ICMP Ping zu {ip}...") + ping_result = test_icmp_ping(ip) + results["tests"]["icmp_ping"] = ping_result + if ping_result: + print_success(f"ICMP Ping zu {ip} erfolgreich") + else: + print_warning(f"ICMP Ping zu {ip} fehlgeschlagen (kann durch Firewall blockiert sein)") + + # Test 2: Port 80 (HTTP) + print_info(f"Teste Port 80 (HTTP) auf {ip}...") + port80_result = test_port_connection(ip, 80) + results["tests"]["port_80"] = port80_result + if port80_result: + print_success(f"Port 80 auf {ip} ist erreichbar") + else: + print_error(f"Port 80 auf {ip} ist NICHT erreichbar") + + # Test 3: Port 9999 (Tapo-spezifisch) + print_info(f"Teste Port 9999 (Tapo) auf {ip}...") + port9999_result = test_port_connection(ip, 9999) + results["tests"]["port_9999"] = port9999_result + if port9999_result: + print_success(f"Port 9999 auf {ip} ist erreichbar") + else: + print_warning(f"Port 9999 auf {ip} ist nicht erreichbar") + + # Test 4: PyP100 Verbindung + try: + print_info("Teste PyP100 Bibliothek...") + from PyP100.PyP100 import P100 + + print_info(f"Versuche Tapo-Handshake mit {ip}...") + p100 = P100(ip, username, password) + + # Handshake + p100.handshake() + print_success("Tapo-Handshake erfolgreich") + results["tests"]["tapo_handshake"] = True + + # Login + p100.login() + print_success("Tapo-Login erfolgreich") + results["tests"]["tapo_login"] = True + + # Device Info + device_info = p100.getDeviceInfo() + if device_info and 'error_code' in device_info and device_info['error_code'] == 0: + print_success("Tapo-Geräteinformationen erfolgreich abgerufen") + results["tests"]["tapo_device_info"] = True + results["device_info"] = device_info.get('result', {}) + + # Status anzeigen + device_on = device_info.get('result', {}).get('device_on', False) + print_info(f"Steckdosen-Status: {'EIN' if device_on else 'AUS'}") + else: + print_error("Konnte Geräteinformationen nicht abrufen") + results["tests"]["tapo_device_info"] = False + + except ImportError: + print_error("PyP100 Bibliothek nicht installiert!") + print_info("Installiere mit: pip install PyP100") + results["tests"]["pyp100_available"] = False + except Exception as e: + print_error(f"Tapo-Verbindung fehlgeschlagen: {e}") + results["tests"]["tapo_connection"] = False + results["error"] = str(e) + + return results + +def diagnose_network(): + """Führt eine allgemeine Netzwerk-Diagnose durch""" + print_header("Netzwerk-Diagnose") + + # Lokale IP-Adresse ermitteln + try: + hostname = socket.gethostname() + local_ip = socket.gethostbyname(hostname) + print_info(f"Lokaler Hostname: {hostname}") + print_info(f"Lokale IP-Adresse: {local_ip}") + except Exception as e: + print_error(f"Konnte lokale IP nicht ermitteln: {e}") + + # Gateway ermitteln (nur Linux/Unix) + if os.name != 'nt': + try: + result = subprocess.run(['ip', 'route', 'show'], capture_output=True, text=True) + if result.returncode == 0: + lines = result.stdout.strip().split('\n') + for line in lines: + if 'default' in line: + gateway = line.split()[2] + print_info(f"Standard-Gateway: {gateway}") + break + except: + pass + + # DNS-Test + print_info("Teste DNS-Auflösung...") + google_ip = test_dns_resolution("google.com") + if google_ip: + print_success(f"DNS funktioniert (google.com -> {google_ip})") + else: + print_error("DNS-Auflösung fehlgeschlagen") + +def main(): + """Hauptfunktion""" + print_header("Tapo Steckdosen Diagnose-Tool") + print_info(f"Start: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}") + + # Argumente prüfen + if len(sys.argv) < 2: + print_error("Verwendung: python diagnose_tapo.py [username] [password]") + print_info("Beispiel: python diagnose_tapo.py 192.168.1.100") + print_info("Beispiel: python diagnose_tapo.py 192.168.1.100 admin admin") + sys.exit(1) + + ip_address = sys.argv[1] + username = sys.argv[2] if len(sys.argv) > 2 else "admin" + password = sys.argv[3] if len(sys.argv) > 3 else "admin" + + # Netzwerk-Diagnose + diagnose_network() + + # Tapo-Diagnose + print_header(f"Teste Tapo-Steckdose: {ip_address}") + results = test_tapo_connection(ip_address, username, password) + + # Zusammenfassung + print_header("Diagnose-Zusammenfassung") + + successful_tests = sum(1 for test, result in results["tests"].items() if result is True) + total_tests = len(results["tests"]) + + print_info(f"Erfolgreiche Tests: {successful_tests}/{total_tests}") + + # Empfehlungen + if not results["tests"].get("port_80", False): + print_warning("\nEmpfehlungen:") + print_warning("1. Stelle sicher, dass die Steckdose eingeschaltet ist") + print_warning("2. Prüfe, ob die IP-Adresse korrekt ist") + print_warning("3. Stelle sicher, dass sich die Steckdose im gleichen Netzwerk befindet") + print_warning("4. Prüfe Firewall-Einstellungen") + print_warning("5. Versuche die Steckdose zurückzusetzen (Reset-Knopf)") + + if results["tests"].get("port_80", False) and not results["tests"].get("tapo_login", False): + print_warning("\nAuthentifizierungsproblem:") + print_warning("1. Prüfe Benutzername und Passwort") + print_warning("2. Standard-Credentials sind meist 'admin'/'admin'") + print_warning("3. Wurden die Credentials in der Tapo-App geändert?") + + print_info(f"\nEnde: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}") + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/backend/static/js/admin-guest-requests.js b/backend/static/js/admin-guest-requests.js index 1d3922316..0c16e796c 100644 --- a/backend/static/js/admin-guest-requests.js +++ b/backend/static/js/admin-guest-requests.js @@ -93,7 +93,7 @@ async function loadGuestRequests() { try { showLoading(true); - const url = `${API_BASE_URL}/api/admin/guest-requests`; + const url = `${API_BASE_URL}/api/admin/requests`; const response = await fetch(url, { method: 'GET', headers: { @@ -138,7 +138,7 @@ function updateStats(stats) { const elements = { 'pending-count': stats.pending || 0, 'approved-count': stats.approved || 0, - 'rejected-count': stats.rejected || 0, + 'rejected-count': stats.denied || stats.rejected || 0, 'total-count': stats.total || 0 }; @@ -289,7 +289,7 @@ function createRequestRow(request) {
${escapeHtml(request.file_name || 'Keine Datei')}
- ${request.duration_minutes ? `${request.duration_minutes} Min.` : 'Unbekannte Dauer'} + ${request.duration_min ? `${request.duration_min} Min.` : 'Unbekannte Dauer'} ${request.copies ? ` • ${request.copies} Kopien` : ''}
${request.reason ? `
${escapeHtml(request.reason)}
` : ''} @@ -378,6 +378,7 @@ function getStatusColor(status) { 'pending': 'bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-300', 'approved': 'bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-300', 'rejected': 'bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-300', + 'denied': 'bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-300', 'expired': 'bg-gray-100 text-gray-800 dark:bg-gray-900/30 dark:text-gray-300' }; return colors[status] || 'bg-gray-100 text-gray-800 dark:bg-gray-900/30 dark:text-gray-300'; @@ -388,6 +389,7 @@ function getStatusDot(status) { 'pending': 'bg-yellow-400 dark:bg-yellow-300', 'approved': 'bg-green-400 dark:bg-green-300', 'rejected': 'bg-red-400 dark:bg-red-300', + 'denied': 'bg-red-400 dark:bg-red-300', 'expired': 'bg-gray-400 dark:bg-gray-300' }; return dots[status] || 'bg-gray-400 dark:bg-gray-300'; @@ -398,6 +400,7 @@ function getStatusText(status) { 'pending': 'Wartend', 'approved': 'Genehmigt', 'rejected': 'Abgelehnt', + 'denied': 'Abgelehnt', 'expired': 'Abgelaufen' }; return texts[status] || status; @@ -429,7 +432,7 @@ async function approveRequest(requestId) { try { showLoading(true); - const url = `${API_BASE_URL}/api/admin/guest-requests/${requestId}/approve`; + const url = `${API_BASE_URL}/api/requests/${requestId}/approve`; const response = await fetch(url, { method: 'POST', headers: { @@ -437,7 +440,7 @@ async function approveRequest(requestId) { 'X-CSRFToken': csrfToken }, body: JSON.stringify({ - approval_notes: notes || '' + notes: notes || '' }) }); @@ -446,7 +449,7 @@ async function approveRequest(requestId) { if (data.success) { showNotification('✅ Gastauftrag erfolgreich genehmigt', 'success'); if (data.otp_code) { - showNotification(`🔑 OTP-Code für ${data.guest_name}: ${data.otp_code}`, 'info'); + showNotification(`🔑 OTP-Code für ${data.guest_name || 'Gast'}: ${data.otp_code}`, 'info'); } loadGuestRequests(); } else { @@ -470,14 +473,14 @@ async function rejectRequest(requestId) { try { showLoading(true); - const url = `${API_BASE_URL}/api/admin/guest-requests/${requestId}/reject`; + const url = `${API_BASE_URL}/api/requests/${requestId}/deny`; const response = await fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-CSRFToken': csrfToken }, - body: JSON.stringify({ rejection_reason: reason.trim() }) + body: JSON.stringify({ reason: reason.trim() }) }); const data = await response.json(); @@ -563,7 +566,7 @@ function showRequestDetail(requestId) {

Auftrag Details

Datei: ${escapeHtml(request.file_name || 'Keine Datei')}

-

Dauer: ${request.duration_minutes || 'Unbekannt'} Minuten

+

Dauer: ${request.duration_min || 'Unbekannt'} Minuten

Kopien: ${request.copies || 1}

Status: ${getStatusText(request.status)}

@@ -738,7 +741,7 @@ function exportToCSV(data) { req.file_name || '', getStatusText(req.status), formatDateTime(req.created_at), - req.duration_minutes || '', + req.duration_min || '', req.copies || '', req.reason || '' ]); diff --git a/backend/templates/base.html b/backend/templates/base.html index e944e2124..e6cc5655c 100644 --- a/backend/templates/base.html +++ b/backend/templates/base.html @@ -17,8 +17,8 @@ - - + + diff --git a/backend/utils/__pycache__/hardware_integration.cpython-313.pyc b/backend/utils/__pycache__/hardware_integration.cpython-313.pyc index 6adcc09b5..ed6cf8f7c 100644 Binary files a/backend/utils/__pycache__/hardware_integration.cpython-313.pyc and b/backend/utils/__pycache__/hardware_integration.cpython-313.pyc differ diff --git a/backend/utils/__pycache__/job_scheduler.cpython-313.pyc b/backend/utils/__pycache__/job_scheduler.cpython-313.pyc index 0f53cd7e3..a2e8c67ad 100644 Binary files a/backend/utils/__pycache__/job_scheduler.cpython-313.pyc and b/backend/utils/__pycache__/job_scheduler.cpython-313.pyc differ diff --git a/backend/utils/hardware_integration.py b/backend/utils/hardware_integration.py index 4b46f5750..86069c4c8 100644 --- a/backend/utils/hardware_integration.py +++ b/backend/utils/hardware_integration.py @@ -33,6 +33,7 @@ except ImportError: # MYP Models & Utils from models import get_db_session, Printer, PlugStatusLog from utils.logging_config import get_logger +import os # Logger hardware_logger = get_logger("hardware_integration") @@ -353,27 +354,55 @@ class DruckerSteuerung: hardware_logger.warning(f"⚠️ Simulation: Steckdose {ip} würde {'eingeschaltet' if einschalten else 'ausgeschaltet'}") return True # Simulation immer erfolgreich - try: - action = "einschalten" if einschalten else "ausschalten" - hardware_logger.debug(f"🔌 Versuche Steckdose {ip} zu {action}") - - # P100-Verbindung herstellen - p100 = PyP100(ip, self.tapo_username, self.tapo_password) - p100.handshake() - p100.login() - - # Schalten - if einschalten: - p100.turnOn() - else: - p100.turnOff() - - hardware_logger.info(f"✅ Steckdose {ip} erfolgreich {action}") - return True - - except Exception as e: - hardware_logger.error(f"❌ Fehler beim Schalten der Steckdose {ip}: {e}") + # Zuerst Netzwerk-Erreichbarkeit prüfen + if not self._erweiterte_netzwerk_prüfung(ip): + hardware_logger.error(f"❌ Steckdose {ip} ist im Netzwerk nicht erreichbar") return False + + retry_count = 0 + max_retries = 3 + + while retry_count < max_retries: + try: + action = "einschalten" if einschalten else "ausschalten" + hardware_logger.debug(f"🔌 Versuche Steckdose {ip} zu {action} (Versuch {retry_count + 1}/{max_retries})") + + # P100-Verbindung herstellen mit Timeout + p100 = PyP100(ip, self.tapo_username, self.tapo_password) + p100.handshake() + p100.login() + + # Schalten + if einschalten: + p100.turnOn() + else: + p100.turnOff() + + hardware_logger.info(f"✅ Steckdose {ip} erfolgreich {action}") + return True + + except Exception as e: + retry_count += 1 + error_msg = str(e) + + # Spezifische Fehlerbehandlung + if "Connection refused" in error_msg: + hardware_logger.error(f"❌ Verbindung zu {ip} verweigert - Steckdose antwortet nicht auf Port 80") + elif "timeout" in error_msg.lower(): + hardware_logger.error(f"❌ Zeitüberschreitung bei Verbindung zu {ip}") + elif "handshake" in error_msg.lower(): + hardware_logger.error(f"❌ Tapo-Handshake fehlgeschlagen für {ip} - Möglicherweise falsche Credentials") + elif "login" in error_msg.lower(): + hardware_logger.error(f"❌ Tapo-Login fehlgeschlagen für {ip} - Benutzername/Passwort prüfen") + else: + hardware_logger.error(f"❌ Fehler beim Schalten der Steckdose {ip}: {e}") + + if retry_count < max_retries: + hardware_logger.info(f"🔄 Warte 2 Sekunden vor erneutem Versuch...") + time.sleep(2) + + hardware_logger.error(f"❌ Alle {max_retries} Versuche für Steckdose {ip} fehlgeschlagen") + return False def _drucker_status_pruefen(self, drucker: Printer) -> str: """Prüft den aktuellen Status eines Druckers""" @@ -397,6 +426,51 @@ class DruckerSteuerung: except: return False + def _erweiterte_netzwerk_prüfung(self, ip: str) -> bool: + """ + Erweiterte Netzwerk-Prüfung mit mehreren Tests. + + Args: + ip: IP-Adresse zum Prüfen + + Returns: + bool: True wenn erreichbar + """ + hardware_logger.debug(f"🔍 Erweiterte Netzwerk-Prüfung für {ip}") + + # Test 1: Port 80 (HTTP) + if self._ping_test(ip, timeout=2): + hardware_logger.debug(f"✅ {ip} auf Port 80 erreichbar") + return True + + # Test 2: Port 9999 (Tapo-spezifisch für manche Modelle) + try: + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.settimeout(2) + result = sock.connect_ex((ip, 9999)) + sock.close() + if result == 0: + hardware_logger.debug(f"✅ {ip} auf Port 9999 erreichbar") + return True + except: + pass + + # Test 3: ICMP Ping (falls verfügbar) + try: + import subprocess + # Windows und Linux kompatibel + param = '-n' if os.name == 'nt' else '-c' + command = ['ping', param, '1', '-w', '2000', ip] + result = subprocess.run(command, capture_output=True, text=True, timeout=3) + if result.returncode == 0: + hardware_logger.debug(f"✅ {ip} via ICMP Ping erreichbar") + return True + except: + pass + + hardware_logger.warning(f"⚠️ {ip} ist über keine Methode erreichbar") + return False + def _status_log_erstellen(self, drucker_id: int, action: str, grund: str): """Erstellt einen Eintrag im Status-Log""" try: @@ -443,33 +517,171 @@ class DruckerSteuerung: # Legacy-Format: (reachable, status) return (True, 'online') + # Zuerst Netzwerk-Erreichbarkeit prüfen + if not self._erweiterte_netzwerk_prüfung(ip): + hardware_logger.warning(f"⚠️ Steckdose {ip} ist im Netzwerk nicht erreichbar") + return (False, 'unreachable') + + retry_count = 0 + max_retries = 2 + + while retry_count < max_retries: + try: + # Tapo P100/P110 Verbindung + p100 = PyP100(ip, self.tapo_username, self.tapo_password) + p100.handshake() + p100.login() + + # Device Info abrufen + device_info = p100.getDeviceInfo() + + if device_info and 'error_code' in device_info: + if device_info['error_code'] == 0: + device_on = device_info.get('result', {}).get('device_on', False) + + hardware_logger.debug(f"✅ Steckdose {ip}: {'EIN' if device_on else 'AUS'}") + + # Legacy-Format: (reachable, status) + return (True, 'on' if device_on else 'off') + else: + hardware_logger.warning(f"⚠️ Steckdose {ip} Error Code: {device_info['error_code']}") + return (False, 'error') + else: + hardware_logger.error(f"❌ Steckdose {ip}: Keine gültige Antwort") + return (False, 'unreachable') + + except Exception as e: + retry_count += 1 + error_msg = str(e) + + if "Connection refused" in error_msg: + hardware_logger.error(f"❌ Verbindung zu {ip} verweigert") + elif "timeout" in error_msg.lower(): + hardware_logger.error(f"❌ Zeitüberschreitung bei {ip}") + elif "handshake" in error_msg.lower(): + hardware_logger.error(f"❌ Handshake-Fehler bei {ip}") + else: + hardware_logger.error(f"❌ Fehler beim Prüfen von Steckdose {ip}: {e}") + + if retry_count < max_retries: + time.sleep(1) + + return (False, 'unreachable') + + def ping_address(self, ip: str, timeout: int = 5) -> bool: + """ + Prüft die Netzwerk-Erreichbarkeit einer IP-Adresse. + + Args: + ip: IP-Adresse zum Testen + timeout: Timeout in Sekunden + + Returns: + bool: True wenn erreichbar, False sonst + """ + hardware_logger.debug(f"📡 Teste Netzwerk-Erreichbarkeit: {ip}") + try: - # Tapo P100/P110 Verbindung + # Socket-basierter Ping-Test auf Port 80 (HTTP) + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.settimeout(timeout) + result = sock.connect_ex((ip, 80)) + sock.close() + + is_reachable = (result == 0) + hardware_logger.debug(f"📡 {ip}: {'✅ erreichbar' if is_reachable else '❌ nicht erreichbar'}") + + return is_reachable + + except Exception as e: + hardware_logger.debug(f"❌ Ping-Test für {ip} fehlgeschlagen: {e}") + return False + + def turn_off(self, ip: str, username: str = None, password: str = None, printer_id: int = None) -> bool: + """ + Schaltet eine Tapo-Steckdose aus. + + Args: + ip: IP-Adresse der Steckdose + username: Benutzername (wird ignoriert, verwendet interne Credentials) + password: Passwort (wird ignoriert, verwendet interne Credentials) + printer_id: Optional - ID des Druckers für Logging + + Returns: + bool: True wenn erfolgreich ausgeschaltet + """ + hardware_logger.debug(f"🔴 Schalte Steckdose aus: {ip}" + (f" (Drucker ID: {printer_id})" if printer_id else "")) + + if not TAPO_AVAILABLE: + hardware_logger.info(f"🔄 SIMULATION: Steckdose {ip} ausgeschaltet") + return True + + try: + # P100-Verbindung mit internen Credentials p100 = PyP100(ip, self.tapo_username, self.tapo_password) p100.handshake() p100.login() - # Device Info abrufen - device_info = p100.getDeviceInfo() + # Steckdose ausschalten + p100.turnOff() + + hardware_logger.info(f"✅ Steckdose {ip} erfolgreich ausgeschaltet") + + # Status-Log erstellen falls Drucker-ID verfügbar + if printer_id: + try: + self._status_log_erstellen(printer_id, 'turned_off', 'Startup-Initialisierung') + except: + pass # Fehler beim Logging nicht kritisch + + return True - if device_info and 'error_code' in device_info: - if device_info['error_code'] == 0: - device_on = device_info.get('result', {}).get('device_on', False) - - hardware_logger.debug(f"✅ Steckdose {ip}: {'EIN' if device_on else 'AUS'}") - - # Legacy-Format: (reachable, status) - return (True, 'online' if device_on else 'offline') - else: - hardware_logger.warning(f"⚠️ Steckdose {ip} Error Code: {device_info['error_code']}") - return (False, 'error') - else: - hardware_logger.error(f"❌ Steckdose {ip}: Keine gültige Antwort") - return (False, 'unreachable') - except Exception as e: - hardware_logger.error(f"❌ Fehler beim Prüfen von Steckdose {ip}: {e}") - return (False, 'unreachable') + hardware_logger.error(f"❌ Fehler beim Ausschalten der Steckdose {ip}: {e}") + return False + + def turn_on(self, ip: str, username: str = None, password: str = None, printer_id: int = None) -> bool: + """ + Schaltet eine Tapo-Steckdose ein. + + Args: + ip: IP-Adresse der Steckdose + username: Benutzername (wird ignoriert, verwendet interne Credentials) + password: Passwort (wird ignoriert, verwendet interne Credentials) + printer_id: Optional - ID des Druckers für Logging + + Returns: + bool: True wenn erfolgreich eingeschaltet + """ + hardware_logger.debug(f"🟢 Schalte Steckdose ein: {ip}" + (f" (Drucker ID: {printer_id})" if printer_id else "")) + + if not TAPO_AVAILABLE: + hardware_logger.info(f"🔄 SIMULATION: Steckdose {ip} eingeschaltet") + return True + + try: + # P100-Verbindung mit internen Credentials + p100 = PyP100(ip, self.tapo_username, self.tapo_password) + p100.handshake() + p100.login() + + # Steckdose einschalten + p100.turnOn() + + hardware_logger.info(f"✅ Steckdose {ip} erfolgreich eingeschaltet") + + # Status-Log erstellen falls Drucker-ID verfügbar + if printer_id: + try: + self._status_log_erstellen(printer_id, 'turned_on', 'Manuell') + except: + pass # Fehler beim Logging nicht kritisch + + return True + + except Exception as e: + hardware_logger.error(f"❌ Fehler beim Einschalten der Steckdose {ip}: {e}") + return False # ===== GLOBALE INSTANZ ===== diff --git a/backend/utils/job_scheduler.py b/backend/utils/job_scheduler.py index 68258e71f..64f8e661a 100644 --- a/backend/utils/job_scheduler.py +++ b/backend/utils/job_scheduler.py @@ -39,6 +39,7 @@ class BackgroundTaskScheduler: self._running = False self._start_time: Optional[datetime] = None self.logger = get_scheduler_logger() + self._outlets_initialized = False # Flag für einmalige Initialisierung def register_task(self, task_id: str, @@ -713,6 +714,188 @@ class BackgroundTaskScheduler: db_session.rollback() db_session.close() + def initialize_all_outlets_on_startup(self) -> Dict[str, bool]: + """ + Initialisiert alle konfigurierten Steckdosen beim Systemstart. + + Schaltet alle im Netzwerk erreichbaren Tapo-Steckdosen aus, um einen + einheitlichen Startzustand (aus = frei) zu gewährleisten. + + Returns: + Dict[str, bool]: Ergebnis der Initialisierung pro Drucker + """ + if self._outlets_initialized: + self.logger.info("🔄 Steckdosen bereits initialisiert - überspringe") + return {} + + self.logger.info("🚀 Starte Steckdosen-Initialisierung beim Systemstart...") + results = {} + success_count = 0 + total_count = 0 + unreachable_count = 0 + + try: + db_session = get_db_session() + + # Alle aktiven Drucker mit Steckdosen-Konfiguration laden + printers = db_session.query(Printer).filter( + Printer.active == True, + Printer.plug_ip.isnot(None) + ).all() + + if not printers: + self.logger.warning("⚠️ Keine aktiven Drucker mit Steckdosen-Konfiguration gefunden") + db_session.close() + return results + + total_count = len(printers) + self.logger.info(f"🔍 Prüfe {total_count} konfigurierte Steckdosen...") + + # Tapo-Controller für die Operationen verwenden + tapo_controller = get_tapo_controller() + + # Jede Steckdose einzeln verarbeiten + for printer in printers: + printer_name = printer.name + plug_ip = printer.plug_ip + + try: + self.logger.debug(f"🔌 Verarbeite {printer_name} ({plug_ip})...") + + # 1. Netzwerk-Erreichbarkeit prüfen + is_reachable = tapo_controller.ping_address(plug_ip, timeout=3) + + if not is_reachable: + self.logger.warning(f"📡 {printer_name}: Steckdose {plug_ip} nicht erreichbar") + results[printer_name] = { + 'success': False, + 'reason': 'nicht_erreichbar', + 'ip': plug_ip + } + unreachable_count += 1 + continue + + # 2. Aktuellen Status prüfen + reachable, current_status = tapo_controller.check_outlet_status( + plug_ip, + printer_id=printer.id, + debug=True + ) + + if not reachable: + self.logger.warning(f"🔗 {printer_name}: Tapo-Verbindung fehlgeschlagen") + results[printer_name] = { + 'success': False, + 'reason': 'verbindung_fehlgeschlagen', + 'ip': plug_ip + } + unreachable_count += 1 + continue + + # 3. Steckdose ausschalten (nur wenn nötig) + if current_status == "on": + self.logger.info(f"🔄 {printer_name}: Schalte Steckdose von 'an' auf 'aus' um...") + + success = tapo_controller.turn_off( + plug_ip, + printer_id=printer.id + ) + + if success: + self.logger.info(f"✅ {printer_name}: Erfolgreich ausgeschaltet") + + # Drucker-Status in Datenbank aktualisieren + printer.status = "offline" + printer.last_checked = datetime.now() + + results[printer_name] = { + 'success': True, + 'action': 'ausgeschaltet', + 'previous_status': 'an', + 'ip': plug_ip + } + success_count += 1 + else: + self.logger.error(f"❌ {printer_name}: Ausschalten fehlgeschlagen") + results[printer_name] = { + 'success': False, + 'reason': 'ausschalten_fehlgeschlagen', + 'ip': plug_ip + } + + elif current_status == "off": + self.logger.info(f"✓ {printer_name}: Bereits ausgeschaltet - keine Aktion nötig") + + # Status in Datenbank aktualisieren + printer.status = "offline" + printer.last_checked = datetime.now() + + results[printer_name] = { + 'success': True, + 'action': 'bereits_aus', + 'previous_status': 'aus', + 'ip': plug_ip + } + success_count += 1 + + else: + self.logger.warning(f"⚠️ {printer_name}: Unbekannter Status '{current_status}'") + results[printer_name] = { + 'success': False, + 'reason': 'unbekannter_status', + 'status': current_status, + 'ip': plug_ip + } + + except Exception as e: + self.logger.error(f"❌ {printer_name}: Fehler bei Initialisierung - {str(e)}") + results[printer_name] = { + 'success': False, + 'reason': 'ausnahme', + 'error': str(e), + 'ip': plug_ip + } + + # Änderungen in der Datenbank speichern + try: + db_session.commit() + self.logger.debug("💾 Datenbank-Änderungen gespeichert") + except Exception as e: + self.logger.error(f"❌ Fehler beim Speichern der Datenbank-Änderungen: {str(e)}") + db_session.rollback() + + db_session.close() + + # Zusammenfassung loggen + self.logger.info("=" * 60) + self.logger.info("🎯 STECKDOSEN-INITIALISIERUNG ABGESCHLOSSEN") + self.logger.info(f"📊 Gesamt: {total_count} Steckdosen") + self.logger.info(f"✅ Erfolgreich: {success_count}") + self.logger.info(f"📡 Nicht erreichbar: {unreachable_count}") + self.logger.info(f"❌ Fehlgeschlagen: {total_count - success_count - unreachable_count}") + + if success_count == total_count: + self.logger.info("🌟 ALLE Steckdosen erfolgreich initialisiert!") + elif success_count > 0: + self.logger.info(f"⚡ {success_count}/{total_count} Steckdosen erfolgreich initialisiert") + else: + self.logger.warning("⚠️ KEINE Steckdose konnte initialisiert werden!") + + self.logger.info("=" * 60) + + # Flag setzen um Mehrfach-Initialisierung zu verhindern + self._outlets_initialized = True + + except Exception as e: + self.logger.error(f"❌ Kritischer Fehler bei Steckdosen-Initialisierung: {str(e)}") + try: + db_session.rollback() + db_session.close() + except: + pass + + return results + # Scheduler-Instanz erzeugen scheduler = BackgroundTaskScheduler()