📚 Improved backend codebase structure & documentation (#123) 🌟

This commit is contained in:
Till Tomczak
2025-06-20 12:26:29 +02:00
parent 286a70b01f
commit 59f5c543e3
24 changed files with 757 additions and 8 deletions

View File

@ -1036,11 +1036,11 @@ def dashboard():
# Letzte Jobs als Aktivitäten # Letzte Jobs als Aktivitäten
recent_jobs = db_session.query(Job).filter( recent_jobs = db_session.query(Job).filter(
Job.user_id == current_user.id if not current_user.is_admin else True Job.user_id == current_user.id if not current_user.is_admin else True
).order_by(Job.updated_at.desc()).limit(5).all() ).order_by(Job.created_at.desc()).limit(5).all()
activities = [] activities = []
for job in recent_jobs: for job in recent_jobs:
time_diff = datetime.now() - (job.updated_at or job.created_at) time_diff = datetime.now() - job.created_at
if time_diff.days == 0: if time_diff.days == 0:
if time_diff.seconds < 3600: if time_diff.seconds < 3600:
time_str = f"vor {time_diff.seconds // 60} Minuten" time_str = f"vor {time_diff.seconds // 60} Minuten"
@ -1745,7 +1745,7 @@ def api_stats():
today = date.today() today = date.today()
completed_today = db_session.query(Job).filter( completed_today = db_session.query(Job).filter(
Job.status == 'completed', Job.status == 'completed',
Job.updated_at >= today Job.created_at >= today
).count() ).count()
# Online-Drucker (aktive Drucker) # Online-Drucker (aktive Drucker)

View File

@ -892,7 +892,7 @@ def get_user_activity_chart():
user_activity = db_session.query( user_activity = db_session.query(
User.username, User.username,
func.count(Job.id).label('job_count') func.count(Job.id).label('job_count')
).outerjoin(Job).group_by(User.id, User.username).order_by( ).outerjoin(Job, User.id == Job.user_id).group_by(User.id, User.username).order_by(
func.count(Job.id).desc() func.count(Job.id).desc()
).limit(10).all() ).limit(10).all()

View File

@ -64960,3 +64960,296 @@ WHERE users.role = ?]
2025-06-20 12:16:57 - [app] app - [INFO] INFO - [SHUTDOWN] 🧹 Cleanup wird ausgeführt... 2025-06-20 12:16:57 - [app] app - [INFO] INFO - [SHUTDOWN] 🧹 Cleanup wird ausgeführt...
2025-06-20 12:16:57 - [app] app - [INFO] INFO - [SHUTDOWN] ✅ Queue Manager gestoppt 2025-06-20 12:16:57 - [app] app - [INFO] INFO - [SHUTDOWN] ✅ Queue Manager gestoppt
2025-06-20 12:16:57 - [app] app - [ERROR] ERROR - [SHUTDOWN] ❌ Cleanup-Fehler: 2025-06-20 12:16:57 - [app] app - [ERROR] ERROR - [SHUTDOWN] ❌ Cleanup-Fehler:
2025-06-20 12:16:59 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: database/myp.db
2025-06-20 12:17:00 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung:
2025-06-20 12:17:00 - [app] app - [INFO] INFO - [CONFIG] Production-Modus:
2025-06-20 12:17:00 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration
2025-06-20 12:17:00 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration
2025-06-20 12:17:00 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Konfiguration aktiviert
2025-06-20 12:17:00 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment:
2025-06-20 12:17:00 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode:
2025-06-20 12:17:00 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo:
2025-06-20 12:17:00 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O)
2025-06-20 12:17:00 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: erstellt, aktualisiert
2025-06-20 12:17:00 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP -Umgebung
2025-06-20 12:17:00 - [app] app - [INFO] INFO - [STARTUP] 🏢
2025-06-20 12:17:00 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped:
2025-06-20 12:17:00 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank...
2025-06-20 12:17:00 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert
2025-06-20 12:17:00 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert
2025-06-20 12:17:00 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin...
2025-06-20 12:17:00 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt.
2025-06-20 12:17:00 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft
2025-06-20 12:17:00 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker...
2025-06-20 12:17:00 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100)
2025-06-20 12:17:00 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101)
2025-06-20 12:17:00 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102)
2025-06-20 12:17:00 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103)
2025-06-20 12:17:00 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104)
2025-06-20 12:17:00 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106)
2025-06-20 12:17:00 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert
2025-06-20 12:17:00 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert
2025-06-20 12:17:00 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105)
2025-06-20 12:17:00 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert
2025-06-20 12:17:00 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager...
2025-06-20 12:17:00 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet
2025-06-20 12:17:00 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler...
2025-06-20 12:17:00 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet
2025-06-20 12:17:00 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Steckdosen (alle auf 'aus' = frei)...
2025-06-20 12:17:18 - [app] app - [WARNING] WARNING - [STARTUP] ⚠️ Keine der 6 Steckdosen konnte initialisiert werden
2025-06-20 12:17:18 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://:
2025-06-20 12:17:40 - [app] app - [INFO] INFO - Locating template 'login.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\\login.html')
2025-06-20 12:17:40 - [app] app - [INFO] INFO - Locating template 'base.html':
1: trying loader of application '__main__'
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates
-> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\base.html')
2025-06-20 12:17:40 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 12:17:43 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 12:17:43 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 12:17:43 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 12:17:43 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 12:17:48 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 12:17:48 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 12:17:48 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 12:17:48 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 12:18:14 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 12:18:14 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 12:18:14 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 12:18:14 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 12:18:44 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 12:18:44 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 12:18:44 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 12:18:44 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 12:19:14 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 12:19:14 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 12:19:14 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 12:19:14 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 12:19:44 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 12:19:44 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 12:19:44 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 12:19:44 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 12:20:14 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 12:20:14 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 12:20:14 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 12:20:14 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 12:20:44 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 12:20:44 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 12:20:44 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 12:20:44 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 12:21:14 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 12:21:14 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 12:21:14 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 12:21:14 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 12:21:44 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 12:21:44 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 12:21:44 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 12:21:44 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 12:22:14 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 12:22:14 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 12:22:14 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 12:22:14 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 12:22:44 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 12:22:44 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 12:22:44 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 12:22:44 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 12:22:44 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 12:22:44 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 12:22:44 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 12:22:44 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 12:22:44 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 12:22:44 - [app] app - [ERROR] ERROR - ❌ Fehler beim Laden des Dashboards: type object 'Job' has no attribute 'updated_at'
Traceback (most recent call last):
File "C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\app.py", line 1039, in dashboard
).order_by(Job.updated_at.desc()).limit(5).all()
^^^^^^^^^^^^^^
AttributeError: type object 'Job' has no attribute 'updated_at'. Did you mean: 'created_at'?
2025-06-20 12:22:44 - [app] app - [INFO] INFO - Locating template 'dashboard.html':
1: trying loader of application '__main__'
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates
-> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\dashboard.html')
2025-06-20 12:22:44 - [app] app - [INFO] INFO - Locating template 'macros/ui_components.html':
1: trying loader of application '__main__'
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates
-> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\macros\\ui_components.html')
2025-06-20 12:22:44 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 12:23:14 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 12:23:14 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 12:23:14 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 12:23:14 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 12:23:44 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 12:23:44 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 12:23:44 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 12:23:44 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 12:24:14 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 12:24:14 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 12:24:14 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 12:24:14 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 12:24:44 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 12:24:44 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 12:24:44 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 12:24:44 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 12:24:50 - [app] app - [INFO] INFO - [SHUTDOWN] 🧹 Cleanup wird ausgeführt...
2025-06-20 12:24:50 - [app] app - [INFO] INFO - [SHUTDOWN] ✅ Queue Manager gestoppt
2025-06-20 12:24:50 - [app] app - [ERROR] ERROR - [SHUTDOWN] ❌ Cleanup-Fehler:
2025-06-20 12:24:51 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: database/myp.db
2025-06-20 12:24:52 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung:
2025-06-20 12:24:52 - [app] app - [INFO] INFO - [CONFIG] Production-Modus:
2025-06-20 12:24:52 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration
2025-06-20 12:24:52 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration
2025-06-20 12:24:52 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Konfiguration aktiviert
2025-06-20 12:24:52 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment:
2025-06-20 12:24:52 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode:
2025-06-20 12:24:52 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo:
2025-06-20 12:24:52 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O)
2025-06-20 12:24:52 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: erstellt, aktualisiert
2025-06-20 12:24:52 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP -Umgebung
2025-06-20 12:24:52 - [app] app - [INFO] INFO - [STARTUP] 🏢
2025-06-20 12:24:52 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped:
2025-06-20 12:24:52 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank...
2025-06-20 12:24:52 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert
2025-06-20 12:24:52 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert
2025-06-20 12:24:52 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin...
2025-06-20 12:24:53 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt.
2025-06-20 12:24:53 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft
2025-06-20 12:24:53 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker...
2025-06-20 12:24:53 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100)
2025-06-20 12:24:53 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101)
2025-06-20 12:24:53 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102)
2025-06-20 12:24:53 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103)
2025-06-20 12:24:53 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104)
2025-06-20 12:24:53 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106)
2025-06-20 12:24:53 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert
2025-06-20 12:24:53 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert
2025-06-20 12:24:53 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105)
2025-06-20 12:24:53 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert
2025-06-20 12:24:53 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager...
2025-06-20 12:24:53 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet
2025-06-20 12:24:53 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler...
2025-06-20 12:24:53 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet
2025-06-20 12:24:53 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Steckdosen (alle auf 'aus' = frei)...
2025-06-20 12:25:14 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: database/myp.db
2025-06-20 12:25:15 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung:
2025-06-20 12:25:15 - [app] app - [INFO] INFO - [CONFIG] Production-Modus:
2025-06-20 12:25:15 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration
2025-06-20 12:25:15 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration
2025-06-20 12:25:15 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Konfiguration aktiviert
2025-06-20 12:25:15 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment:
2025-06-20 12:25:15 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode:
2025-06-20 12:25:15 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo:
2025-06-20 12:25:15 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O)
2025-06-20 12:25:15 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: erstellt, aktualisiert
2025-06-20 12:25:15 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP -Umgebung
2025-06-20 12:25:15 - [app] app - [INFO] INFO - [STARTUP] 🏢
2025-06-20 12:25:15 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped:
2025-06-20 12:25:15 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank...
2025-06-20 12:25:15 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert
2025-06-20 12:25:15 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert
2025-06-20 12:25:15 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin...
2025-06-20 12:25:16 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt.
2025-06-20 12:25:16 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft
2025-06-20 12:25:16 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker...
2025-06-20 12:25:16 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100)
2025-06-20 12:25:16 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101)
2025-06-20 12:25:16 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102)
2025-06-20 12:25:16 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103)
2025-06-20 12:25:16 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104)
2025-06-20 12:25:16 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106)
2025-06-20 12:25:16 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert
2025-06-20 12:25:16 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert
2025-06-20 12:25:16 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105)
2025-06-20 12:25:16 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert
2025-06-20 12:25:16 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager...
2025-06-20 12:25:16 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet
2025-06-20 12:25:16 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler...
2025-06-20 12:25:16 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet
2025-06-20 12:25:16 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Steckdosen (alle auf 'aus' = frei)...
2025-06-20 12:25:34 - [app] app - [WARNING] WARNING - [STARTUP] ⚠️ Keine der 6 Steckdosen konnte initialisiert werden
2025-06-20 12:25:34 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://:
2025-06-20 12:25:35 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: database/myp.db
2025-06-20 12:25:36 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung:
2025-06-20 12:25:36 - [app] app - [INFO] INFO - [CONFIG] Production-Modus:
2025-06-20 12:25:36 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration
2025-06-20 12:25:36 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration
2025-06-20 12:25:36 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Konfiguration aktiviert
2025-06-20 12:25:36 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment:
2025-06-20 12:25:36 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode:
2025-06-20 12:25:36 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo:
2025-06-20 12:25:36 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O)
2025-06-20 12:25:36 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: erstellt, aktualisiert
2025-06-20 12:25:36 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP -Umgebung
2025-06-20 12:25:36 - [app] app - [INFO] INFO - [STARTUP] 🏢
2025-06-20 12:25:36 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped:
2025-06-20 12:25:36 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank...
2025-06-20 12:25:36 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert
2025-06-20 12:25:36 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert
2025-06-20 12:25:36 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin...
2025-06-20 12:25:36 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt.
2025-06-20 12:25:36 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft
2025-06-20 12:25:36 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker...
2025-06-20 12:25:36 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100)
2025-06-20 12:25:36 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101)
2025-06-20 12:25:36 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102)
2025-06-20 12:25:36 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103)
2025-06-20 12:25:36 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104)
2025-06-20 12:25:36 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106)
2025-06-20 12:25:36 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert
2025-06-20 12:25:36 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert
2025-06-20 12:25:36 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105)
2025-06-20 12:25:36 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert
2025-06-20 12:25:36 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager...
2025-06-20 12:25:36 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet
2025-06-20 12:25:36 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler...
2025-06-20 12:25:36 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet
2025-06-20 12:25:36 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Steckdosen (alle auf 'aus' = frei)...
2025-06-20 12:25:54 - [app] app - [WARNING] WARNING - [STARTUP] ⚠️ Keine der 6 Steckdosen konnte initialisiert werden
2025-06-20 12:25:54 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://:
2025-06-20 12:25:54 - [app] app - [INFO] INFO - ✅ Dashboard geladen für Administrator: 3 aktive Jobs, 0 verfügbare Drucker
2025-06-20 12:25:54 - [app] app - [INFO] INFO - Locating template 'dashboard.html':
1: trying loader of application '__main__'
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates
-> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\dashboard.html')
2025-06-20 12:25:54 - [app] app - [INFO] INFO - Locating template 'base.html':
1: trying loader of application '__main__'
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates
-> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\base.html')
2025-06-20 12:25:54 - [app] app - [INFO] INFO - Locating template 'macros/ui_components.html':
1: trying loader of application '__main__'
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates
-> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\macros\\ui_components.html')
2025-06-20 12:25:54 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 12:25:55 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 12:25:55 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 12:25:59 - [app] app - [INFO] INFO - [SHUTDOWN] 🧹 Cleanup wird ausgeführt...
2025-06-20 12:25:59 - [app] app - [INFO] INFO - [SHUTDOWN] ✅ Queue Manager gestoppt
2025-06-20 12:25:59 - [app] app - [ERROR] ERROR - [SHUTDOWN] ❌ Cleanup-Fehler:

View File

@ -512,3 +512,11 @@
2025-06-20 12:07:23 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion) 2025-06-20 12:07:23 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion)
2025-06-20 12:16:59 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert 2025-06-20 12:16:59 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert
2025-06-20 12:16:59 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion) 2025-06-20 12:16:59 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion)
2025-06-20 12:24:51 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert
2025-06-20 12:24:51 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion)
2025-06-20 12:25:14 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert
2025-06-20 12:25:14 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion)
2025-06-20 12:25:35 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert
2025-06-20 12:25:35 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion)
2025-06-20 12:26:00 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert
2025-06-20 12:26:00 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion)

View File

@ -1049,3 +1049,11 @@
2025-06-20 12:06:21 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) 2025-06-20 12:06:21 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
2025-06-20 12:07:24 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert 2025-06-20 12:07:24 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert
2025-06-20 12:07:24 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) 2025-06-20 12:07:24 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
2025-06-20 12:16:59 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert
2025-06-20 12:16:59 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
2025-06-20 12:24:51 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert
2025-06-20 12:24:51 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
2025-06-20 12:25:14 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert
2025-06-20 12:25:14 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
2025-06-20 12:25:35 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert
2025-06-20 12:25:35 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)

View File

@ -112,3 +112,7 @@
2025-06-20 12:05:14 - [drucker_steuerung] drucker_steuerung - [INFO] INFO - 🖨️ Drucker-Steuerungs-Blueprint (Backend-Kontrolle) geladen 2025-06-20 12:05:14 - [drucker_steuerung] drucker_steuerung - [INFO] INFO - 🖨️ Drucker-Steuerungs-Blueprint (Backend-Kontrolle) geladen
2025-06-20 12:06:22 - [drucker_steuerung] drucker_steuerung - [INFO] INFO - 🖨️ Drucker-Steuerungs-Blueprint (Backend-Kontrolle) geladen 2025-06-20 12:06:22 - [drucker_steuerung] drucker_steuerung - [INFO] INFO - 🖨️ Drucker-Steuerungs-Blueprint (Backend-Kontrolle) geladen
2025-06-20 12:07:25 - [drucker_steuerung] drucker_steuerung - [INFO] INFO - 🖨️ Drucker-Steuerungs-Blueprint (Backend-Kontrolle) geladen 2025-06-20 12:07:25 - [drucker_steuerung] drucker_steuerung - [INFO] INFO - 🖨️ Drucker-Steuerungs-Blueprint (Backend-Kontrolle) geladen
2025-06-20 12:17:00 - [drucker_steuerung] drucker_steuerung - [INFO] INFO - 🖨️ Drucker-Steuerungs-Blueprint (Backend-Kontrolle) geladen
2025-06-20 12:24:52 - [drucker_steuerung] drucker_steuerung - [INFO] INFO - 🖨️ Drucker-Steuerungs-Blueprint (Backend-Kontrolle) geladen
2025-06-20 12:25:15 - [drucker_steuerung] drucker_steuerung - [INFO] INFO - 🖨️ Drucker-Steuerungs-Blueprint (Backend-Kontrolle) geladen
2025-06-20 12:25:36 - [drucker_steuerung] drucker_steuerung - [INFO] INFO - 🖨️ Drucker-Steuerungs-Blueprint (Backend-Kontrolle) geladen

View File

@ -841,3 +841,7 @@
2025-06-20 12:05:14 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert 2025-06-20 12:05:14 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert
2025-06-20 12:06:22 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert 2025-06-20 12:06:22 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert
2025-06-20 12:07:25 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert 2025-06-20 12:07:25 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert
2025-06-20 12:17:00 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert
2025-06-20 12:24:52 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert
2025-06-20 12:25:15 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert
2025-06-20 12:25:36 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert

View File

@ -3943,3 +3943,11 @@
2025-06-20 12:07:17 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Energiedaten von 192.168.0.102 nicht abrufbar: HTTPConnectionPool(host='192.168.0.102', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000001B1B99CEBE0>, 'Connection to 192.168.0.102 timed out. (connect timeout=2)')) 2025-06-20 12:07:17 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Energiedaten von 192.168.0.102 nicht abrufbar: HTTPConnectionPool(host='192.168.0.102', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000001B1B99CEBE0>, 'Connection to 192.168.0.102 timed out. (connect timeout=2)'))
2025-06-20 12:07:24 - [hardware_integration] hardware_integration - [INFO] INFO - 🚀 Hardware Integration (Backend-Kontrolle) erfolgreich geladen 2025-06-20 12:07:24 - [hardware_integration] hardware_integration - [INFO] INFO - 🚀 Hardware Integration (Backend-Kontrolle) erfolgreich geladen
2025-06-20 12:07:25 - [hardware_integration] hardware_integration - [INFO] INFO - 🎯 DruckerSteuerung initialisiert - BACKEND ÜBERNIMMT KONTROLLE 2025-06-20 12:07:25 - [hardware_integration] hardware_integration - [INFO] INFO - 🎯 DruckerSteuerung initialisiert - BACKEND ÜBERNIMMT KONTROLLE
2025-06-20 12:16:59 - [hardware_integration] hardware_integration - [INFO] INFO - 🚀 Hardware Integration (Backend-Kontrolle) erfolgreich geladen
2025-06-20 12:17:00 - [hardware_integration] hardware_integration - [INFO] INFO - 🎯 DruckerSteuerung initialisiert - BACKEND ÜBERNIMMT KONTROLLE
2025-06-20 12:24:51 - [hardware_integration] hardware_integration - [INFO] INFO - 🚀 Hardware Integration (Backend-Kontrolle) erfolgreich geladen
2025-06-20 12:24:53 - [hardware_integration] hardware_integration - [INFO] INFO - 🎯 DruckerSteuerung initialisiert - BACKEND ÜBERNIMMT KONTROLLE
2025-06-20 12:25:14 - [hardware_integration] hardware_integration - [INFO] INFO - 🚀 Hardware Integration (Backend-Kontrolle) erfolgreich geladen
2025-06-20 12:25:16 - [hardware_integration] hardware_integration - [INFO] INFO - 🎯 DruckerSteuerung initialisiert - BACKEND ÜBERNIMMT KONTROLLE
2025-06-20 12:25:35 - [hardware_integration] hardware_integration - [INFO] INFO - 🚀 Hardware Integration (Backend-Kontrolle) erfolgreich geladen
2025-06-20 12:25:36 - [hardware_integration] hardware_integration - [INFO] INFO - 🎯 DruckerSteuerung initialisiert - BACKEND ÜBERNIMMT KONTROLLE

View File

@ -2038,3 +2038,19 @@
2025-06-20 12:07:24 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) 2025-06-20 12:07:24 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion)
2025-06-20 12:07:25 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) 2025-06-20 12:07:25 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität)
2025-06-20 12:16:57 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) 2025-06-20 12:16:57 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität)
2025-06-20 12:16:59 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert
2025-06-20 12:16:59 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion)
2025-06-20 12:17:00 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität)
2025-06-20 12:24:50 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität)
2025-06-20 12:24:51 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert
2025-06-20 12:24:51 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion)
2025-06-20 12:24:53 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität)
2025-06-20 12:25:02 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität)
2025-06-20 12:25:02 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität)
2025-06-20 12:25:14 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert
2025-06-20 12:25:14 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion)
2025-06-20 12:25:16 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität)
2025-06-20 12:25:35 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert
2025-06-20 12:25:35 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion)
2025-06-20 12:25:36 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität)
2025-06-20 12:25:59 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität)

View File

@ -1155,3 +1155,33 @@ sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) FOREIGN KEY constraint f
2025-06-20 12:16:15 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 3 von 3 (Seite 1) 2025-06-20 12:16:15 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 3 von 3 (Seite 1)
2025-06-20 12:16:45 - [jobs] jobs - [INFO] INFO - 📋 Jobs-Abfrage gestartet von Benutzer 1 (Admin: True) 2025-06-20 12:16:45 - [jobs] jobs - [INFO] INFO - 📋 Jobs-Abfrage gestartet von Benutzer 1 (Admin: True)
2025-06-20 12:16:45 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 3 von 3 (Seite 1) 2025-06-20 12:16:45 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 3 von 3 (Seite 1)
2025-06-20 12:17:43 - [jobs] jobs - [INFO] INFO - 📋 Jobs-Abfrage gestartet von Benutzer 1 (Admin: True)
2025-06-20 12:17:43 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 3 von 3 (Seite 1)
2025-06-20 12:17:48 - [jobs] jobs - [INFO] INFO - 📋 Jobs-Abfrage gestartet von Benutzer 1 (Admin: True)
2025-06-20 12:17:48 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 3 von 3 (Seite 1)
2025-06-20 12:18:14 - [jobs] jobs - [INFO] INFO - 📋 Jobs-Abfrage gestartet von Benutzer 1 (Admin: True)
2025-06-20 12:18:14 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 3 von 3 (Seite 1)
2025-06-20 12:18:44 - [jobs] jobs - [INFO] INFO - 📋 Jobs-Abfrage gestartet von Benutzer 1 (Admin: True)
2025-06-20 12:18:44 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 3 von 3 (Seite 1)
2025-06-20 12:19:14 - [jobs] jobs - [INFO] INFO - 📋 Jobs-Abfrage gestartet von Benutzer 1 (Admin: True)
2025-06-20 12:19:14 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 3 von 3 (Seite 1)
2025-06-20 12:19:44 - [jobs] jobs - [INFO] INFO - 📋 Jobs-Abfrage gestartet von Benutzer 1 (Admin: True)
2025-06-20 12:19:44 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 3 von 3 (Seite 1)
2025-06-20 12:20:14 - [jobs] jobs - [INFO] INFO - 📋 Jobs-Abfrage gestartet von Benutzer 1 (Admin: True)
2025-06-20 12:20:14 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 3 von 3 (Seite 1)
2025-06-20 12:20:44 - [jobs] jobs - [INFO] INFO - 📋 Jobs-Abfrage gestartet von Benutzer 1 (Admin: True)
2025-06-20 12:20:44 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 3 von 3 (Seite 1)
2025-06-20 12:21:14 - [jobs] jobs - [INFO] INFO - 📋 Jobs-Abfrage gestartet von Benutzer 1 (Admin: True)
2025-06-20 12:21:14 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 3 von 3 (Seite 1)
2025-06-20 12:21:44 - [jobs] jobs - [INFO] INFO - 📋 Jobs-Abfrage gestartet von Benutzer 1 (Admin: True)
2025-06-20 12:21:44 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 3 von 3 (Seite 1)
2025-06-20 12:22:14 - [jobs] jobs - [INFO] INFO - 📋 Jobs-Abfrage gestartet von Benutzer 1 (Admin: True)
2025-06-20 12:22:14 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 3 von 3 (Seite 1)
2025-06-20 12:23:14 - [jobs] jobs - [INFO] INFO - 📋 Jobs-Abfrage gestartet von Benutzer 1 (Admin: True)
2025-06-20 12:23:14 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 3 von 3 (Seite 1)
2025-06-20 12:23:44 - [jobs] jobs - [INFO] INFO - 📋 Jobs-Abfrage gestartet von Benutzer 1 (Admin: True)
2025-06-20 12:23:44 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 3 von 3 (Seite 1)
2025-06-20 12:24:14 - [jobs] jobs - [INFO] INFO - 📋 Jobs-Abfrage gestartet von Benutzer 1 (Admin: True)
2025-06-20 12:24:14 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 3 von 3 (Seite 1)
2025-06-20 12:24:44 - [jobs] jobs - [INFO] INFO - 📋 Jobs-Abfrage gestartet von Benutzer 1 (Admin: True)
2025-06-20 12:24:44 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 3 von 3 (Seite 1)

View File

@ -1037,3 +1037,11 @@
2025-06-20 12:06:22 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) 2025-06-20 12:06:22 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
2025-06-20 12:07:25 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert 2025-06-20 12:07:25 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert
2025-06-20 12:07:25 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) 2025-06-20 12:07:25 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
2025-06-20 12:17:00 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert
2025-06-20 12:17:00 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
2025-06-20 12:24:52 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert
2025-06-20 12:24:52 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
2025-06-20 12:25:15 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert
2025-06-20 12:25:15 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
2025-06-20 12:25:36 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert
2025-06-20 12:25:36 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)

View File

@ -573,3 +573,7 @@ WHERE users.role = ?]
2025-06-20 12:05:14 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert 2025-06-20 12:05:14 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert
2025-06-20 12:06:22 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert 2025-06-20 12:06:22 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert
2025-06-20 12:07:25 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert 2025-06-20 12:07:25 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert
2025-06-20 12:17:00 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert
2025-06-20 12:24:52 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert
2025-06-20 12:25:15 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert
2025-06-20 12:25:36 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert

View File

@ -4973,3 +4973,283 @@
2025-06-20 12:16:56 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: Gastauftrag: Till Tomczaktet 2025-06-20 12:16:56 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: Gastauftrag: Till Tomczaktet
2025-06-20 12:16:56 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined 2025-06-20 12:16:56 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:16:56 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten 2025-06-20 12:16:56 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-20 12:16:59 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True
2025-06-20 12:17:00 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet
2025-06-20 12:17:00 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet
2025-06-20 12:17:00 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte Steckdosen-Initialisierung beim Systemstart...
2025-06-20 12:17:00 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet
2025-06-20 12:17:00 - [scheduler] scheduler - [INFO] INFO - 🔍 Prüfe 6 konfigurierte Steckdosen...
2025-06-20 12:17:00 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:17:00 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-20 12:17:00 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: Gastauftrag: Till Tomczaktet
2025-06-20 12:17:00 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:17:00 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-20 12:17:03 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 1: Steckdose 192.168.0.100 nicht erreichbar
2025-06-20 12:17:06 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 2: Steckdose 192.168.0.101 nicht erreichbar
2025-06-20 12:17:09 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 3: Steckdose 192.168.0.102 nicht erreichbar
2025-06-20 12:17:12 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 4: Steckdose 192.168.0.103 nicht erreichbar
2025-06-20 12:17:15 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 5: Steckdose 192.168.0.104 nicht erreichbar
2025-06-20 12:17:18 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 6: Steckdose 192.168.0.106 nicht erreichbar
2025-06-20 12:17:18 - [scheduler] scheduler - [INFO] INFO - ============================================================
2025-06-20 12:17:18 - [scheduler] scheduler - [INFO] INFO - 🎯 STECKDOSEN-INITIALISIERUNG ABGESCHLOSSEN
2025-06-20 12:17:18 - [scheduler] scheduler - [INFO] INFO - 📊 Gesamt: 6 Steckdosen
2025-06-20 12:17:18 - [scheduler] scheduler - [INFO] INFO - ✅ Erfolgreich: 0
2025-06-20 12:17:18 - [scheduler] scheduler - [INFO] INFO - 📡 Nicht erreichbar: 6
2025-06-20 12:17:18 - [scheduler] scheduler - [INFO] INFO - ❌ Fehlgeschlagen: 0
2025-06-20 12:17:18 - [scheduler] scheduler - [WARNING] WARNING - ⚠️ KEINE Steckdose konnte initialisiert werden!
2025-06-20 12:17:18 - [scheduler] scheduler - [INFO] INFO - ============================================================
2025-06-20 12:17:19 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet
2025-06-20 12:17:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:17:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-20 12:17:19 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: Gastauftrag: Till Tomczaktet
2025-06-20 12:17:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:17:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-20 12:17:30 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet
2025-06-20 12:17:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:17:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-20 12:17:30 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: Gastauftrag: Till Tomczaktet
2025-06-20 12:17:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:17:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-20 12:17:49 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet
2025-06-20 12:17:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:17:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-20 12:17:49 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: Gastauftrag: Till Tomczaktet
2025-06-20 12:17:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:17:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-20 12:18:00 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet
2025-06-20 12:18:00 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:18:00 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-20 12:18:00 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: Gastauftrag: Till Tomczaktet
2025-06-20 12:18:00 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:18:00 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-20 12:18:19 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet
2025-06-20 12:18:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:18:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-20 12:18:19 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: Gastauftrag: Till Tomczaktet
2025-06-20 12:18:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:18:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-20 12:18:30 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet
2025-06-20 12:18:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:18:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-20 12:18:30 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: Gastauftrag: Till Tomczaktet
2025-06-20 12:18:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:18:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-20 12:18:49 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet
2025-06-20 12:18:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:18:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-20 12:18:49 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: Gastauftrag: Till Tomczaktet
2025-06-20 12:18:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:18:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-20 12:19:00 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet
2025-06-20 12:19:00 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:19:00 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-20 12:19:00 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: Gastauftrag: Till Tomczaktet
2025-06-20 12:19:00 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:19:00 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-20 12:19:19 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet
2025-06-20 12:19:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:19:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-20 12:19:19 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: Gastauftrag: Till Tomczaktet
2025-06-20 12:19:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:19:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-20 12:19:30 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet
2025-06-20 12:19:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:19:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-20 12:19:30 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: Gastauftrag: Till Tomczaktet
2025-06-20 12:19:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:19:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-20 12:19:49 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet
2025-06-20 12:19:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:19:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-20 12:19:49 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: Gastauftrag: Till Tomczaktet
2025-06-20 12:19:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:19:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-20 12:20:00 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet
2025-06-20 12:20:00 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:20:00 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-20 12:20:00 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: Gastauftrag: Till Tomczaktet
2025-06-20 12:20:00 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:20:00 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-20 12:20:19 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet
2025-06-20 12:20:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:20:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-20 12:20:19 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: Gastauftrag: Till Tomczaktet
2025-06-20 12:20:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:20:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-20 12:20:30 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet
2025-06-20 12:20:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:20:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-20 12:20:30 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: Gastauftrag: Till Tomczaktet
2025-06-20 12:20:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:20:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-20 12:20:49 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet
2025-06-20 12:20:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:20:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-20 12:20:49 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: Gastauftrag: Till Tomczaktet
2025-06-20 12:20:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:20:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-20 12:21:00 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet
2025-06-20 12:21:00 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:21:00 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-20 12:21:00 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: Gastauftrag: Till Tomczaktet
2025-06-20 12:21:00 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:21:00 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-20 12:21:19 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet
2025-06-20 12:21:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:21:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-20 12:21:19 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: Gastauftrag: Till Tomczaktet
2025-06-20 12:21:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:21:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-20 12:21:30 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet
2025-06-20 12:21:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:21:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-20 12:21:30 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: Gastauftrag: Till Tomczaktet
2025-06-20 12:21:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:21:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-20 12:21:49 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet
2025-06-20 12:21:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:21:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-20 12:21:49 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: Gastauftrag: Till Tomczaktet
2025-06-20 12:21:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:21:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-20 12:22:00 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet
2025-06-20 12:22:00 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:22:00 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-20 12:22:00 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: Gastauftrag: Till Tomczaktet
2025-06-20 12:22:00 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:22:00 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-20 12:22:19 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet
2025-06-20 12:22:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:22:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-20 12:22:19 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: Gastauftrag: Till Tomczaktet
2025-06-20 12:22:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:22:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-20 12:22:30 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet
2025-06-20 12:22:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:22:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-20 12:22:30 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: Gastauftrag: Till Tomczaktet
2025-06-20 12:22:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:22:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-20 12:22:49 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet
2025-06-20 12:22:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:22:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-20 12:22:49 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: Gastauftrag: Till Tomczaktet
2025-06-20 12:22:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:22:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-20 12:23:00 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet
2025-06-20 12:23:00 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:23:00 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-20 12:23:00 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: Gastauftrag: Till Tomczaktet
2025-06-20 12:23:00 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:23:00 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-20 12:23:19 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet
2025-06-20 12:23:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:23:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-20 12:23:19 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: Gastauftrag: Till Tomczaktet
2025-06-20 12:23:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:23:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-20 12:23:30 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet
2025-06-20 12:23:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:23:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-20 12:23:30 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: Gastauftrag: Till Tomczaktet
2025-06-20 12:23:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:23:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-20 12:23:49 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet
2025-06-20 12:23:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:23:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-20 12:23:49 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: Gastauftrag: Till Tomczaktet
2025-06-20 12:23:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:23:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-20 12:24:00 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet
2025-06-20 12:24:00 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:24:00 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-20 12:24:00 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: Gastauftrag: Till Tomczaktet
2025-06-20 12:24:00 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:24:00 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-20 12:24:20 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet
2025-06-20 12:24:20 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:24:20 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-20 12:24:20 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: Gastauftrag: Till Tomczaktet
2025-06-20 12:24:20 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:24:20 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-20 12:24:30 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet
2025-06-20 12:24:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:24:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-20 12:24:30 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: Gastauftrag: Till Tomczaktet
2025-06-20 12:24:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:24:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-20 12:24:50 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet
2025-06-20 12:24:50 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:24:50 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-20 12:24:50 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: Gastauftrag: Till Tomczaktet
2025-06-20 12:24:50 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:24:50 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-20 12:24:51 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True
2025-06-20 12:24:53 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet
2025-06-20 12:24:53 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet
2025-06-20 12:24:53 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet
2025-06-20 12:24:53 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte Steckdosen-Initialisierung beim Systemstart...
2025-06-20 12:24:53 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:24:53 - [scheduler] scheduler - [INFO] INFO - 🔍 Prüfe 6 konfigurierte Steckdosen...
2025-06-20 12:24:53 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-20 12:24:53 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: Gastauftrag: Till Tomczaktet
2025-06-20 12:24:53 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:24:53 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-20 12:24:56 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 1: Steckdose 192.168.0.100 nicht erreichbar
2025-06-20 12:24:59 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 2: Steckdose 192.168.0.101 nicht erreichbar
2025-06-20 12:25:14 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True
2025-06-20 12:25:16 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet
2025-06-20 12:25:16 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet
2025-06-20 12:25:16 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet
2025-06-20 12:25:16 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte Steckdosen-Initialisierung beim Systemstart...
2025-06-20 12:25:16 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:25:16 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-20 12:25:16 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: Gastauftrag: Till Tomczaktet
2025-06-20 12:25:16 - [scheduler] scheduler - [INFO] INFO - 🔍 Prüfe 6 konfigurierte Steckdosen...
2025-06-20 12:25:16 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:25:16 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-20 12:25:19 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 1: Steckdose 192.168.0.100 nicht erreichbar
2025-06-20 12:25:22 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 2: Steckdose 192.168.0.101 nicht erreichbar
2025-06-20 12:25:25 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 3: Steckdose 192.168.0.102 nicht erreichbar
2025-06-20 12:25:28 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 4: Steckdose 192.168.0.103 nicht erreichbar
2025-06-20 12:25:31 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 5: Steckdose 192.168.0.104 nicht erreichbar
2025-06-20 12:25:34 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 6: Steckdose 192.168.0.106 nicht erreichbar
2025-06-20 12:25:34 - [scheduler] scheduler - [INFO] INFO - ============================================================
2025-06-20 12:25:34 - [scheduler] scheduler - [INFO] INFO - 🎯 STECKDOSEN-INITIALISIERUNG ABGESCHLOSSEN
2025-06-20 12:25:34 - [scheduler] scheduler - [INFO] INFO - 📊 Gesamt: 6 Steckdosen
2025-06-20 12:25:34 - [scheduler] scheduler - [INFO] INFO - ✅ Erfolgreich: 0
2025-06-20 12:25:34 - [scheduler] scheduler - [INFO] INFO - 📡 Nicht erreichbar: 6
2025-06-20 12:25:34 - [scheduler] scheduler - [INFO] INFO - ❌ Fehlgeschlagen: 0
2025-06-20 12:25:34 - [scheduler] scheduler - [WARNING] WARNING - ⚠️ KEINE Steckdose konnte initialisiert werden!
2025-06-20 12:25:34 - [scheduler] scheduler - [INFO] INFO - ============================================================
2025-06-20 12:25:35 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True
2025-06-20 12:25:36 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet
2025-06-20 12:25:36 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet
2025-06-20 12:25:36 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte Steckdosen-Initialisierung beim Systemstart...
2025-06-20 12:25:36 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet
2025-06-20 12:25:36 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:25:36 - [scheduler] scheduler - [INFO] INFO - 🔍 Prüfe 6 konfigurierte Steckdosen...
2025-06-20 12:25:36 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-20 12:25:36 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: Gastauftrag: Till Tomczaktet
2025-06-20 12:25:36 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:25:36 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-20 12:25:39 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 1: Steckdose 192.168.0.100 nicht erreichbar
2025-06-20 12:25:42 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 2: Steckdose 192.168.0.101 nicht erreichbar
2025-06-20 12:25:45 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 3: Steckdose 192.168.0.102 nicht erreichbar
2025-06-20 12:25:46 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: Till Tomczaktet
2025-06-20 12:25:46 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:25:46 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-20 12:25:46 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: Gastauftrag: Till Tomczaktet
2025-06-20 12:25:46 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Steckdose für Drucker 2: name 'tapo_controller' is not defined
2025-06-20 12:25:46 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-20 12:25:48 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 4: Steckdose 192.168.0.103 nicht erreichbar
2025-06-20 12:25:51 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 5: Steckdose 192.168.0.104 nicht erreichbar
2025-06-20 12:25:54 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 6: Steckdose 192.168.0.106 nicht erreichbar
2025-06-20 12:25:54 - [scheduler] scheduler - [INFO] INFO - ============================================================
2025-06-20 12:25:54 - [scheduler] scheduler - [INFO] INFO - 🎯 STECKDOSEN-INITIALISIERUNG ABGESCHLOSSEN
2025-06-20 12:25:54 - [scheduler] scheduler - [INFO] INFO - 📊 Gesamt: 6 Steckdosen
2025-06-20 12:25:54 - [scheduler] scheduler - [INFO] INFO - ✅ Erfolgreich: 0
2025-06-20 12:25:54 - [scheduler] scheduler - [INFO] INFO - 📡 Nicht erreichbar: 6
2025-06-20 12:25:54 - [scheduler] scheduler - [INFO] INFO - ❌ Fehlgeschlagen: 0
2025-06-20 12:25:54 - [scheduler] scheduler - [WARNING] WARNING - ⚠️ KEINE Steckdose konnte initialisiert werden!
2025-06-20 12:25:54 - [scheduler] scheduler - [INFO] INFO - ============================================================

View File

@ -1568,3 +1568,15 @@
2025-06-20 12:07:24 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert 2025-06-20 12:07:24 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert
2025-06-20 12:07:24 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) 2025-06-20 12:07:24 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
2025-06-20 12:07:25 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert 2025-06-20 12:07:25 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert
2025-06-20 12:16:59 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert
2025-06-20 12:16:59 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
2025-06-20 12:17:00 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert
2025-06-20 12:24:51 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert
2025-06-20 12:24:51 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
2025-06-20 12:24:52 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert
2025-06-20 12:25:14 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert
2025-06-20 12:25:14 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
2025-06-20 12:25:15 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert
2025-06-20 12:25:35 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert
2025-06-20 12:25:35 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
2025-06-20 12:25:36 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert

View File

@ -4151,3 +4151,39 @@
2025-06-20 12:07:25 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert 2025-06-20 12:07:25 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert
2025-06-20 12:07:25 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert 2025-06-20 12:07:25 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert
2025-06-20 12:07:25 - [startup] startup - [INFO] INFO - ================================================== 2025-06-20 12:07:25 - [startup] startup - [INFO] INFO - ==================================================
2025-06-20 12:17:00 - [startup] startup - [INFO] INFO - ==================================================
2025-06-20 12:17:00 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet...
2025-06-20 12:17:00 - [startup] startup - [INFO] INFO - 🐍 Python Version: 3.13.3 (tags/v3.13.3:6280bb5, Apr 8 2025, 14:47:33) [MSC v.1943 64 bit (AMD64)]
2025-06-20 12:17:00 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32)
2025-06-20 12:17:00 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend
2025-06-20 12:17:00 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-20T12:17:00.270220
2025-06-20 12:17:00 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert
2025-06-20 12:17:00 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert
2025-06-20 12:17:00 - [startup] startup - [INFO] INFO - ==================================================
2025-06-20 12:24:52 - [startup] startup - [INFO] INFO - ==================================================
2025-06-20 12:24:52 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet...
2025-06-20 12:24:52 - [startup] startup - [INFO] INFO - 🐍 Python Version: 3.13.3 (tags/v3.13.3:6280bb5, Apr 8 2025, 14:47:33) [MSC v.1943 64 bit (AMD64)]
2025-06-20 12:24:52 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32)
2025-06-20 12:24:52 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend
2025-06-20 12:24:52 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-20T12:24:52.753647
2025-06-20 12:24:52 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert
2025-06-20 12:24:52 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert
2025-06-20 12:24:52 - [startup] startup - [INFO] INFO - ==================================================
2025-06-20 12:25:15 - [startup] startup - [INFO] INFO - ==================================================
2025-06-20 12:25:15 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet...
2025-06-20 12:25:15 - [startup] startup - [INFO] INFO - 🐍 Python Version: 3.13.3 (tags/v3.13.3:6280bb5, Apr 8 2025, 14:47:33) [MSC v.1943 64 bit (AMD64)]
2025-06-20 12:25:15 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32)
2025-06-20 12:25:15 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend
2025-06-20 12:25:15 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-20T12:25:15.828800
2025-06-20 12:25:15 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert
2025-06-20 12:25:15 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert
2025-06-20 12:25:15 - [startup] startup - [INFO] INFO - ==================================================
2025-06-20 12:25:36 - [startup] startup - [INFO] INFO - ==================================================
2025-06-20 12:25:36 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet...
2025-06-20 12:25:36 - [startup] startup - [INFO] INFO - 🐍 Python Version: 3.13.3 (tags/v3.13.3:6280bb5, Apr 8 2025, 14:47:33) [MSC v.1943 64 bit (AMD64)]
2025-06-20 12:25:36 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32)
2025-06-20 12:25:36 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend
2025-06-20 12:25:36 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-20T12:25:36.049929
2025-06-20 12:25:36 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert
2025-06-20 12:25:36 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert
2025-06-20 12:25:36 - [startup] startup - [INFO] INFO - ==================================================

View File

@ -1369,3 +1369,11 @@
2025-06-20 12:06:21 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) 2025-06-20 12:06:21 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion)
2025-06-20 12:07:24 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert 2025-06-20 12:07:24 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert
2025-06-20 12:07:24 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) 2025-06-20 12:07:24 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion)
2025-06-20 12:16:59 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert
2025-06-20 12:16:59 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion)
2025-06-20 12:24:51 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert
2025-06-20 12:24:51 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion)
2025-06-20 12:25:14 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert
2025-06-20 12:25:14 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion)
2025-06-20 12:25:35 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert
2025-06-20 12:25:35 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion)

View File

@ -515,3 +515,11 @@
2025-06-20 12:07:23 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet 2025-06-20 12:07:23 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet
2025-06-20 12:16:59 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an... 2025-06-20 12:16:59 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an...
2025-06-20 12:16:59 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet 2025-06-20 12:16:59 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet
2025-06-20 12:24:51 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an...
2025-06-20 12:24:51 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet
2025-06-20 12:25:14 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an...
2025-06-20 12:25:14 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet
2025-06-20 12:25:35 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an...
2025-06-20 12:25:35 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet
2025-06-20 12:26:00 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an...
2025-06-20 12:26:00 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet

View File

@ -194,7 +194,7 @@ async function createJobStatusChart() {
throw new Error(`HTTP ${response.status}: ${response.statusText}`); throw new Error(`HTTP ${response.status}: ${response.statusText}`);
} }
const data = await response.json(); const data = await validateApiResponse(response, 'Job-Status-Chart-Daten');
if (data.error) { if (data.error) {
throw new Error(data.error); throw new Error(data.error);

View File

@ -117,10 +117,22 @@
// Create request promise // Create request promise
const promise = fetch(url, requestOptions) const promise = fetch(url, requestOptions)
.then(response => { .then(async response => {
if (!response.ok) { if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`); throw new Error(`HTTP error! status: ${response.status}`);
} }
// Content-Type-Validation für JSON-Responses
const contentType = response.headers.get('content-type');
if (!contentType || !contentType.includes('application/json')) {
const text = await response.text();
// Prüfe auf HTML-Fehlerseiten
if (text.includes('<!DOCTYPE html>') || text.includes('<html')) {
throw new Error(`Server-Fehlerseite erhalten statt JSON-Response`);
}
throw new Error(`Unexpected content-type: ${contentType}`);
}
return response.json(); return response.json();
}) })
.then(data => { .then(data => {

View File

@ -226,6 +226,16 @@ window.refreshJobs = async function() {
throw new Error(`API-Fehler: ${response.status} ${response.statusText}`); throw new Error(`API-Fehler: ${response.status} ${response.statusText}`);
} }
// Content-Type-Validation
const contentType = response.headers.get('content-type');
if (!contentType || !contentType.includes('application/json')) {
const text = await response.text();
if (text.includes('<!DOCTYPE html>') || text.includes('<html')) {
throw new Error(`Server-Fehlerseite erhalten statt JSON-Response`);
}
throw new Error(`Unexpected content-type: ${contentType}`);
}
const data = await response.json(); const data = await response.json();
console.log('📝 API-Response erhalten:', data); console.log('📝 API-Response erhalten:', data);

View File

@ -415,7 +415,7 @@ class OptimizationManager {
<div class="w-16 h-16 mx-auto"> <div class="w-16 h-16 mx-auto">
<svg class="animate-spin text-blue-500" fill="none" viewBox="0 0 24 24"> <svg class="animate-spin text-blue-500" fill="none" viewBox="0 0 24 24">
<circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle> <circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle>
<path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path> <path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 0 1 8-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 0 1 4 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path>
</svg> </svg>
</div> </div>
<div class="absolute -top-1 -right-1 text-2xl animate-bounce">⚡</div> <div class="absolute -top-1 -right-1 text-2xl animate-bounce">⚡</div>

View File

@ -264,7 +264,7 @@
</button> </button>
<button onclick="openModal('systemMaintenanceModal')" class="p-4 bg-purple-50 dark:bg-purple-900/20 hover:bg-purple-100 dark:hover:bg-purple-900/30 rounded-xl border border-purple-200 dark:border-purple-800 transition-all duration-300 card-hover"> <button onclick="openModal('systemMaintenanceModal')" class="p-4 bg-purple-50 dark:bg-purple-900/20 hover:bg-purple-100 dark:hover:bg-purple-900/30 rounded-xl border border-purple-200 dark:border-purple-800 transition-all duration-300 card-hover">
<svg class="w-8 h-8 mx-auto text-purple-600 dark:text-purple-400 mb-2" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <svg class="w-8 h-8 mx-auto text-purple-600 dark:text-purple-400 mb-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.50 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"/> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"/>
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"/> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"/>
</svg> </svg>
<span class="text-sm font-medium text-purple-900 dark:text-purple-300">System-Wartung</span> <span class="text-sm font-medium text-purple-900 dark:text-purple-300">System-Wartung</span>