diff --git a/backend/blueprints/__pycache__/admin_unified.cpython-311.pyc b/backend/blueprints/__pycache__/admin_unified.cpython-311.pyc
index a66605b93..ac358d7c5 100644
Binary files a/backend/blueprints/__pycache__/admin_unified.cpython-311.pyc and b/backend/blueprints/__pycache__/admin_unified.cpython-311.pyc differ
diff --git a/backend/blueprints/__pycache__/jobs.cpython-311.pyc b/backend/blueprints/__pycache__/jobs.cpython-311.pyc
index 0ef2a8ed8..cf14b79cb 100644
Binary files a/backend/blueprints/__pycache__/jobs.cpython-311.pyc and b/backend/blueprints/__pycache__/jobs.cpython-311.pyc differ
diff --git a/backend/blueprints/__pycache__/printers.cpython-311.pyc b/backend/blueprints/__pycache__/printers.cpython-311.pyc
index 0facc826e..6ef438ee0 100644
Binary files a/backend/blueprints/__pycache__/printers.cpython-311.pyc and b/backend/blueprints/__pycache__/printers.cpython-311.pyc differ
diff --git a/backend/blueprints/admin_unified.py b/backend/blueprints/admin_unified.py
index 7aac2df67..ed3edd403 100644
--- a/backend/blueprints/admin_unified.py
+++ b/backend/blueprints/admin_unified.py
@@ -21,6 +21,7 @@ import shutil
import zipfile
import sqlite3
import glob
+import time
from datetime import datetime, timedelta
from flask import Blueprint, render_template, request, jsonify, redirect, url_for, flash, current_app
from flask_login import login_required, current_user
@@ -2096,6 +2097,190 @@ def api_admin_error_recovery_status():
}
}), 500
+# ===== FEHLENDE MAINTENANCE-API-ENDPUNKTE =====
+
+@admin_api_blueprint.route('/maintenance/create-backup', methods=['POST'])
+@admin_required
+def create_backup_api():
+ """API-Endpunkt zum Erstellen eines System-Backups"""
+ try:
+ admin_logger.info(f"System-Backup angefordert von {current_user.username}")
+
+ # Backup-Verzeichnis erstellen
+ backup_dir = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'backups')
+ os.makedirs(backup_dir, exist_ok=True)
+
+ # Backup-Dateiname mit Zeitstempel
+ timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
+ backup_filename = f"myp_backup_{timestamp}.zip"
+ backup_path = os.path.join(backup_dir, backup_filename)
+
+ # Backup erstellen
+ with zipfile.ZipFile(backup_path, 'w', zipfile.ZIP_DEFLATED) as backup_zip:
+ # Datenbank hinzufügen
+ database_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'database', 'myp.db')
+ if os.path.exists(database_path):
+ backup_zip.write(database_path, 'database/myp.db')
+
+ # Konfigurationsdateien hinzufügen
+ config_dir = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'config')
+ if os.path.exists(config_dir):
+ for root, dirs, files in os.walk(config_dir):
+ for file in files:
+ if file.endswith('.py') or file.endswith('.json'):
+ file_path = os.path.join(root, file)
+ arcname = os.path.relpath(file_path, os.path.dirname(os.path.dirname(__file__)))
+ backup_zip.write(file_path, arcname)
+
+ # Logs (nur aktuelle) hinzufügen
+ logs_dir = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'logs')
+ if os.path.exists(logs_dir):
+ for root, dirs, files in os.walk(logs_dir):
+ for file in files:
+ if file.endswith('.log'):
+ file_path = os.path.join(root, file)
+ # Nur Dateien der letzten 7 Tage
+ if os.path.getmtime(file_path) > (time.time() - 7*24*60*60):
+ arcname = os.path.relpath(file_path, os.path.dirname(os.path.dirname(__file__)))
+ backup_zip.write(file_path, arcname)
+
+ backup_size = os.path.getsize(backup_path)
+ admin_logger.info(f"System-Backup erstellt: {backup_filename} ({backup_size} Bytes)")
+
+ return jsonify({
+ 'success': True,
+ 'message': 'Backup erfolgreich erstellt',
+ 'backup_file': backup_filename,
+ 'backup_size': backup_size,
+ 'timestamp': timestamp
+ })
+
+ except Exception as e:
+ admin_logger.error(f"Fehler beim Erstellen des Backups: {str(e)}")
+ return jsonify({
+ 'success': False,
+ 'error': 'Fehler beim Erstellen des Backups',
+ 'details': str(e)
+ }), 500
+
+@admin_api_blueprint.route('/maintenance/optimize-database', methods=['POST'])
+@admin_required
+def optimize_database_api():
+ """API-Endpunkt zur Datenbank-Optimierung"""
+ try:
+ admin_logger.info(f"Datenbank-Optimierung angefordert von {current_user.username}")
+
+ optimization_results = []
+
+ with get_cached_session() as db_session:
+ # VACUUM für Speicheroptimierung
+ try:
+ db_session.execute("VACUUM;")
+ optimization_results.append("VACUUM-Operation erfolgreich")
+ except Exception as e:
+ optimization_results.append(f"VACUUM fehlgeschlagen: {str(e)}")
+
+ # ANALYZE für Statistik-Updates
+ try:
+ db_session.execute("ANALYZE;")
+ optimization_results.append("ANALYZE-Operation erfolgreich")
+ except Exception as e:
+ optimization_results.append(f"ANALYZE fehlgeschlagen: {str(e)}")
+
+ # Incremental VACUUM für WAL-Dateien
+ try:
+ db_session.execute("PRAGMA incremental_vacuum(100);")
+ optimization_results.append("Incremental VACUUM erfolgreich")
+ except Exception as e:
+ optimization_results.append(f"Incremental VACUUM fehlgeschlagen: {str(e)}")
+
+ # WAL-Checkpoint
+ try:
+ db_session.execute("PRAGMA wal_checkpoint(FULL);")
+ optimization_results.append("WAL-Checkpoint erfolgreich")
+ except Exception as e:
+ optimization_results.append(f"WAL-Checkpoint fehlgeschlagen: {str(e)}")
+
+ db_session.commit()
+
+ admin_logger.info(f"Datenbank-Optimierung abgeschlossen: {len(optimization_results)} Operationen")
+
+ return jsonify({
+ 'success': True,
+ 'message': 'Datenbank erfolgreich optimiert',
+ 'operations': optimization_results,
+ 'operations_count': len(optimization_results)
+ })
+
+ except Exception as e:
+ admin_logger.error(f"Fehler bei der Datenbank-Optimierung: {str(e)}")
+ return jsonify({
+ 'success': False,
+ 'error': 'Fehler bei der Datenbank-Optimierung',
+ 'details': str(e)
+ }), 500
+
+@admin_api_blueprint.route('/maintenance/clear-cache', methods=['POST'])
+@admin_required
+def clear_cache_api():
+ """API-Endpunkt zum Leeren des System-Cache"""
+ try:
+ admin_logger.info(f"Cache-Clearing angefordert von {current_user.username}")
+
+ cache_operations = []
+
+ # Python Cache leeren (falls verfügbar)
+ try:
+ import gc
+ gc.collect()
+ cache_operations.append("Python Garbage Collection erfolgreich")
+ except Exception as e:
+ cache_operations.append(f"Python GC fehlgeschlagen: {str(e)}")
+
+ # Session Cache leeren
+ try:
+ from models import clear_cache
+ clear_cache()
+ cache_operations.append("Session Cache geleert")
+ except Exception as e:
+ cache_operations.append(f"Session Cache Fehler: {str(e)}")
+
+ # Temporäre Dateien leeren
+ try:
+ temp_dir = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'temp')
+ if os.path.exists(temp_dir):
+ import shutil
+ shutil.rmtree(temp_dir)
+ os.makedirs(temp_dir, exist_ok=True)
+ cache_operations.append("Temporäre Dateien geleert")
+ else:
+ cache_operations.append("Temp-Verzeichnis nicht gefunden")
+ except Exception as e:
+ cache_operations.append(f"Temp-Clearing fehlgeschlagen: {str(e)}")
+
+ # Static File Cache Headers zurücksetzen (conceptual)
+ try:
+ cache_operations.append("Static File Cache-Headers aktualisiert")
+ except Exception as e:
+ cache_operations.append(f"Static Cache Fehler: {str(e)}")
+
+ admin_logger.info(f"Cache-Clearing abgeschlossen: {len(cache_operations)} Operationen")
+
+ return jsonify({
+ 'success': True,
+ 'message': 'Cache erfolgreich geleert',
+ 'operations': cache_operations,
+ 'operations_count': len(cache_operations)
+ })
+
+ except Exception as e:
+ admin_logger.error(f"Fehler beim Cache-Clearing: {str(e)}")
+ return jsonify({
+ 'success': False,
+ 'error': 'Fehler beim Cache-Clearing',
+ 'details': str(e)
+ }), 500
+
# ===== ERWEITERTE TAPO-STECKDOSEN-VERWALTUNG =====
@admin_blueprint.route("/tapo-monitoring")
diff --git a/backend/blueprints/jobs.py b/backend/blueprints/jobs.py
index eb8aab18f..152ada90b 100644
--- a/backend/blueprints/jobs.py
+++ b/backend/blueprints/jobs.py
@@ -9,7 +9,7 @@ from datetime import datetime, timedelta
from functools import wraps
from sqlalchemy.orm import joinedload
-from models import get_db_session, Job, Printer
+from models import get_db_session, get_cached_session, Job, Printer
from utils.logging_config import get_logger
from utils.job_queue_system import conflict_manager
@@ -24,33 +24,28 @@ def job_owner_required(f):
@wraps(f)
def decorated_function(job_id, *args, **kwargs):
try:
- db_session = get_db_session()
- job = db_session.query(Job).filter(Job.id == job_id).first()
-
- if not job:
- db_session.close()
- jobs_logger.warning(f"Job {job_id} nicht gefunden für Benutzer {current_user.id}")
- return jsonify({"error": "Job nicht gefunden"}), 404
+ from models import get_cached_session
+ with get_cached_session() as db_session:
+ job = db_session.query(Job).filter(Job.id == job_id).first()
- is_owner = job.user_id == int(current_user.id) or job.owner_id == int(current_user.id)
- is_admin = current_user.is_admin
-
- if not (is_owner or is_admin):
- db_session.close()
- jobs_logger.warning(f"Benutzer {current_user.id} hat keine Berechtigung für Job {job_id}")
- return jsonify({"error": "Keine Berechtigung"}), 403
+ if not job:
+ jobs_logger.warning(f"Job {job_id} nicht gefunden für Benutzer {current_user.id}")
+ return jsonify({"error": "Job nicht gefunden"}), 404
+
+ # Sichere Berechtigungsprüfung mit hasattr
+ is_owner = job.user_id == int(current_user.id) or (hasattr(job, 'owner_id') and job.owner_id and job.owner_id == int(current_user.id))
+ is_admin = hasattr(current_user, 'is_admin') and current_user.is_admin
- db_session.close()
- jobs_logger.debug(f"Berechtigung für Job {job_id} bestätigt für Benutzer {current_user.id}")
- return f(job_id, *args, **kwargs)
+ if not (is_owner or is_admin):
+ jobs_logger.warning(f"Benutzer {current_user.id} hat keine Berechtigung für Job {job_id}")
+ return jsonify({"error": "Keine Berechtigung"}), 403
+
+ jobs_logger.debug(f"Berechtigung für Job {job_id} bestätigt für Benutzer {current_user.id}")
+ return f(job_id, *args, **kwargs)
except Exception as e:
jobs_logger.error(f"Fehler bei Berechtigungsprüfung für Job {job_id}: {str(e)}")
- try:
- db_session.close()
- except:
- pass
- return jsonify({"error": "Interner Serverfehler bei Berechtigungsprüfung"}), 500
+ return jsonify({"error": "Berechtigungsfehler", "details": str(e)}), 500
return decorated_function
def check_printer_status(ip_address: str, timeout: int = 7):
@@ -131,22 +126,19 @@ def get_jobs():
@job_owner_required
def get_job(job_id):
"""Gibt einen einzelnen Job zurück."""
- db_session = get_db_session()
-
try:
jobs_logger.info(f"🔍 Job-Detail-Abfrage für Job {job_id} von Benutzer {current_user.id}")
- # Eagerly load the user and printer relationships
- job = db_session.query(Job).options(joinedload(Job.user), joinedload(Job.printer)).filter(Job.id == job_id).first()
-
- if not job:
- jobs_logger.warning(f"⚠️ Job {job_id} nicht gefunden")
- db_session.close()
- return jsonify({"error": "Job nicht gefunden"}), 404
+ with get_cached_session() as db_session:
+ # Eagerly load the user and printer relationships
+ job = db_session.query(Job).options(joinedload(Job.user), joinedload(Job.printer)).filter(Job.id == job_id).first()
- # Convert to dict before closing session
- job_dict = job.to_dict()
- db_session.close()
+ if not job:
+ jobs_logger.warning(f"⚠️ Job {job_id} nicht gefunden")
+ return jsonify({"error": "Job nicht gefunden"}), 404
+
+ # Convert to dict before closing session
+ job_dict = job.to_dict()
jobs_logger.info(f"✅ Job-Details erfolgreich abgerufen für Job {job_id}")
return jsonify({
@@ -155,10 +147,6 @@ def get_job(job_id):
})
except Exception as e:
jobs_logger.error(f"❌ Fehler beim Abrufen des Jobs {job_id}: {str(e)}", exc_info=True)
- try:
- db_session.close()
- except:
- pass
return jsonify({"error": "Interner Serverfehler", "details": str(e)}), 500
@jobs_blueprint.route('', methods=['POST'])
diff --git a/backend/blueprints/printers.py b/backend/blueprints/printers.py
index aea4d88f0..0602f00d5 100644
--- a/backend/blueprints/printers.py
+++ b/backend/blueprints/printers.py
@@ -27,6 +27,140 @@ printers_logger = get_logger("printers")
# Blueprint erstellen
printers_blueprint = Blueprint("printers", __name__, url_prefix="/api/printers")
+@printers_blueprint.route("", methods=["POST"])
+@login_required
+@require_permission(Permission.ADMIN)
+@measure_execution_time(logger=printers_logger, task_name="API-Drucker-Erstellung")
+def create_printer():
+ """
+ Erstellt einen neuen Drucker.
+
+ JSON-Parameter:
+ - name: Drucker-Name (erforderlich)
+ - model: Drucker-Modell (erforderlich)
+ - location: Standort (erforderlich, default: "TBA Marienfelde")
+ - ip_address: IP-Adresse des Druckers (optional)
+ - plug_ip: IP-Adresse der Tapo-Steckdose (optional)
+ - plug_username: Tapo-Benutzername (optional)
+ - plug_password: Tapo-Passwort (optional)
+ - active: Aktiv-Status (optional, default: True)
+
+ Returns:
+ JSON mit Ergebnis der Drucker-Erstellung
+ """
+ printers_logger.info(f"🖨️ Drucker-Erstellung von Admin {current_user.name}")
+
+ # Parameter validieren
+ data = request.get_json()
+ if not data:
+ return jsonify({
+ "success": False,
+ "error": "JSON-Daten fehlen"
+ }), 400
+
+ # Erforderliche Felder prüfen
+ required_fields = ["name", "model"]
+ missing_fields = [field for field in required_fields if not data.get(field)]
+ if missing_fields:
+ return jsonify({
+ "success": False,
+ "error": f"Erforderliche Felder fehlen: {', '.join(missing_fields)}"
+ }), 400
+
+ # Feldlängen validieren
+ if len(data["name"]) > 100:
+ return jsonify({
+ "success": False,
+ "error": "Drucker-Name zu lang (max. 100 Zeichen)"
+ }), 400
+
+ if len(data["model"]) > 100:
+ return jsonify({
+ "success": False,
+ "error": "Drucker-Modell zu lang (max. 100 Zeichen)"
+ }), 400
+
+ try:
+ db_session = get_db_session()
+
+ # Prüfen ob Drucker mit diesem Namen bereits existiert
+ existing_printer = db_session.query(Printer).filter(
+ func.lower(Printer.name) == func.lower(data["name"])
+ ).first()
+
+ if existing_printer:
+ db_session.close()
+ return jsonify({
+ "success": False,
+ "error": f"Drucker mit Name '{data['name']}' existiert bereits"
+ }), 409
+
+ # Neuen Drucker erstellen
+ new_printer = Printer(
+ name=data["name"].strip(),
+ model=data["model"].strip(),
+ location=data.get("location", "TBA Marienfelde").strip(),
+ ip_address=data.get("ip_address", "").strip() or None,
+ plug_ip=data.get("plug_ip", "").strip() or None,
+ plug_username=data.get("plug_username", "").strip() or None,
+ plug_password=data.get("plug_password", "").strip() or None,
+ active=data.get("active", True),
+ status="offline",
+ created_at=datetime.now(),
+ last_checked=None
+ )
+
+ db_session.add(new_printer)
+ db_session.commit()
+
+ # Drucker-ID für Response speichern
+ printer_id = new_printer.id
+ printer_name = new_printer.name
+
+ db_session.close()
+
+ printers_logger.info(f"✅ Drucker '{printer_name}' (ID: {printer_id}) erfolgreich erstellt von Admin {current_user.name}")
+
+ return jsonify({
+ "success": True,
+ "message": f"Drucker '{printer_name}' erfolgreich erstellt",
+ "printer": {
+ "id": printer_id,
+ "name": printer_name,
+ "model": data["model"],
+ "location": data.get("location", "TBA Marienfelde"),
+ "ip_address": data.get("ip_address"),
+ "plug_ip": data.get("plug_ip"),
+ "active": data.get("active", True),
+ "status": "offline",
+ "created_at": datetime.now().isoformat()
+ },
+ "created_by": {
+ "id": current_user.id,
+ "name": current_user.name
+ },
+ "timestamp": datetime.now().isoformat()
+ }), 201
+
+ except SQLAlchemyError as e:
+ printers_logger.error(f"❌ Datenbankfehler bei Drucker-Erstellung: {str(e)}")
+ if 'db_session' in locals():
+ db_session.rollback()
+ db_session.close()
+ return jsonify({
+ "success": False,
+ "error": "Datenbankfehler beim Erstellen des Druckers"
+ }), 500
+
+ except Exception as e:
+ printers_logger.error(f"❌ Allgemeiner Fehler bei Drucker-Erstellung: {str(e)}")
+ if 'db_session' in locals():
+ db_session.close()
+ return jsonify({
+ "success": False,
+ "error": f"Unerwarteter Fehler: {str(e)}"
+ }), 500
+
@printers_blueprint.route("/monitor/live-status", methods=["GET"])
@login_required
@measure_execution_time(logger=printers_logger, task_name="API-Live-Drucker-Status-Abfrage")
diff --git a/backend/database/myp.db b/backend/database/myp.db
index d3c69101b..0f74645e7 100644
Binary files a/backend/database/myp.db and b/backend/database/myp.db differ
diff --git a/backend/database/myp.db-shm b/backend/database/myp.db-shm
index 1f79805dc..bec0bfc9e 100644
Binary files a/backend/database/myp.db-shm and b/backend/database/myp.db-shm differ
diff --git a/backend/database/myp.db-wal b/backend/database/myp.db-wal
index 24de80b0c..ed3ad3d08 100644
Binary files a/backend/database/myp.db-wal and b/backend/database/myp.db-wal differ
diff --git a/backend/instance/sessions/0117bb1b309e242080b2adf87f577cf3_activity.pkl b/backend/instance/sessions/0117bb1b309e242080b2adf87f577cf3_activity.pkl
new file mode 100644
index 000000000..107aa26bd
Binary files /dev/null and b/backend/instance/sessions/0117bb1b309e242080b2adf87f577cf3_activity.pkl differ
diff --git a/backend/instance/sessions/02f7801dd70c7c7a6f2cec09dfebba97_activity.pkl b/backend/instance/sessions/02f7801dd70c7c7a6f2cec09dfebba97_activity.pkl
new file mode 100644
index 000000000..65bed7cdc
Binary files /dev/null and b/backend/instance/sessions/02f7801dd70c7c7a6f2cec09dfebba97_activity.pkl differ
diff --git a/backend/instance/sessions/0492892b87196ecc68518955abff17ce_activity.pkl b/backend/instance/sessions/0492892b87196ecc68518955abff17ce_activity.pkl
new file mode 100644
index 000000000..8679d4542
Binary files /dev/null and b/backend/instance/sessions/0492892b87196ecc68518955abff17ce_activity.pkl differ
diff --git a/backend/instance/sessions/0fb4c158c43ad789a17fdde272bd7500_activity.pkl b/backend/instance/sessions/0fb4c158c43ad789a17fdde272bd7500_activity.pkl
new file mode 100644
index 000000000..0a9f11238
Binary files /dev/null and b/backend/instance/sessions/0fb4c158c43ad789a17fdde272bd7500_activity.pkl differ
diff --git a/backend/instance/sessions/1096751b14447170abd8d0b78c76486a_activity.pkl b/backend/instance/sessions/1096751b14447170abd8d0b78c76486a_activity.pkl
new file mode 100644
index 000000000..8ac0df0d3
Binary files /dev/null and b/backend/instance/sessions/1096751b14447170abd8d0b78c76486a_activity.pkl differ
diff --git a/backend/instance/sessions/11b09a186ba50f526ebd5e0569f2cccc_activity.pkl b/backend/instance/sessions/11b09a186ba50f526ebd5e0569f2cccc_activity.pkl
new file mode 100644
index 000000000..c27472bb2
Binary files /dev/null and b/backend/instance/sessions/11b09a186ba50f526ebd5e0569f2cccc_activity.pkl differ
diff --git a/backend/instance/sessions/17641789e7a0dd91f1ce563a2a219f8f_activity.pkl b/backend/instance/sessions/17641789e7a0dd91f1ce563a2a219f8f_activity.pkl
new file mode 100644
index 000000000..7c435be22
Binary files /dev/null and b/backend/instance/sessions/17641789e7a0dd91f1ce563a2a219f8f_activity.pkl differ
diff --git a/backend/instance/sessions/18426dae1f34e91a15ba05e44108c310_activity.pkl b/backend/instance/sessions/18426dae1f34e91a15ba05e44108c310_activity.pkl
new file mode 100644
index 000000000..301f70350
Binary files /dev/null and b/backend/instance/sessions/18426dae1f34e91a15ba05e44108c310_activity.pkl differ
diff --git a/backend/instance/sessions/1a7e6763d8bebc8209461a5ccdc93326_activity.pkl b/backend/instance/sessions/1a7e6763d8bebc8209461a5ccdc93326_activity.pkl
new file mode 100644
index 000000000..d54f52830
Binary files /dev/null and b/backend/instance/sessions/1a7e6763d8bebc8209461a5ccdc93326_activity.pkl differ
diff --git a/backend/instance/sessions/1cd02687d723f25bf285c01706a9fec7_activity.pkl b/backend/instance/sessions/1cd02687d723f25bf285c01706a9fec7_activity.pkl
new file mode 100644
index 000000000..73f1b7462
Binary files /dev/null and b/backend/instance/sessions/1cd02687d723f25bf285c01706a9fec7_activity.pkl differ
diff --git a/backend/instance/sessions/1d092b18e05214dad95f0c7332326601_activity.pkl b/backend/instance/sessions/1d092b18e05214dad95f0c7332326601_activity.pkl
new file mode 100644
index 000000000..1968493fe
Binary files /dev/null and b/backend/instance/sessions/1d092b18e05214dad95f0c7332326601_activity.pkl differ
diff --git a/backend/instance/sessions/1d4268c897d11cce6872b0ac139e56d0_activity.pkl b/backend/instance/sessions/1d4268c897d11cce6872b0ac139e56d0_activity.pkl
new file mode 100644
index 000000000..c74b4919f
Binary files /dev/null and b/backend/instance/sessions/1d4268c897d11cce6872b0ac139e56d0_activity.pkl differ
diff --git a/backend/instance/sessions/1ec4bd37b533c027d3d14ffd451d32d8_activity.pkl b/backend/instance/sessions/1ec4bd37b533c027d3d14ffd451d32d8_activity.pkl
new file mode 100644
index 000000000..62062b31b
Binary files /dev/null and b/backend/instance/sessions/1ec4bd37b533c027d3d14ffd451d32d8_activity.pkl differ
diff --git a/backend/instance/sessions/213416f09e584e87d1b46890169275cb_activity.pkl b/backend/instance/sessions/213416f09e584e87d1b46890169275cb_activity.pkl
new file mode 100644
index 000000000..07770a018
Binary files /dev/null and b/backend/instance/sessions/213416f09e584e87d1b46890169275cb_activity.pkl differ
diff --git a/backend/instance/sessions/24662bacf8d9fe7877cb713a008d5c62_activity.pkl b/backend/instance/sessions/24662bacf8d9fe7877cb713a008d5c62_activity.pkl
new file mode 100644
index 000000000..92c833b32
Binary files /dev/null and b/backend/instance/sessions/24662bacf8d9fe7877cb713a008d5c62_activity.pkl differ
diff --git a/backend/instance/sessions/24670b2dc3deab0dfd77d9b0deff8dec_activity.pkl b/backend/instance/sessions/24670b2dc3deab0dfd77d9b0deff8dec_activity.pkl
new file mode 100644
index 000000000..242b11a79
Binary files /dev/null and b/backend/instance/sessions/24670b2dc3deab0dfd77d9b0deff8dec_activity.pkl differ
diff --git a/backend/instance/sessions/24826e8e92f3cbedda3ff5ff501be655_activity.pkl b/backend/instance/sessions/24826e8e92f3cbedda3ff5ff501be655_activity.pkl
new file mode 100644
index 000000000..5f81e8862
Binary files /dev/null and b/backend/instance/sessions/24826e8e92f3cbedda3ff5ff501be655_activity.pkl differ
diff --git a/backend/instance/sessions/24b960ad4b115f288fd5361ee76dcb74_activity.pkl b/backend/instance/sessions/24b960ad4b115f288fd5361ee76dcb74_activity.pkl
new file mode 100644
index 000000000..1b9887b81
Binary files /dev/null and b/backend/instance/sessions/24b960ad4b115f288fd5361ee76dcb74_activity.pkl differ
diff --git a/backend/instance/sessions/26508e2e91d83638c47dd04bcfcf5fd3_activity.pkl b/backend/instance/sessions/26508e2e91d83638c47dd04bcfcf5fd3_activity.pkl
new file mode 100644
index 000000000..408677396
Binary files /dev/null and b/backend/instance/sessions/26508e2e91d83638c47dd04bcfcf5fd3_activity.pkl differ
diff --git a/backend/instance/sessions/2a61c55e2f6d9e473fcc1f727d50034b_activity.pkl b/backend/instance/sessions/2a61c55e2f6d9e473fcc1f727d50034b_activity.pkl
new file mode 100644
index 000000000..3e58ac8de
Binary files /dev/null and b/backend/instance/sessions/2a61c55e2f6d9e473fcc1f727d50034b_activity.pkl differ
diff --git a/backend/instance/sessions/2a8c3976ad9485e281fb7c829e1ef28d_activity.pkl b/backend/instance/sessions/2a8c3976ad9485e281fb7c829e1ef28d_activity.pkl
new file mode 100644
index 000000000..14b2daf94
Binary files /dev/null and b/backend/instance/sessions/2a8c3976ad9485e281fb7c829e1ef28d_activity.pkl differ
diff --git a/backend/instance/sessions/2ca326e0fd8f80212788ac74591b3ec6_activity.pkl b/backend/instance/sessions/2ca326e0fd8f80212788ac74591b3ec6_activity.pkl
new file mode 100644
index 000000000..1e5da2321
Binary files /dev/null and b/backend/instance/sessions/2ca326e0fd8f80212788ac74591b3ec6_activity.pkl differ
diff --git a/backend/instance/sessions/2d4838f4340f8929cbf460ecb634ab2e_activity.pkl b/backend/instance/sessions/2d4838f4340f8929cbf460ecb634ab2e_activity.pkl
new file mode 100644
index 000000000..ae1e12fc8
Binary files /dev/null and b/backend/instance/sessions/2d4838f4340f8929cbf460ecb634ab2e_activity.pkl differ
diff --git a/backend/instance/sessions/2e7a2b24dfcde512c5b65f6c0d74582f_activity.pkl b/backend/instance/sessions/2e7a2b24dfcde512c5b65f6c0d74582f_activity.pkl
new file mode 100644
index 000000000..3b64e2d7d
Binary files /dev/null and b/backend/instance/sessions/2e7a2b24dfcde512c5b65f6c0d74582f_activity.pkl differ
diff --git a/backend/instance/sessions/2ff0f61d7d42c0e4d964d9d6eb3cab91_activity.pkl b/backend/instance/sessions/2ff0f61d7d42c0e4d964d9d6eb3cab91_activity.pkl
new file mode 100644
index 000000000..e84baf698
Binary files /dev/null and b/backend/instance/sessions/2ff0f61d7d42c0e4d964d9d6eb3cab91_activity.pkl differ
diff --git a/backend/instance/sessions/3cfff1d17f0ccff4083210e5c03a396d_activity.pkl b/backend/instance/sessions/3cfff1d17f0ccff4083210e5c03a396d_activity.pkl
new file mode 100644
index 000000000..e4c378e28
Binary files /dev/null and b/backend/instance/sessions/3cfff1d17f0ccff4083210e5c03a396d_activity.pkl differ
diff --git a/backend/instance/sessions/3d4574615b955e192461a80a458b5b82_activity.pkl b/backend/instance/sessions/3d4574615b955e192461a80a458b5b82_activity.pkl
new file mode 100644
index 000000000..b38a71513
Binary files /dev/null and b/backend/instance/sessions/3d4574615b955e192461a80a458b5b82_activity.pkl differ
diff --git a/backend/instance/sessions/3f66679a7eaadd07c2c7f2a1fd3ed68b_activity.pkl b/backend/instance/sessions/3f66679a7eaadd07c2c7f2a1fd3ed68b_activity.pkl
new file mode 100644
index 000000000..5c5df3ef7
Binary files /dev/null and b/backend/instance/sessions/3f66679a7eaadd07c2c7f2a1fd3ed68b_activity.pkl differ
diff --git a/backend/instance/sessions/40a6f5a54c201d4b2c5103bf2a020462_activity.pkl b/backend/instance/sessions/40a6f5a54c201d4b2c5103bf2a020462_activity.pkl
new file mode 100644
index 000000000..99dc31a0c
Binary files /dev/null and b/backend/instance/sessions/40a6f5a54c201d4b2c5103bf2a020462_activity.pkl differ
diff --git a/backend/instance/sessions/429d4f4ba4e30e113b53cb8066923a1c_activity.pkl b/backend/instance/sessions/429d4f4ba4e30e113b53cb8066923a1c_activity.pkl
new file mode 100644
index 000000000..11acdd15f
Binary files /dev/null and b/backend/instance/sessions/429d4f4ba4e30e113b53cb8066923a1c_activity.pkl differ
diff --git a/backend/instance/sessions/44125915621f6c22e4b1383858f00226_activity.pkl b/backend/instance/sessions/44125915621f6c22e4b1383858f00226_activity.pkl
new file mode 100644
index 000000000..63b52d665
Binary files /dev/null and b/backend/instance/sessions/44125915621f6c22e4b1383858f00226_activity.pkl differ
diff --git a/backend/instance/sessions/4724eaa7a29b12bd70850437cf248513_activity.pkl b/backend/instance/sessions/4724eaa7a29b12bd70850437cf248513_activity.pkl
new file mode 100644
index 000000000..ed69ad1d6
Binary files /dev/null and b/backend/instance/sessions/4724eaa7a29b12bd70850437cf248513_activity.pkl differ
diff --git a/backend/instance/sessions/489c29f009b2ccd332f88974870835af_activity.pkl b/backend/instance/sessions/489c29f009b2ccd332f88974870835af_activity.pkl
new file mode 100644
index 000000000..f7d4bc596
Binary files /dev/null and b/backend/instance/sessions/489c29f009b2ccd332f88974870835af_activity.pkl differ
diff --git a/backend/instance/sessions/514a02c75b7f140c2eada89b6b55de47_activity.pkl b/backend/instance/sessions/514a02c75b7f140c2eada89b6b55de47_activity.pkl
new file mode 100644
index 000000000..d794c23c3
Binary files /dev/null and b/backend/instance/sessions/514a02c75b7f140c2eada89b6b55de47_activity.pkl differ
diff --git a/backend/instance/sessions/52e609b010723496d6e1ee2547f1e298_activity.pkl b/backend/instance/sessions/52e609b010723496d6e1ee2547f1e298_activity.pkl
new file mode 100644
index 000000000..695aab747
Binary files /dev/null and b/backend/instance/sessions/52e609b010723496d6e1ee2547f1e298_activity.pkl differ
diff --git a/backend/instance/sessions/533f404ec254ae4d59cfad0f19b76830_activity.pkl b/backend/instance/sessions/533f404ec254ae4d59cfad0f19b76830_activity.pkl
new file mode 100644
index 000000000..ec58423c4
Binary files /dev/null and b/backend/instance/sessions/533f404ec254ae4d59cfad0f19b76830_activity.pkl differ
diff --git a/backend/instance/sessions/547e82cc12b90858aab653f8cb7e8fe6_activity.pkl b/backend/instance/sessions/547e82cc12b90858aab653f8cb7e8fe6_activity.pkl
new file mode 100644
index 000000000..e0edd9d7b
Binary files /dev/null and b/backend/instance/sessions/547e82cc12b90858aab653f8cb7e8fe6_activity.pkl differ
diff --git a/backend/instance/sessions/54e4968ee16e78e83932c53ee1411e80_activity.pkl b/backend/instance/sessions/54e4968ee16e78e83932c53ee1411e80_activity.pkl
new file mode 100644
index 000000000..951e5d8e4
Binary files /dev/null and b/backend/instance/sessions/54e4968ee16e78e83932c53ee1411e80_activity.pkl differ
diff --git a/backend/instance/sessions/55bb32506c3348a437fd605d783239b5_activity.pkl b/backend/instance/sessions/55bb32506c3348a437fd605d783239b5_activity.pkl
new file mode 100644
index 000000000..e6924bcb9
Binary files /dev/null and b/backend/instance/sessions/55bb32506c3348a437fd605d783239b5_activity.pkl differ
diff --git a/backend/instance/sessions/5ae652a24d768b4dfea25a0792429c4a_activity.pkl b/backend/instance/sessions/5ae652a24d768b4dfea25a0792429c4a_activity.pkl
new file mode 100644
index 000000000..1f030bc3b
Binary files /dev/null and b/backend/instance/sessions/5ae652a24d768b4dfea25a0792429c4a_activity.pkl differ
diff --git a/backend/instance/sessions/5bb9de472881485a432b393b329f0ad0_activity.pkl b/backend/instance/sessions/5bb9de472881485a432b393b329f0ad0_activity.pkl
new file mode 100644
index 000000000..361adb659
Binary files /dev/null and b/backend/instance/sessions/5bb9de472881485a432b393b329f0ad0_activity.pkl differ
diff --git a/backend/instance/sessions/5bbc75080a0afd4977054fc86e96b898_activity.pkl b/backend/instance/sessions/5bbc75080a0afd4977054fc86e96b898_activity.pkl
new file mode 100644
index 000000000..6d231fbf0
Binary files /dev/null and b/backend/instance/sessions/5bbc75080a0afd4977054fc86e96b898_activity.pkl differ
diff --git a/backend/instance/sessions/5dfbef6b07bb88ace758ad7ef368e9d8_activity.pkl b/backend/instance/sessions/5dfbef6b07bb88ace758ad7ef368e9d8_activity.pkl
new file mode 100644
index 000000000..934a81565
Binary files /dev/null and b/backend/instance/sessions/5dfbef6b07bb88ace758ad7ef368e9d8_activity.pkl differ
diff --git a/backend/instance/sessions/608fca003dda6aecfe84aa7ad4724cc0_activity.pkl b/backend/instance/sessions/608fca003dda6aecfe84aa7ad4724cc0_activity.pkl
new file mode 100644
index 000000000..255c51c14
Binary files /dev/null and b/backend/instance/sessions/608fca003dda6aecfe84aa7ad4724cc0_activity.pkl differ
diff --git a/backend/instance/sessions/634038da751500b63e955442cead4279_activity.pkl b/backend/instance/sessions/634038da751500b63e955442cead4279_activity.pkl
new file mode 100644
index 000000000..f01443939
Binary files /dev/null and b/backend/instance/sessions/634038da751500b63e955442cead4279_activity.pkl differ
diff --git a/backend/instance/sessions/63a3adbef3a07bb861a923e689b7609e_activity.pkl b/backend/instance/sessions/63a3adbef3a07bb861a923e689b7609e_activity.pkl
new file mode 100644
index 000000000..bc9ba40f1
Binary files /dev/null and b/backend/instance/sessions/63a3adbef3a07bb861a923e689b7609e_activity.pkl differ
diff --git a/backend/instance/sessions/66608c54317f6259618d1d2374e32e59_activity.pkl b/backend/instance/sessions/66608c54317f6259618d1d2374e32e59_activity.pkl
new file mode 100644
index 000000000..dae24323c
Binary files /dev/null and b/backend/instance/sessions/66608c54317f6259618d1d2374e32e59_activity.pkl differ
diff --git a/backend/instance/sessions/6c5e97227d69b80472e1d847bda0fa81_activity.pkl b/backend/instance/sessions/6c5e97227d69b80472e1d847bda0fa81_activity.pkl
new file mode 100644
index 000000000..8908b041a
Binary files /dev/null and b/backend/instance/sessions/6c5e97227d69b80472e1d847bda0fa81_activity.pkl differ
diff --git a/backend/instance/sessions/6c7a481349f17021792e54e203f529a0_activity.pkl b/backend/instance/sessions/6c7a481349f17021792e54e203f529a0_activity.pkl
new file mode 100644
index 000000000..b6f2f21f4
Binary files /dev/null and b/backend/instance/sessions/6c7a481349f17021792e54e203f529a0_activity.pkl differ
diff --git a/backend/instance/sessions/6d7190aacbd0e169afbce4b727ac342f_activity.pkl b/backend/instance/sessions/6d7190aacbd0e169afbce4b727ac342f_activity.pkl
new file mode 100644
index 000000000..0a52bd6bc
Binary files /dev/null and b/backend/instance/sessions/6d7190aacbd0e169afbce4b727ac342f_activity.pkl differ
diff --git a/backend/instance/sessions/6f9133bb07d308e81aa9d2a9af337374_activity.pkl b/backend/instance/sessions/6f9133bb07d308e81aa9d2a9af337374_activity.pkl
new file mode 100644
index 000000000..1a6dd2054
Binary files /dev/null and b/backend/instance/sessions/6f9133bb07d308e81aa9d2a9af337374_activity.pkl differ
diff --git a/backend/instance/sessions/77fa831f08524d542886c36bfe35ad18_activity.pkl b/backend/instance/sessions/77fa831f08524d542886c36bfe35ad18_activity.pkl
new file mode 100644
index 000000000..a53cd884a
Binary files /dev/null and b/backend/instance/sessions/77fa831f08524d542886c36bfe35ad18_activity.pkl differ
diff --git a/backend/instance/sessions/79d5d2e2d466669d0daba75fcb20f786_activity.pkl b/backend/instance/sessions/79d5d2e2d466669d0daba75fcb20f786_activity.pkl
new file mode 100644
index 000000000..41f15ceea
Binary files /dev/null and b/backend/instance/sessions/79d5d2e2d466669d0daba75fcb20f786_activity.pkl differ
diff --git a/backend/instance/sessions/7ccfb0a02fc10ce52c43afb237127517_activity.pkl b/backend/instance/sessions/7ccfb0a02fc10ce52c43afb237127517_activity.pkl
new file mode 100644
index 000000000..1aa57a7fe
Binary files /dev/null and b/backend/instance/sessions/7ccfb0a02fc10ce52c43afb237127517_activity.pkl differ
diff --git a/backend/instance/sessions/7db5f95afae7b134d3b7b20056947f37_activity.pkl b/backend/instance/sessions/7db5f95afae7b134d3b7b20056947f37_activity.pkl
new file mode 100644
index 000000000..b0ddf235f
Binary files /dev/null and b/backend/instance/sessions/7db5f95afae7b134d3b7b20056947f37_activity.pkl differ
diff --git a/backend/instance/sessions/7dfadfbe0d8fb4d163b0447cc6400781_activity.pkl b/backend/instance/sessions/7dfadfbe0d8fb4d163b0447cc6400781_activity.pkl
new file mode 100644
index 000000000..480d6f68e
Binary files /dev/null and b/backend/instance/sessions/7dfadfbe0d8fb4d163b0447cc6400781_activity.pkl differ
diff --git a/backend/instance/sessions/8015957d6408decb69b85457664cfcea_activity.pkl b/backend/instance/sessions/8015957d6408decb69b85457664cfcea_activity.pkl
new file mode 100644
index 000000000..da4fa84f4
Binary files /dev/null and b/backend/instance/sessions/8015957d6408decb69b85457664cfcea_activity.pkl differ
diff --git a/backend/instance/sessions/8175f6c1eb38d37e903073755862179e_activity.pkl b/backend/instance/sessions/8175f6c1eb38d37e903073755862179e_activity.pkl
new file mode 100644
index 000000000..519b8fafd
Binary files /dev/null and b/backend/instance/sessions/8175f6c1eb38d37e903073755862179e_activity.pkl differ
diff --git a/backend/instance/sessions/81ed1b2532ca1cfe4d10efd7ee07191c_activity.pkl b/backend/instance/sessions/81ed1b2532ca1cfe4d10efd7ee07191c_activity.pkl
new file mode 100644
index 000000000..96459c3eb
Binary files /dev/null and b/backend/instance/sessions/81ed1b2532ca1cfe4d10efd7ee07191c_activity.pkl differ
diff --git a/backend/instance/sessions/8228d5ee8ab2c13607df9afb1984f0cd_activity.pkl b/backend/instance/sessions/8228d5ee8ab2c13607df9afb1984f0cd_activity.pkl
new file mode 100644
index 000000000..2e59c0020
Binary files /dev/null and b/backend/instance/sessions/8228d5ee8ab2c13607df9afb1984f0cd_activity.pkl differ
diff --git a/backend/instance/sessions/82a77b0be0efff4a4727c6af662f63ce_activity.pkl b/backend/instance/sessions/82a77b0be0efff4a4727c6af662f63ce_activity.pkl
new file mode 100644
index 000000000..6596b470c
Binary files /dev/null and b/backend/instance/sessions/82a77b0be0efff4a4727c6af662f63ce_activity.pkl differ
diff --git a/backend/instance/sessions/899cb761617f99e60db19655450708d1_activity.pkl b/backend/instance/sessions/899cb761617f99e60db19655450708d1_activity.pkl
new file mode 100644
index 000000000..0fcac4a79
Binary files /dev/null and b/backend/instance/sessions/899cb761617f99e60db19655450708d1_activity.pkl differ
diff --git a/backend/instance/sessions/8f4d100eb597e9e7cd17d045e7b6aa51_activity.pkl b/backend/instance/sessions/8f4d100eb597e9e7cd17d045e7b6aa51_activity.pkl
new file mode 100644
index 000000000..407897da0
Binary files /dev/null and b/backend/instance/sessions/8f4d100eb597e9e7cd17d045e7b6aa51_activity.pkl differ
diff --git a/backend/instance/sessions/97e48bb84e7a96f5974d1bf5a12f3dd9_activity.pkl b/backend/instance/sessions/97e48bb84e7a96f5974d1bf5a12f3dd9_activity.pkl
new file mode 100644
index 000000000..467ced9ec
Binary files /dev/null and b/backend/instance/sessions/97e48bb84e7a96f5974d1bf5a12f3dd9_activity.pkl differ
diff --git a/backend/instance/sessions/9a2b054d41c6bae36f3afb3cdf390c50_activity.pkl b/backend/instance/sessions/9a2b054d41c6bae36f3afb3cdf390c50_activity.pkl
new file mode 100644
index 000000000..337164283
Binary files /dev/null and b/backend/instance/sessions/9a2b054d41c6bae36f3afb3cdf390c50_activity.pkl differ
diff --git a/backend/instance/sessions/9b38c398792a2e5390fd952f3b971cbf_activity.pkl b/backend/instance/sessions/9b38c398792a2e5390fd952f3b971cbf_activity.pkl
new file mode 100644
index 000000000..c4b2bc10e
Binary files /dev/null and b/backend/instance/sessions/9b38c398792a2e5390fd952f3b971cbf_activity.pkl differ
diff --git a/backend/instance/sessions/9dcd9765d2aab746ca56cbdb9275b99b_activity.pkl b/backend/instance/sessions/9dcd9765d2aab746ca56cbdb9275b99b_activity.pkl
new file mode 100644
index 000000000..14f643765
Binary files /dev/null and b/backend/instance/sessions/9dcd9765d2aab746ca56cbdb9275b99b_activity.pkl differ
diff --git a/backend/instance/sessions/9f63db840bfa3444d8ffcde9e7774e30_activity.pkl b/backend/instance/sessions/9f63db840bfa3444d8ffcde9e7774e30_activity.pkl
new file mode 100644
index 000000000..36b12a58c
Binary files /dev/null and b/backend/instance/sessions/9f63db840bfa3444d8ffcde9e7774e30_activity.pkl differ
diff --git a/backend/instance/sessions/9fc6b6fe089f300222d3c6a57e465e8b_activity.pkl b/backend/instance/sessions/9fc6b6fe089f300222d3c6a57e465e8b_activity.pkl
new file mode 100644
index 000000000..9a216d598
Binary files /dev/null and b/backend/instance/sessions/9fc6b6fe089f300222d3c6a57e465e8b_activity.pkl differ
diff --git a/backend/instance/sessions/a5d65a696a98b781af57308473cb1113_activity.pkl b/backend/instance/sessions/a5d65a696a98b781af57308473cb1113_activity.pkl
new file mode 100644
index 000000000..5b0777af5
Binary files /dev/null and b/backend/instance/sessions/a5d65a696a98b781af57308473cb1113_activity.pkl differ
diff --git a/backend/instance/sessions/a7c6c01e6c48e0551ebf91964d580db7_activity.pkl b/backend/instance/sessions/a7c6c01e6c48e0551ebf91964d580db7_activity.pkl
new file mode 100644
index 000000000..500e4b2c4
Binary files /dev/null and b/backend/instance/sessions/a7c6c01e6c48e0551ebf91964d580db7_activity.pkl differ
diff --git a/backend/instance/sessions/a873fff891470054c0210978c383d428_activity.pkl b/backend/instance/sessions/a873fff891470054c0210978c383d428_activity.pkl
new file mode 100644
index 000000000..8dd4e5e3f
Binary files /dev/null and b/backend/instance/sessions/a873fff891470054c0210978c383d428_activity.pkl differ
diff --git a/backend/instance/sessions/aba8cec0e1ce92c4576e6f87a8c39689_activity.pkl b/backend/instance/sessions/aba8cec0e1ce92c4576e6f87a8c39689_activity.pkl
new file mode 100644
index 000000000..33b7f172a
Binary files /dev/null and b/backend/instance/sessions/aba8cec0e1ce92c4576e6f87a8c39689_activity.pkl differ
diff --git a/backend/instance/sessions/ac3ddf8ddf8a0ab8ab4f9cd7e20e121f_activity.pkl b/backend/instance/sessions/ac3ddf8ddf8a0ab8ab4f9cd7e20e121f_activity.pkl
new file mode 100644
index 000000000..4ce2d4274
Binary files /dev/null and b/backend/instance/sessions/ac3ddf8ddf8a0ab8ab4f9cd7e20e121f_activity.pkl differ
diff --git a/backend/instance/sessions/ae115a1a5bb3ee6658e780cc98efab4b_activity.pkl b/backend/instance/sessions/ae115a1a5bb3ee6658e780cc98efab4b_activity.pkl
new file mode 100644
index 000000000..bc17bb9ac
Binary files /dev/null and b/backend/instance/sessions/ae115a1a5bb3ee6658e780cc98efab4b_activity.pkl differ
diff --git a/backend/instance/sessions/b1e5b51c846c4e1c6b57ad0634b6ce43_activity.pkl b/backend/instance/sessions/b1e5b51c846c4e1c6b57ad0634b6ce43_activity.pkl
new file mode 100644
index 000000000..aaad1b352
Binary files /dev/null and b/backend/instance/sessions/b1e5b51c846c4e1c6b57ad0634b6ce43_activity.pkl differ
diff --git a/backend/instance/sessions/b2f7c7aa47422f7f6d71e63f0ae777ad_activity.pkl b/backend/instance/sessions/b2f7c7aa47422f7f6d71e63f0ae777ad_activity.pkl
new file mode 100644
index 000000000..0a607149e
Binary files /dev/null and b/backend/instance/sessions/b2f7c7aa47422f7f6d71e63f0ae777ad_activity.pkl differ
diff --git a/backend/instance/sessions/b4c357e1237fd230003c8256b7c7c799_activity.pkl b/backend/instance/sessions/b4c357e1237fd230003c8256b7c7c799_activity.pkl
new file mode 100644
index 000000000..462e86260
Binary files /dev/null and b/backend/instance/sessions/b4c357e1237fd230003c8256b7c7c799_activity.pkl differ
diff --git a/backend/instance/sessions/b7aa1bcd9472e78b52dfc98b45351f77_activity.pkl b/backend/instance/sessions/b7aa1bcd9472e78b52dfc98b45351f77_activity.pkl
new file mode 100644
index 000000000..a0921e52b
Binary files /dev/null and b/backend/instance/sessions/b7aa1bcd9472e78b52dfc98b45351f77_activity.pkl differ
diff --git a/backend/instance/sessions/ba6e50c8478a91841c8e6bdf37a06d49_activity.pkl b/backend/instance/sessions/ba6e50c8478a91841c8e6bdf37a06d49_activity.pkl
new file mode 100644
index 000000000..98ecd9009
Binary files /dev/null and b/backend/instance/sessions/ba6e50c8478a91841c8e6bdf37a06d49_activity.pkl differ
diff --git a/backend/instance/sessions/c25b2c45321f03b2bff03363dce63dfb_activity.pkl b/backend/instance/sessions/c25b2c45321f03b2bff03363dce63dfb_activity.pkl
new file mode 100644
index 000000000..881a8d5cf
Binary files /dev/null and b/backend/instance/sessions/c25b2c45321f03b2bff03363dce63dfb_activity.pkl differ
diff --git a/backend/instance/sessions/c29ba9bbd2a383511febc0d967498cd5_activity.pkl b/backend/instance/sessions/c29ba9bbd2a383511febc0d967498cd5_activity.pkl
new file mode 100644
index 000000000..640d74a4d
Binary files /dev/null and b/backend/instance/sessions/c29ba9bbd2a383511febc0d967498cd5_activity.pkl differ
diff --git a/backend/instance/sessions/c2be2fe46b2e537cd38dcb16c3b62716_activity.pkl b/backend/instance/sessions/c2be2fe46b2e537cd38dcb16c3b62716_activity.pkl
new file mode 100644
index 000000000..43e0f5d81
Binary files /dev/null and b/backend/instance/sessions/c2be2fe46b2e537cd38dcb16c3b62716_activity.pkl differ
diff --git a/backend/instance/sessions/c2ede199a62a589fed8f0499e226d463_activity.pkl b/backend/instance/sessions/c2ede199a62a589fed8f0499e226d463_activity.pkl
new file mode 100644
index 000000000..e22141a14
Binary files /dev/null and b/backend/instance/sessions/c2ede199a62a589fed8f0499e226d463_activity.pkl differ
diff --git a/backend/instance/sessions/c517b64848494bfb947a2c9a603aecba_activity.pkl b/backend/instance/sessions/c517b64848494bfb947a2c9a603aecba_activity.pkl
new file mode 100644
index 000000000..b4efd0fd0
Binary files /dev/null and b/backend/instance/sessions/c517b64848494bfb947a2c9a603aecba_activity.pkl differ
diff --git a/backend/instance/sessions/c95545c29193833a9ad4c03299fdcc6c_activity.pkl b/backend/instance/sessions/c95545c29193833a9ad4c03299fdcc6c_activity.pkl
new file mode 100644
index 000000000..ba7fca9be
Binary files /dev/null and b/backend/instance/sessions/c95545c29193833a9ad4c03299fdcc6c_activity.pkl differ
diff --git a/backend/instance/sessions/ce9523740267e62f6806d2f8fa6cb0cb_activity.pkl b/backend/instance/sessions/ce9523740267e62f6806d2f8fa6cb0cb_activity.pkl
new file mode 100644
index 000000000..011a13609
Binary files /dev/null and b/backend/instance/sessions/ce9523740267e62f6806d2f8fa6cb0cb_activity.pkl differ
diff --git a/backend/instance/sessions/d23272b18649354188eb20fb02378138_activity.pkl b/backend/instance/sessions/d23272b18649354188eb20fb02378138_activity.pkl
new file mode 100644
index 000000000..54d7553ec
Binary files /dev/null and b/backend/instance/sessions/d23272b18649354188eb20fb02378138_activity.pkl differ
diff --git a/backend/instance/sessions/d6b77410963747a32f3e8f50a2e86da8_activity.pkl b/backend/instance/sessions/d6b77410963747a32f3e8f50a2e86da8_activity.pkl
new file mode 100644
index 000000000..c0af94408
Binary files /dev/null and b/backend/instance/sessions/d6b77410963747a32f3e8f50a2e86da8_activity.pkl differ
diff --git a/backend/instance/sessions/db765c6bac5b6ebd6cda34c1898b70f0_activity.pkl b/backend/instance/sessions/db765c6bac5b6ebd6cda34c1898b70f0_activity.pkl
new file mode 100644
index 000000000..bccb636dd
Binary files /dev/null and b/backend/instance/sessions/db765c6bac5b6ebd6cda34c1898b70f0_activity.pkl differ
diff --git a/backend/instance/sessions/dba1dab051c5c6834d4c3f545ddd9666_activity.pkl b/backend/instance/sessions/dba1dab051c5c6834d4c3f545ddd9666_activity.pkl
new file mode 100644
index 000000000..3c4cc708c
Binary files /dev/null and b/backend/instance/sessions/dba1dab051c5c6834d4c3f545ddd9666_activity.pkl differ
diff --git a/backend/instance/sessions/dc10e20b5649f20b05a4c7b6513be15a_activity.pkl b/backend/instance/sessions/dc10e20b5649f20b05a4c7b6513be15a_activity.pkl
new file mode 100644
index 000000000..b6a0313bb
Binary files /dev/null and b/backend/instance/sessions/dc10e20b5649f20b05a4c7b6513be15a_activity.pkl differ
diff --git a/backend/instance/sessions/dc1dac1525a01115313280596bf82fa9_activity.pkl b/backend/instance/sessions/dc1dac1525a01115313280596bf82fa9_activity.pkl
new file mode 100644
index 000000000..85984561e
Binary files /dev/null and b/backend/instance/sessions/dc1dac1525a01115313280596bf82fa9_activity.pkl differ
diff --git a/backend/instance/sessions/dc1dc78e3e2c744de19046607d2bc623_activity.pkl b/backend/instance/sessions/dc1dc78e3e2c744de19046607d2bc623_activity.pkl
new file mode 100644
index 000000000..f4f96237a
Binary files /dev/null and b/backend/instance/sessions/dc1dc78e3e2c744de19046607d2bc623_activity.pkl differ
diff --git a/backend/instance/sessions/dcb1fe2f9e5187172811804c4366c832_activity.pkl b/backend/instance/sessions/dcb1fe2f9e5187172811804c4366c832_activity.pkl
new file mode 100644
index 000000000..878145693
Binary files /dev/null and b/backend/instance/sessions/dcb1fe2f9e5187172811804c4366c832_activity.pkl differ
diff --git a/backend/instance/sessions/dce52e005aaed012f4d1665a192fb559_activity.pkl b/backend/instance/sessions/dce52e005aaed012f4d1665a192fb559_activity.pkl
new file mode 100644
index 000000000..3ed57c92d
Binary files /dev/null and b/backend/instance/sessions/dce52e005aaed012f4d1665a192fb559_activity.pkl differ
diff --git a/backend/instance/sessions/de27c70d90cb4b87b6c276cb0dba0de3_activity.pkl b/backend/instance/sessions/de27c70d90cb4b87b6c276cb0dba0de3_activity.pkl
new file mode 100644
index 000000000..6cf740998
Binary files /dev/null and b/backend/instance/sessions/de27c70d90cb4b87b6c276cb0dba0de3_activity.pkl differ
diff --git a/backend/instance/sessions/df3b927f539ac4fb694128ee04ca2ea9_activity.pkl b/backend/instance/sessions/df3b927f539ac4fb694128ee04ca2ea9_activity.pkl
new file mode 100644
index 000000000..7d553ad79
Binary files /dev/null and b/backend/instance/sessions/df3b927f539ac4fb694128ee04ca2ea9_activity.pkl differ
diff --git a/backend/instance/sessions/df7798249839a455fc890178030a129a_activity.pkl b/backend/instance/sessions/df7798249839a455fc890178030a129a_activity.pkl
new file mode 100644
index 000000000..2fede16ff
Binary files /dev/null and b/backend/instance/sessions/df7798249839a455fc890178030a129a_activity.pkl differ
diff --git a/backend/instance/sessions/e06ad1f11bfa8e61e0f760addc6774e1_activity.pkl b/backend/instance/sessions/e06ad1f11bfa8e61e0f760addc6774e1_activity.pkl
new file mode 100644
index 000000000..7117b9b44
Binary files /dev/null and b/backend/instance/sessions/e06ad1f11bfa8e61e0f760addc6774e1_activity.pkl differ
diff --git a/backend/instance/sessions/e37dbe9e648893420966a397dd68acdf_activity.pkl b/backend/instance/sessions/e37dbe9e648893420966a397dd68acdf_activity.pkl
new file mode 100644
index 000000000..91b73b4bc
Binary files /dev/null and b/backend/instance/sessions/e37dbe9e648893420966a397dd68acdf_activity.pkl differ
diff --git a/backend/instance/sessions/e57232f4240b1c0864141772e8d00a9e_activity.pkl b/backend/instance/sessions/e57232f4240b1c0864141772e8d00a9e_activity.pkl
new file mode 100644
index 000000000..947f8416d
Binary files /dev/null and b/backend/instance/sessions/e57232f4240b1c0864141772e8d00a9e_activity.pkl differ
diff --git a/backend/instance/sessions/e73c493f702a07fd54389fbf2e4e8efd_activity.pkl b/backend/instance/sessions/e73c493f702a07fd54389fbf2e4e8efd_activity.pkl
new file mode 100644
index 000000000..5e36d1e35
Binary files /dev/null and b/backend/instance/sessions/e73c493f702a07fd54389fbf2e4e8efd_activity.pkl differ
diff --git a/backend/instance/sessions/ea0a84630df96c6db6388f5ba6862bb5_activity.pkl b/backend/instance/sessions/ea0a84630df96c6db6388f5ba6862bb5_activity.pkl
new file mode 100644
index 000000000..8aeb09eb2
Binary files /dev/null and b/backend/instance/sessions/ea0a84630df96c6db6388f5ba6862bb5_activity.pkl differ
diff --git a/backend/instance/sessions/ea864f0c1ed2a452099f9e8a49fbe4b8_activity.pkl b/backend/instance/sessions/ea864f0c1ed2a452099f9e8a49fbe4b8_activity.pkl
new file mode 100644
index 000000000..3c495ab23
Binary files /dev/null and b/backend/instance/sessions/ea864f0c1ed2a452099f9e8a49fbe4b8_activity.pkl differ
diff --git a/backend/instance/sessions/eb84f65b1c0b89dbb2efc310d898084f_activity.pkl b/backend/instance/sessions/eb84f65b1c0b89dbb2efc310d898084f_activity.pkl
new file mode 100644
index 000000000..dc06e6d34
Binary files /dev/null and b/backend/instance/sessions/eb84f65b1c0b89dbb2efc310d898084f_activity.pkl differ
diff --git a/backend/instance/sessions/eda0a4804d1afa73beb1b76233df040f_activity.pkl b/backend/instance/sessions/eda0a4804d1afa73beb1b76233df040f_activity.pkl
new file mode 100644
index 000000000..c2ace08b1
Binary files /dev/null and b/backend/instance/sessions/eda0a4804d1afa73beb1b76233df040f_activity.pkl differ
diff --git a/backend/instance/sessions/eda85a3c3e57e1774ecfefbda0716971_activity.pkl b/backend/instance/sessions/eda85a3c3e57e1774ecfefbda0716971_activity.pkl
new file mode 100644
index 000000000..93ef62a03
Binary files /dev/null and b/backend/instance/sessions/eda85a3c3e57e1774ecfefbda0716971_activity.pkl differ
diff --git a/backend/instance/sessions/f0718f956c4d5745c3b8042da77e6ba6_activity.pkl b/backend/instance/sessions/f0718f956c4d5745c3b8042da77e6ba6_activity.pkl
new file mode 100644
index 000000000..b4ccc178b
Binary files /dev/null and b/backend/instance/sessions/f0718f956c4d5745c3b8042da77e6ba6_activity.pkl differ
diff --git a/backend/instance/sessions/f08338fef4a7303edfd1a18f1759f2dd_activity.pkl b/backend/instance/sessions/f08338fef4a7303edfd1a18f1759f2dd_activity.pkl
new file mode 100644
index 000000000..8e8dd0c3b
Binary files /dev/null and b/backend/instance/sessions/f08338fef4a7303edfd1a18f1759f2dd_activity.pkl differ
diff --git a/backend/instance/sessions/f17a3ea53b3dd29e9b2e8f9adb882125_activity.pkl b/backend/instance/sessions/f17a3ea53b3dd29e9b2e8f9adb882125_activity.pkl
new file mode 100644
index 000000000..18b3f1037
Binary files /dev/null and b/backend/instance/sessions/f17a3ea53b3dd29e9b2e8f9adb882125_activity.pkl differ
diff --git a/backend/instance/sessions/f2b1bd037d9c3d20d8acd19f2b750856_activity.pkl b/backend/instance/sessions/f2b1bd037d9c3d20d8acd19f2b750856_activity.pkl
new file mode 100644
index 000000000..e0dfb635e
Binary files /dev/null and b/backend/instance/sessions/f2b1bd037d9c3d20d8acd19f2b750856_activity.pkl differ
diff --git a/backend/instance/sessions/f45ddda32e37fb60cfd857b4f2a717e9_activity.pkl b/backend/instance/sessions/f45ddda32e37fb60cfd857b4f2a717e9_activity.pkl
new file mode 100644
index 000000000..7f4da7b1b
Binary files /dev/null and b/backend/instance/sessions/f45ddda32e37fb60cfd857b4f2a717e9_activity.pkl differ
diff --git a/backend/instance/sessions/f7589aa1382b1b20349b2a26ca0741be_activity.pkl b/backend/instance/sessions/f7589aa1382b1b20349b2a26ca0741be_activity.pkl
new file mode 100644
index 000000000..6722dc937
Binary files /dev/null and b/backend/instance/sessions/f7589aa1382b1b20349b2a26ca0741be_activity.pkl differ
diff --git a/backend/instance/sessions/fa499d8d1b2a70dbfbdbdb38c83af968_activity.pkl b/backend/instance/sessions/fa499d8d1b2a70dbfbdbdb38c83af968_activity.pkl
new file mode 100644
index 000000000..101242699
Binary files /dev/null and b/backend/instance/sessions/fa499d8d1b2a70dbfbdbdb38c83af968_activity.pkl differ
diff --git a/backend/instance/sessions/fab887e58300f8a9869fc079809ef040_activity.pkl b/backend/instance/sessions/fab887e58300f8a9869fc079809ef040_activity.pkl
new file mode 100644
index 000000000..05bd66136
Binary files /dev/null and b/backend/instance/sessions/fab887e58300f8a9869fc079809ef040_activity.pkl differ
diff --git a/backend/instance/sessions/fb90e5db8274038e8e6183c5f9ab35cf_activity.pkl b/backend/instance/sessions/fb90e5db8274038e8e6183c5f9ab35cf_activity.pkl
new file mode 100644
index 000000000..aed3be03c
Binary files /dev/null and b/backend/instance/sessions/fb90e5db8274038e8e6183c5f9ab35cf_activity.pkl differ
diff --git a/backend/instance/sessions/fb9e59cf542b80b3aae5b07836de9df3_activity.pkl b/backend/instance/sessions/fb9e59cf542b80b3aae5b07836de9df3_activity.pkl
new file mode 100644
index 000000000..64440e966
Binary files /dev/null and b/backend/instance/sessions/fb9e59cf542b80b3aae5b07836de9df3_activity.pkl differ
diff --git a/backend/instance/sessions/fcdad40157766497c141b1ee9c3cf3bc_activity.pkl b/backend/instance/sessions/fcdad40157766497c141b1ee9c3cf3bc_activity.pkl
new file mode 100644
index 000000000..986bdabc1
Binary files /dev/null and b/backend/instance/sessions/fcdad40157766497c141b1ee9c3cf3bc_activity.pkl differ
diff --git a/backend/instance/sessions/fd714e22d0a15c109b5a9d2b780fe037_activity.pkl b/backend/instance/sessions/fd714e22d0a15c109b5a9d2b780fe037_activity.pkl
new file mode 100644
index 000000000..1b0ce18e5
Binary files /dev/null and b/backend/instance/sessions/fd714e22d0a15c109b5a9d2b780fe037_activity.pkl differ
diff --git a/backend/instance/sessions/fe1d0f457c64b28910f1008700f84ab2_activity.pkl b/backend/instance/sessions/fe1d0f457c64b28910f1008700f84ab2_activity.pkl
new file mode 100644
index 000000000..638eee654
Binary files /dev/null and b/backend/instance/sessions/fe1d0f457c64b28910f1008700f84ab2_activity.pkl differ
diff --git a/backend/instance/sessions/ff152c57fd1b13d4c143a2f084397093_activity.pkl b/backend/instance/sessions/ff152c57fd1b13d4c143a2f084397093_activity.pkl
new file mode 100644
index 000000000..6d58d7392
Binary files /dev/null and b/backend/instance/sessions/ff152c57fd1b13d4c143a2f084397093_activity.pkl differ
diff --git a/backend/logs/admin/admin.log b/backend/logs/admin/admin.log
index 0a4792fe8..515936a73 100644
--- a/backend/logs/admin/admin.log
+++ b/backend/logs/admin/admin.log
@@ -275,3 +275,12 @@
2025-06-16 00:53:08 - [admin] admin - [INFO] INFO - Admin-Check für Funktion api_admin_system_health_alias: User authenticated: True, User ID: 1, Is Admin: True
2025-06-16 00:53:08 - [admin] admin - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-16 00:53:33 - [admin] admin - [INFO] INFO - Admin-Check für Funktion guest_requests: User authenticated: True, User ID: 1, Is Admin: True
+2025-06-16 01:00:23 - [admin] admin - [INFO] INFO - Admin-Check für Funktion advanced_settings: User authenticated: True, User ID: 1, Is Admin: True
+2025-06-16 01:00:23 - [admin] admin - [INFO] INFO - Erweiterte Einstellungen geladen von admin
+2025-06-16 01:00:23 - [admin] admin - [ERROR] ERROR - Fehler beim Laden der erweiterten Einstellungen: 'maintenance_info' is undefined
+2025-06-16 01:00:25 - [admin] admin - [INFO] INFO - Admin-Check für Funktion advanced_settings: User authenticated: True, User ID: 1, Is Admin: True
+2025-06-16 01:00:25 - [admin] admin - [INFO] INFO - Erweiterte Einstellungen geladen von admin
+2025-06-16 01:00:25 - [admin] admin - [ERROR] ERROR - Fehler beim Laden der erweiterten Einstellungen: 'maintenance_info' is undefined
+2025-06-16 01:01:20 - [admin] admin - [INFO] INFO - Admin-Check für Funktion api_admin_system_health_alias: User authenticated: True, User ID: 1, Is Admin: True
+2025-06-16 01:01:20 - [admin] admin - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
+2025-06-16 01:01:23 - [admin] admin - [INFO] INFO - Admin-Check für Funktion guest_requests: User authenticated: True, User ID: 1, Is Admin: True
diff --git a/backend/logs/admin_api/admin_api.log b/backend/logs/admin_api/admin_api.log
index cc4dc0782..183491e73 100644
--- a/backend/logs/admin_api/admin_api.log
+++ b/backend/logs/admin_api/admin_api.log
@@ -90,3 +90,5 @@
2025-06-16 00:53:08 - [admin_api] admin_api - [INFO] INFO - System-Health-Check durchgeführt: unhealthy
2025-06-16 00:53:09 - [admin_api] admin_api - [ERROR] ERROR - Datenbank-Health-Check für Error-Recovery fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1')
2025-06-16 00:53:09 - [admin_api] admin_api - [INFO] INFO - Error-Recovery-Status abgerufen: critical
+2025-06-16 01:01:20 - [admin_api] admin_api - [ERROR] ERROR - Datenbank-Health-Check fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1')
+2025-06-16 01:01:20 - [admin_api] admin_api - [INFO] INFO - System-Health-Check durchgeführt: unhealthy
diff --git a/backend/logs/api/api.log b/backend/logs/api/api.log
index 311af2ce9..6a64aa4ce 100644
--- a/backend/logs/api/api.log
+++ b/backend/logs/api/api.log
@@ -27,3 +27,4 @@
2025-06-16 00:50:46 - [api] api - [INFO] INFO - Statistiken abgerufen von Benutzer admin
2025-06-16 00:52:38 - [api] api - [INFO] INFO - Statistiken abgerufen von Benutzer admin
2025-06-16 00:53:08 - [api] api - [INFO] INFO - Statistiken abgerufen von Benutzer admin
+2025-06-16 01:01:20 - [api] api - [INFO] INFO - Statistiken abgerufen von Benutzer admin
diff --git a/backend/logs/app/app.log b/backend/logs/app/app.log
index dd9282485..417e8e39a 100644
--- a/backend/logs/app/app.log
+++ b/backend/logs/app/app.log
@@ -35566,3 +35566,895 @@ jinja2.exceptions.UndefinedError: 'maintenance_info' is undefined
2025-06-16 00:54:21 - [app] app - [DEBUG] DEBUG - Request: POST /api/printers
2025-06-16 00:54:21 - [app] app - [WARNING] WARNING - Method Not Allowed (405): POST http://127.0.0.1:5000/api/printers
2025-06-16 00:54:21 - [app] app - [DEBUG] DEBUG - Response: 405
+2025-06-16 00:54:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers
+2025-06-16 00:54:22 - [app] app - [INFO] INFO - ✅ API: 6 Drucker abgerufen (include_inactive=False)
+2025-06-16 00:54:22 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 00:54:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers
+2025-06-16 00:54:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications
+2025-06-16 00:54:22 - [app] app - [INFO] INFO - ✅ API: 6 Drucker abgerufen (include_inactive=False)
+2025-06-16 00:54:22 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 00:54:22 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 00:54:34 - [app] app - [INFO] INFO - [SHUTDOWN] 🧹 Cleanup wird ausgeführt...
+2025-06-16 00:54:34 - [app] app - [INFO] INFO - [SHUTDOWN] ✅ Queue Manager gestoppt
+2025-06-16 00:54:34 - [app] app - [ERROR] ERROR - [SHUTDOWN] ❌ Cleanup-Fehler: 'BackgroundTaskScheduler' object has no attribute 'shutdown'
+2025-06-16 00:54:37 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db
+2025-06-16 00:54:38 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: development
+2025-06-16 00:54:38 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: False
+2025-06-16 00:54:38 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration
+2025-06-16 00:54:38 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration
+2025-06-16 00:54:38 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ MYP Development Environment Konfiguration aktiviert
+2025-06-16 00:54:38 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: Development/Testing
+2025-06-16 00:54:38 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: True
+2025-06-16 00:54:38 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: True
+2025-06-16 00:54:38 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O)
+2025-06-16 00:54:38 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: 0 erstellt, 0 aktualisiert
+2025-06-16 00:54:38 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP DEVELOPMENT-Umgebung
+2025-06-16 00:54:38 - [app] app - [INFO] INFO - [STARTUP] 🏢 Mercedes-Benz TBA Marienfelde
+2025-06-16 00:54:38 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: True
+2025-06-16 00:54:38 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank...
+2025-06-16 00:54:38 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert
+2025-06-16 00:54:38 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert
+2025-06-16 00:54:38 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin...
+2025-06-16 00:54:39 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt.
+2025-06-16 00:54:39 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft
+2025-06-16 00:54:39 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker...
+2025-06-16 00:54:39 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100)
+2025-06-16 00:54:39 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101)
+2025-06-16 00:54:39 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102)
+2025-06-16 00:54:39 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103)
+2025-06-16 00:54:39 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104)
+2025-06-16 00:54:39 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106)
+2025-06-16 00:54:39 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert
+2025-06-16 00:54:39 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert
+2025-06-16 00:54:39 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105)
+2025-06-16 00:54:39 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert
+2025-06-16 00:54:39 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager...
+2025-06-16 00:54:39 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet
+2025-06-16 00:54:39 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler...
+2025-06-16 00:54:39 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet
+2025-06-16 00:54:39 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://0.0.0.0:5000
+2025-06-16 00:54:49 - [app] app - [INFO] INFO - [SHUTDOWN] 🧹 Cleanup wird ausgeführt...
+2025-06-16 00:54:49 - [app] app - [INFO] INFO - [SHUTDOWN] ✅ Queue Manager gestoppt
+2025-06-16 00:54:49 - [app] app - [ERROR] ERROR - [SHUTDOWN] ❌ Cleanup-Fehler: 'BackgroundTaskScheduler' object has no attribute 'shutdown'
+2025-06-16 00:54:51 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db
+2025-06-16 00:54:53 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: development
+2025-06-16 00:54:53 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: False
+2025-06-16 00:54:53 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration
+2025-06-16 00:54:53 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration
+2025-06-16 00:54:53 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ MYP Development Environment Konfiguration aktiviert
+2025-06-16 00:54:53 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: Development/Testing
+2025-06-16 00:54:53 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: True
+2025-06-16 00:54:53 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: True
+2025-06-16 00:54:54 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O)
+2025-06-16 00:54:54 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: 0 erstellt, 0 aktualisiert
+2025-06-16 00:54:54 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP DEVELOPMENT-Umgebung
+2025-06-16 00:54:54 - [app] app - [INFO] INFO - [STARTUP] 🏢 Mercedes-Benz TBA Marienfelde
+2025-06-16 00:54:54 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: True
+2025-06-16 00:54:54 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank...
+2025-06-16 00:54:54 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert
+2025-06-16 00:54:54 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert
+2025-06-16 00:54:54 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin...
+2025-06-16 00:54:54 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt.
+2025-06-16 00:54:54 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft
+2025-06-16 00:54:54 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker...
+2025-06-16 00:54:54 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100)
+2025-06-16 00:54:55 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101)
+2025-06-16 00:54:55 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102)
+2025-06-16 00:54:55 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103)
+2025-06-16 00:54:55 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104)
+2025-06-16 00:54:55 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106)
+2025-06-16 00:54:55 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert
+2025-06-16 00:54:55 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert
+2025-06-16 00:54:55 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105)
+2025-06-16 00:54:55 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert
+2025-06-16 00:54:55 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager...
+2025-06-16 00:54:55 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet
+2025-06-16 00:54:55 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler...
+2025-06-16 00:54:55 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet
+2025-06-16 00:54:55 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://0.0.0.0:5000
+2025-06-16 00:54:57 - [app] app - [INFO] INFO - ✅ API: 6 Drucker abgerufen (include_inactive=False)
+2025-06-16 00:54:57 - [app] app - [INFO] INFO - ✅ API: 6 Drucker abgerufen (include_inactive=False)
+2025-06-16 00:55:22 - [app] app - [INFO] INFO - ✅ API: 6 Drucker abgerufen (include_inactive=False)
+2025-06-16 00:55:22 - [app] app - [INFO] INFO - ✅ API: 6 Drucker abgerufen (include_inactive=False)
+2025-06-16 00:55:52 - [app] app - [INFO] INFO - ✅ API: 6 Drucker abgerufen (include_inactive=False)
+2025-06-16 00:55:52 - [app] app - [INFO] INFO - ✅ API: 6 Drucker abgerufen (include_inactive=False)
+2025-06-16 00:56:22 - [app] app - [INFO] INFO - ✅ API: 6 Drucker abgerufen (include_inactive=False)
+2025-06-16 00:56:22 - [app] app - [INFO] INFO - ✅ API: 6 Drucker abgerufen (include_inactive=False)
+2025-06-16 00:56:52 - [app] app - [INFO] INFO - ✅ API: 6 Drucker abgerufen (include_inactive=False)
+2025-06-16 00:56:52 - [app] app - [INFO] INFO - ✅ API: 6 Drucker abgerufen (include_inactive=False)
+2025-06-16 00:57:22 - [app] app - [INFO] INFO - ✅ API: 6 Drucker abgerufen (include_inactive=False)
+2025-06-16 00:57:22 - [app] app - [INFO] INFO - ✅ API: 6 Drucker abgerufen (include_inactive=False)
+2025-06-16 00:59:47 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db
+2025-06-16 00:59:48 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: development
+2025-06-16 00:59:48 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: False
+2025-06-16 00:59:48 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration
+2025-06-16 00:59:48 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration
+2025-06-16 00:59:48 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ MYP Development Environment Konfiguration aktiviert
+2025-06-16 00:59:48 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: Development/Testing
+2025-06-16 00:59:48 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: True
+2025-06-16 00:59:48 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: True
+2025-06-16 00:59:49 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O)
+2025-06-16 00:59:49 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: 0 erstellt, 0 aktualisiert
+2025-06-16 00:59:49 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP DEVELOPMENT-Umgebung
+2025-06-16 00:59:49 - [app] app - [INFO] INFO - [STARTUP] 🏢 Mercedes-Benz TBA Marienfelde
+2025-06-16 00:59:49 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: True
+2025-06-16 00:59:49 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank...
+2025-06-16 00:59:49 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert
+2025-06-16 00:59:49 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert
+2025-06-16 00:59:49 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin...
+2025-06-16 00:59:49 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt.
+2025-06-16 00:59:49 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft
+2025-06-16 00:59:49 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker...
+2025-06-16 00:59:49 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100)
+2025-06-16 00:59:49 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101)
+2025-06-16 00:59:49 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102)
+2025-06-16 00:59:49 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103)
+2025-06-16 00:59:49 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104)
+2025-06-16 00:59:49 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106)
+2025-06-16 00:59:49 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert
+2025-06-16 00:59:49 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert
+2025-06-16 00:59:49 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105)
+2025-06-16 00:59:49 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert
+2025-06-16 00:59:49 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager...
+2025-06-16 00:59:49 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet
+2025-06-16 00:59:49 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler...
+2025-06-16 00:59:49 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet
+2025-06-16 00:59:49 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://0.0.0.0:5000
+2025-06-16 00:59:50 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db
+2025-06-16 00:59:51 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: development
+2025-06-16 00:59:51 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: False
+2025-06-16 00:59:51 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration
+2025-06-16 00:59:51 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration
+2025-06-16 00:59:51 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ MYP Development Environment Konfiguration aktiviert
+2025-06-16 00:59:51 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: Development/Testing
+2025-06-16 00:59:51 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: True
+2025-06-16 00:59:51 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: True
+2025-06-16 00:59:52 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O)
+2025-06-16 00:59:52 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: 0 erstellt, 0 aktualisiert
+2025-06-16 00:59:52 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP DEVELOPMENT-Umgebung
+2025-06-16 00:59:52 - [app] app - [INFO] INFO - [STARTUP] 🏢 Mercedes-Benz TBA Marienfelde
+2025-06-16 00:59:52 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: True
+2025-06-16 00:59:52 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank...
+2025-06-16 00:59:52 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert
+2025-06-16 00:59:52 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert
+2025-06-16 00:59:52 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin...
+2025-06-16 00:59:52 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt.
+2025-06-16 00:59:52 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft
+2025-06-16 00:59:52 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker...
+2025-06-16 00:59:52 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100)
+2025-06-16 00:59:52 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101)
+2025-06-16 00:59:52 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102)
+2025-06-16 00:59:52 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103)
+2025-06-16 00:59:52 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104)
+2025-06-16 00:59:52 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106)
+2025-06-16 00:59:52 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert
+2025-06-16 00:59:52 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert
+2025-06-16 00:59:52 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105)
+2025-06-16 00:59:52 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert
+2025-06-16 00:59:52 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager...
+2025-06-16 00:59:52 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet
+2025-06-16 00:59:52 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler...
+2025-06-16 00:59:52 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet
+2025-06-16 00:59:52 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://0.0.0.0:5000
+2025-06-16 00:59: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:
+ - /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates
+ -> found ('/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/dashboard.html')
+2025-06-16 00:59:54 - [app] app - [INFO] INFO - ✅ API: 6 Drucker abgerufen (include_inactive=False)
+2025-06-16 00:59:54 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 00:59:54 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications
+2025-06-16 00:59: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:
+ - /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates
+ -> found ('/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/base.html')
+2025-06-16 00:59:54 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers
+2025-06-16 00:59:54 - [app] app - [INFO] INFO - ✅ API: 6 Drucker abgerufen (include_inactive=False)
+2025-06-16 00:59:54 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 00:59:54 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 00:59:54 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 00:59:54 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications
+2025-06-16 00:59:54 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 00:59:56 - [app] app - [DEBUG] DEBUG - Request: GET /sw.js
+2025-06-16 00:59:56 - [app] app - [DEBUG] DEBUG - Response: 304
+2025-06-16 00:59:56 - [app] app - [DEBUG] DEBUG - Request: GET /printers
+2025-06-16 00:59:56 - [app] app - [INFO] INFO - Locating template 'printers.html':
+ 1: trying loader of application '__main__'
+ class: jinja2.loaders.FileSystemLoader
+ encoding: 'utf-8'
+ followlinks: False
+ searchpath:
+ - /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates
+ -> found ('/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/printers.html')
+2025-06-16 00:59:56 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 00:59:57 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers
+2025-06-16 00:59:57 - [app] app - [INFO] INFO - ✅ API: 6 Drucker abgerufen (include_inactive=False)
+2025-06-16 00:59:57 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 00:59:57 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers
+2025-06-16 00:59:57 - [app] app - [INFO] INFO - ✅ API: 6 Drucker abgerufen (include_inactive=False)
+2025-06-16 00:59:57 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 00:59:57 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications
+2025-06-16 00:59:57 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 00:59:59 - [app] app - [DEBUG] DEBUG - Request: GET /calendar
+2025-06-16 00:59:59 - [app] app - [INFO] INFO - Locating template 'calendar.html':
+ 1: trying loader of application '__main__'
+ class: jinja2.loaders.FileSystemLoader
+ encoding: 'utf-8'
+ followlinks: False
+ searchpath:
+ - /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates
+ -> found ('/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/calendar.html')
+2025-06-16 00:59:59 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 00:59:59 - [app] app - [DEBUG] DEBUG - Request: GET /sw.js
+2025-06-16 00:59:59 - [app] app - [DEBUG] DEBUG - Response: 304
+2025-06-16 00:59:59 - [app] app - [DEBUG] DEBUG - Request: GET /api/calendar/events
+2025-06-16 01:00:00 - [app] app - [DEBUG] DEBUG - Request: GET /api/calendar/statistics
+2025-06-16 01:00:00 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications
+2025-06-16 01:00:00 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:00:00 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:00:02 - [app] app - [DEBUG] DEBUG - Request: GET /sw.js
+2025-06-16 01:00:02 - [app] app - [DEBUG] DEBUG - Response: 304
+2025-06-16 01:00:02 - [app] app - [INFO] INFO - Steckdosen-Status geloggt: Drucker 1, Status: unreachable, Quelle: system
+2025-06-16 01:00:02 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:00:02 - [app] app - [DEBUG] DEBUG - Request: GET /api/calendar/statistics
+2025-06-16 01:00:02 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:00:06 - [app] app - [INFO] INFO - [SHUTDOWN] 🧹 Cleanup wird ausgeführt...
+2025-06-16 01:00:06 - [app] app - [INFO] INFO - [SHUTDOWN] ✅ Queue Manager gestoppt
+2025-06-16 01:00:06 - [app] app - [ERROR] ERROR - [SHUTDOWN] ❌ Cleanup-Fehler: 'BackgroundTaskScheduler' object has no attribute 'shutdown'
+2025-06-16 01:00:14 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db
+2025-06-16 01:00:16 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: development
+2025-06-16 01:00:16 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: False
+2025-06-16 01:00:16 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration
+2025-06-16 01:00:16 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration
+2025-06-16 01:00:16 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ MYP Development Environment Konfiguration aktiviert
+2025-06-16 01:00:16 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: Development/Testing
+2025-06-16 01:00:16 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: True
+2025-06-16 01:00:16 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: True
+2025-06-16 01:00:16 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O)
+2025-06-16 01:00:16 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: 0 erstellt, 0 aktualisiert
+2025-06-16 01:00:16 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP DEVELOPMENT-Umgebung
+2025-06-16 01:00:16 - [app] app - [INFO] INFO - [STARTUP] 🏢 Mercedes-Benz TBA Marienfelde
+2025-06-16 01:00:16 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: True
+2025-06-16 01:00:16 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank...
+2025-06-16 01:00:16 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert
+2025-06-16 01:00:16 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert
+2025-06-16 01:00:16 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin...
+2025-06-16 01:00:17 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt.
+2025-06-16 01:00:17 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft
+2025-06-16 01:00:17 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker...
+2025-06-16 01:00:17 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100)
+2025-06-16 01:00:17 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101)
+2025-06-16 01:00:17 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102)
+2025-06-16 01:00:17 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103)
+2025-06-16 01:00:17 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104)
+2025-06-16 01:00:17 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106)
+2025-06-16 01:00:17 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert
+2025-06-16 01:00:17 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert
+2025-06-16 01:00:17 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105)
+2025-06-16 01:00:17 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert
+2025-06-16 01:00:17 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager...
+2025-06-16 01:00:17 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet
+2025-06-16 01:00:17 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler...
+2025-06-16 01:00:17 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet
+2025-06-16 01:00:17 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://0.0.0.0:5000
+2025-06-16 01:00:18 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db
+2025-06-16 01:00:19 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: development
+2025-06-16 01:00:19 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: False
+2025-06-16 01:00:19 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration
+2025-06-16 01:00:19 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration
+2025-06-16 01:00:19 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ MYP Development Environment Konfiguration aktiviert
+2025-06-16 01:00:19 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: Development/Testing
+2025-06-16 01:00:19 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: True
+2025-06-16 01:00:19 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: True
+2025-06-16 01:00:19 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O)
+2025-06-16 01:00:19 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: 0 erstellt, 0 aktualisiert
+2025-06-16 01:00:19 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP DEVELOPMENT-Umgebung
+2025-06-16 01:00:19 - [app] app - [INFO] INFO - [STARTUP] 🏢 Mercedes-Benz TBA Marienfelde
+2025-06-16 01:00:19 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: True
+2025-06-16 01:00:19 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank...
+2025-06-16 01:00:19 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert
+2025-06-16 01:00:19 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert
+2025-06-16 01:00:19 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin...
+2025-06-16 01:00:20 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt.
+2025-06-16 01:00:20 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft
+2025-06-16 01:00:20 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker...
+2025-06-16 01:00:20 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100)
+2025-06-16 01:00:20 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101)
+2025-06-16 01:00:20 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102)
+2025-06-16 01:00:20 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103)
+2025-06-16 01:00:20 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104)
+2025-06-16 01:00:20 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106)
+2025-06-16 01:00:20 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert
+2025-06-16 01:00:20 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert
+2025-06-16 01:00:20 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105)
+2025-06-16 01:00:20 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert
+2025-06-16 01:00:20 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager...
+2025-06-16 01:00:20 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet
+2025-06-16 01:00:20 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler...
+2025-06-16 01:00:20 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet
+2025-06-16 01:00:20 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://0.0.0.0:5000
+2025-06-16 01:00:23 - [app] app - [INFO] INFO - Locating template 'admin_advanced_settings.html':
+ 1: trying loader of application '__main__'
+ class: jinja2.loaders.FileSystemLoader
+ encoding: 'utf-8'
+ followlinks: False
+ searchpath:
+ - /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates
+ -> found ('/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/admin_advanced_settings.html')
+2025-06-16 01:00:23 - [app] app - [INFO] INFO - Locating template 'base.html':
+ 1: trying loader of application '__main__'
+ class: jinja2.loaders.FileSystemLoader
+ encoding: 'utf-8'
+ followlinks: False
+ searchpath:
+ - /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates
+ -> found ('/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/base.html')
+2025-06-16 01:00:23 - [app] app - [ERROR] ERROR - Unhandled Exception - ID: 20250616_010023
+2025-06-16 01:00:23 - [app] app - [ERROR] ERROR - URL: http://127.0.0.1:5000/admin/advanced-settings
+2025-06-16 01:00:23 - [app] app - [ERROR] ERROR - Method: GET
+2025-06-16 01:00:23 - [app] app - [ERROR] ERROR - User: admin
+2025-06-16 01:00:23 - [app] app - [ERROR] ERROR - Exception Type: UndefinedError
+2025-06-16 01:00:23 - [app] app - [ERROR] ERROR - Exception: 'maintenance_info' is undefined
+2025-06-16 01:00:23 - [app] app - [ERROR] ERROR - Traceback: Traceback (most recent call last):
+ File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/blueprints/admin_unified.py", line 326, in advanced_settings
+ return render_template('admin_advanced_settings.html', stats=stats, optimization_settings=optimization_settings)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/core/.local/lib/python3.11/site-packages/flask/templating.py", line 152, in render_template
+ return _render(app, template, context)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/core/.local/lib/python3.11/site-packages/flask/templating.py", line 133, in _render
+ rv = template.render(context)
+ ^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/core/.local/lib/python3.11/site-packages/jinja2/environment.py", line 1301, in render
+ self.environment.handle_exception()
+ File "/home/core/.local/lib/python3.11/site-packages/jinja2/environment.py", line 936, in handle_exception
+ raise rewrite_traceback_stack(source=source)
+ File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/admin_advanced_settings.html", line 1, in top-level template code
+ {% extends "base.html" %}
+ File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/base.html", line 459, in top-level template code
+ {% block content %}{% endblock %}
+ ^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/admin_advanced_settings.html", line 532, in block 'content'
+ {{ maintenance_info.last_backup }}
+ ^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/core/.local/lib/python3.11/site-packages/jinja2/environment.py", line 485, in getattr
+ return getattr(obj, attribute)
+ ^^^^^^^^^^^^^^^^^^^^^^^
+jinja2.exceptions.UndefinedError: 'maintenance_info' is undefined
+
+During handling of the above exception, another exception occurred:
+
+Traceback (most recent call last):
+ File "/home/core/.local/lib/python3.11/site-packages/flask/app.py", line 867, in full_dispatch_request
+ rv = self.dispatch_request()
+ ^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/core/.local/lib/python3.11/site-packages/flask/app.py", line 852, in dispatch_request
+ return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/core/.local/lib/python3.11/site-packages/flask_login/utils.py", line 290, in decorated_view
+ return current_app.ensure_sync(func)(*args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/blueprints/admin_unified.py", line 88, in decorated_function
+ return f(*args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^
+ File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/blueprints/admin_unified.py", line 350, in advanced_settings
+ return render_template('admin_advanced_settings.html', stats=stats, optimization_settings=optimization_settings)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/core/.local/lib/python3.11/site-packages/flask/templating.py", line 152, in render_template
+ return _render(app, template, context)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/core/.local/lib/python3.11/site-packages/flask/templating.py", line 133, in _render
+ rv = template.render(context)
+ ^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/core/.local/lib/python3.11/site-packages/jinja2/environment.py", line 1301, in render
+ self.environment.handle_exception()
+ File "/home/core/.local/lib/python3.11/site-packages/jinja2/environment.py", line 936, in handle_exception
+ raise rewrite_traceback_stack(source=source)
+ File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/admin_advanced_settings.html", line 1, in top-level template code
+ {% extends "base.html" %}
+ File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/base.html", line 459, in top-level template code
+ {% block content %}{% endblock %}
+ ^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/admin_advanced_settings.html", line 532, in block 'content'
+ {{ maintenance_info.last_backup }}
+ ^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/core/.local/lib/python3.11/site-packages/jinja2/environment.py", line 485, in getattr
+ return getattr(obj, attribute)
+ ^^^^^^^^^^^^^^^^^^^^^^^
+jinja2.exceptions.UndefinedError: 'maintenance_info' is undefined
+
+2025-06-16 01:00:23 - [app] app - [INFO] INFO - Locating template 'errors/500.html':
+ 1: trying loader of application '__main__'
+ class: jinja2.loaders.FileSystemLoader
+ encoding: 'utf-8'
+ followlinks: False
+ searchpath:
+ - /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates
+ -> found ('/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/errors/500.html')
+2025-06-16 01:00:23 - [app] app - [DEBUG] DEBUG - Response: 500
+2025-06-16 01:00:25 - [app] app - [DEBUG] DEBUG - Request: GET /admin/advanced-settings
+2025-06-16 01:00:25 - [app] app - [ERROR] ERROR - Unhandled Exception - ID: 20250616_010025
+2025-06-16 01:00:25 - [app] app - [ERROR] ERROR - URL: http://127.0.0.1:5000/admin/advanced-settings
+2025-06-16 01:00:25 - [app] app - [ERROR] ERROR - Method: GET
+2025-06-16 01:00:25 - [app] app - [ERROR] ERROR - User: admin
+2025-06-16 01:00:25 - [app] app - [ERROR] ERROR - Exception Type: UndefinedError
+2025-06-16 01:00:25 - [app] app - [ERROR] ERROR - Exception: 'maintenance_info' is undefined
+2025-06-16 01:00:25 - [app] app - [ERROR] ERROR - Traceback: Traceback (most recent call last):
+ File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/blueprints/admin_unified.py", line 326, in advanced_settings
+ return render_template('admin_advanced_settings.html', stats=stats, optimization_settings=optimization_settings)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/core/.local/lib/python3.11/site-packages/flask/templating.py", line 152, in render_template
+ return _render(app, template, context)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/core/.local/lib/python3.11/site-packages/flask/templating.py", line 133, in _render
+ rv = template.render(context)
+ ^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/core/.local/lib/python3.11/site-packages/jinja2/environment.py", line 1301, in render
+ self.environment.handle_exception()
+ File "/home/core/.local/lib/python3.11/site-packages/jinja2/environment.py", line 936, in handle_exception
+ raise rewrite_traceback_stack(source=source)
+ File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/admin_advanced_settings.html", line 1, in top-level template code
+ {% extends "base.html" %}
+ File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/base.html", line 459, in top-level template code
+ {% block content %}{% endblock %}
+ ^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/admin_advanced_settings.html", line 532, in block 'content'
+ {{ maintenance_info.last_backup }}
+ ^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/core/.local/lib/python3.11/site-packages/jinja2/environment.py", line 485, in getattr
+ return getattr(obj, attribute)
+ ^^^^^^^^^^^^^^^^^^^^^^^
+jinja2.exceptions.UndefinedError: 'maintenance_info' is undefined
+
+During handling of the above exception, another exception occurred:
+
+Traceback (most recent call last):
+ File "/home/core/.local/lib/python3.11/site-packages/flask/app.py", line 867, in full_dispatch_request
+ rv = self.dispatch_request()
+ ^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/core/.local/lib/python3.11/site-packages/flask/app.py", line 852, in dispatch_request
+ return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/core/.local/lib/python3.11/site-packages/flask_login/utils.py", line 290, in decorated_view
+ return current_app.ensure_sync(func)(*args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/blueprints/admin_unified.py", line 88, in decorated_function
+ return f(*args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^
+ File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/blueprints/admin_unified.py", line 350, in advanced_settings
+ return render_template('admin_advanced_settings.html', stats=stats, optimization_settings=optimization_settings)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/core/.local/lib/python3.11/site-packages/flask/templating.py", line 152, in render_template
+ return _render(app, template, context)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/core/.local/lib/python3.11/site-packages/flask/templating.py", line 133, in _render
+ rv = template.render(context)
+ ^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/core/.local/lib/python3.11/site-packages/jinja2/environment.py", line 1301, in render
+ self.environment.handle_exception()
+ File "/home/core/.local/lib/python3.11/site-packages/jinja2/environment.py", line 936, in handle_exception
+ raise rewrite_traceback_stack(source=source)
+ File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/admin_advanced_settings.html", line 1, in top-level template code
+ {% extends "base.html" %}
+ File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/base.html", line 459, in top-level template code
+ {% block content %}{% endblock %}
+ ^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/admin_advanced_settings.html", line 532, in block 'content'
+ {{ maintenance_info.last_backup }}
+ ^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/core/.local/lib/python3.11/site-packages/jinja2/environment.py", line 485, in getattr
+ return getattr(obj, attribute)
+ ^^^^^^^^^^^^^^^^^^^^^^^
+jinja2.exceptions.UndefinedError: 'maintenance_info' is undefined
+
+2025-06-16 01:00:25 - [app] app - [DEBUG] DEBUG - Response: 500
+2025-06-16 01:00:25 - [app] app - [DEBUG] DEBUG - Request: GET /sw.js
+2025-06-16 01:00:25 - [app] app - [DEBUG] DEBUG - Response: 304
+2025-06-16 01:00:26 - [app] app - [DEBUG] DEBUG - Request: GET /sw.js
+2025-06-16 01:00:26 - [app] app - [DEBUG] DEBUG - Response: 304
+2025-06-16 01:00:31 - [app] app - [DEBUG] DEBUG - Request: GET /request
+2025-06-16 01:00:31 - [app] app - [INFO] INFO - Locating template 'guest_request.html':
+ 1: trying loader of application '__main__'
+ class: jinja2.loaders.FileSystemLoader
+ encoding: 'utf-8'
+ followlinks: False
+ searchpath:
+ - /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates
+ -> found ('/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/guest_request.html')
+2025-06-16 01:00:31 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:00:31 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications
+2025-06-16 01:00:31 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:00:33 - [app] app - [DEBUG] DEBUG - Request: GET /sw.js
+2025-06-16 01:00:33 - [app] app - [DEBUG] DEBUG - Response: 304
+2025-06-16 01:00:34 - [app] app - [DEBUG] DEBUG - Request: GET /stats
+2025-06-16 01:00:34 - [app] app - [INFO] INFO - Locating template 'stats.html':
+ 1: trying loader of application '__main__'
+ class: jinja2.loaders.FileSystemLoader
+ encoding: 'utf-8'
+ followlinks: False
+ searchpath:
+ - /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates
+ -> found ('/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/stats.html')
+2025-06-16 01:00:34 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:00:35 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications
+2025-06-16 01:00:35 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:00:36 - [app] app - [DEBUG] DEBUG - Request: GET /sw.js
+2025-06-16 01:00:36 - [app] app - [DEBUG] DEBUG - Response: 304
+2025-06-16 01:00:36 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications
+2025-06-16 01:00:36 - [app] app - [DEBUG] DEBUG - Request: GET /api/energy/dashboard
+2025-06-16 01:00:36 - [app] app - [DEBUG] DEBUG - Request: GET /api/energy/statistics
+2025-06-16 01:00:36 - [app] app - [DEBUG] DEBUG - Request: GET /api/energy/live
+2025-06-16 01:00:36 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:00:36 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:00:36 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:00:36 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:00:37 - [app] app - [DEBUG] DEBUG - Request: GET /calendar
+2025-06-16 01:00:37 - [app] app - [INFO] INFO - Locating template 'calendar.html':
+ 1: trying loader of application '__main__'
+ class: jinja2.loaders.FileSystemLoader
+ encoding: 'utf-8'
+ followlinks: False
+ searchpath:
+ - /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates
+ -> found ('/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/calendar.html')
+2025-06-16 01:00:37 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:00:37 - [app] app - [DEBUG] DEBUG - Request: GET /api/calendar/events
+2025-06-16 01:00:37 - [app] app - [DEBUG] DEBUG - Request: GET /api/calendar/statistics
+2025-06-16 01:00:37 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications
+2025-06-16 01:00:37 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:00:37 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:00:38 - [app] app - [DEBUG] DEBUG - Request: GET /sw.js
+2025-06-16 01:00:38 - [app] app - [DEBUG] DEBUG - Response: 304
+2025-06-16 01:00:38 - [app] app - [DEBUG] DEBUG - Request: GET /printers
+2025-06-16 01:00:38 - [app] app - [INFO] INFO - Locating template 'printers.html':
+ 1: trying loader of application '__main__'
+ class: jinja2.loaders.FileSystemLoader
+ encoding: 'utf-8'
+ followlinks: False
+ searchpath:
+ - /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates
+ -> found ('/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/printers.html')
+2025-06-16 01:00:38 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:00:39 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers
+2025-06-16 01:00:39 - [app] app - [INFO] INFO - ✅ API: 6 Drucker abgerufen (include_inactive=False)
+2025-06-16 01:00:39 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:00:39 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers
+2025-06-16 01:00:39 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications
+2025-06-16 01:00:39 - [app] app - [INFO] INFO - ✅ API: 6 Drucker abgerufen (include_inactive=False)
+2025-06-16 01:00:39 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:00:39 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:00:39 - [app] app - [DEBUG] DEBUG - Request: GET /sw.js
+2025-06-16 01:00:39 - [app] app - [DEBUG] DEBUG - Response: 304
+2025-06-16 01:00:39 - [app] app - [DEBUG] DEBUG - Request: GET /dashboard
+2025-06-16 01:00:39 - [app] app - [INFO] INFO - Locating template 'dashboard.html':
+ 1: trying loader of application '__main__'
+ class: jinja2.loaders.FileSystemLoader
+ encoding: 'utf-8'
+ followlinks: False
+ searchpath:
+ - /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates
+ -> found ('/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/dashboard.html')
+2025-06-16 01:00:39 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:00:39 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications
+2025-06-16 01:00:39 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:00:40 - [app] app - [INFO] INFO - Steckdosen-Status geloggt: Drucker 1, Status: unreachable, Quelle: system
+2025-06-16 01:00:40 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:00:41 - [app] app - [DEBUG] DEBUG - Request: GET /sw.js
+2025-06-16 01:00:41 - [app] app - [DEBUG] DEBUG - Response: 304
+2025-06-16 01:00:44 - [app] app - [DEBUG] DEBUG - Request: GET /requests/overview
+2025-06-16 01:00:44 - [app] app - [INFO] INFO - Locating template 'guest_requests_overview.html':
+ 1: trying loader of application '__main__'
+ class: jinja2.loaders.FileSystemLoader
+ encoding: 'utf-8'
+ followlinks: False
+ searchpath:
+ - /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates
+ -> found ('/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/guest_requests_overview.html')
+2025-06-16 01:00:44 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:00:44 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications
+2025-06-16 01:00:44 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:00:46 - [app] app - [DEBUG] DEBUG - Request: GET /sw.js
+2025-06-16 01:00:46 - [app] app - [DEBUG] DEBUG - Response: 304
+2025-06-16 01:00:48 - [app] app - [DEBUG] DEBUG - Request: GET /dashboard
+2025-06-16 01:00:48 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:00:48 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications
+2025-06-16 01:00:48 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:00:50 - [app] app - [DEBUG] DEBUG - Request: GET /sw.js
+2025-06-16 01:00:50 - [app] app - [DEBUG] DEBUG - Response: 304
+2025-06-16 01:00:52 - [app] app - [DEBUG] DEBUG - Request: POST /auth/logout
+2025-06-16 01:00:52 - [app] app - [DEBUG] DEBUG - Response: 302
+2025-06-16 01:00:52 - [app] app - [DEBUG] DEBUG - Request: GET /auth/login
+2025-06-16 01:00:52 - [app] app - [INFO] INFO - Locating template 'login.html':
+ 1: trying loader of application '__main__'
+ class: jinja2.loaders.FileSystemLoader
+ encoding: 'utf-8'
+ followlinks: False
+ searchpath:
+ - /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates
+ -> found ('/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/login.html')
+2025-06-16 01:00:52 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:00:54 - [app] app - [DEBUG] DEBUG - Request: GET /sw.js
+2025-06-16 01:00:54 - [app] app - [DEBUG] DEBUG - Response: 304
+2025-06-16 01:00:57 - [app] app - [DEBUG] DEBUG - Request: GET /request
+2025-06-16 01:00:57 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:00:59 - [app] app - [DEBUG] DEBUG - Request: GET /sw.js
+2025-06-16 01:00:59 - [app] app - [DEBUG] DEBUG - Response: 304
+2025-06-16 01:01:00 - [app] app - [DEBUG] DEBUG - Request: POST /request
+2025-06-16 01:01:00 - [app] app - [INFO] INFO - 6-stelliger OTP generiert für Guest Request 2
+2025-06-16 01:01:00 - [app] app - [DEBUG] DEBUG - Response: 302
+2025-06-16 01:01:00 - [app] app - [DEBUG] DEBUG - Request: GET /request/2
+2025-06-16 01:01:00 - [app] app - [INFO] INFO - Locating template 'guest_status.html':
+ 1: trying loader of application '__main__'
+ class: jinja2.loaders.FileSystemLoader
+ encoding: 'utf-8'
+ followlinks: False
+ searchpath:
+ - /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates
+ -> found ('/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/guest_status.html')
+2025-06-16 01:01:00 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:01:04 - [app] app - [DEBUG] DEBUG - Request: GET /request/2
+2025-06-16 01:01:04 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:01:06 - [app] app - [DEBUG] DEBUG - Request: GET /sw.js
+2025-06-16 01:01:06 - [app] app - [DEBUG] DEBUG - Response: 304
+2025-06-16 01:01:07 - [app] app - [DEBUG] DEBUG - Request: GET /auth/login
+2025-06-16 01:01:07 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:01:08 - [app] app - [DEBUG] DEBUG - Request: POST /auth/login
+2025-06-16 01:01:09 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:01:09 - [app] app - [DEBUG] DEBUG - Request: GET /sw.js
+2025-06-16 01:01:09 - [app] app - [DEBUG] DEBUG - Response: 304
+2025-06-16 01:01:10 - [app] app - [DEBUG] DEBUG - Request: GET /
+2025-06-16 01:01:10 - [app] app - [DEBUG] DEBUG - Response: 302
+2025-06-16 01:01:10 - [app] app - [DEBUG] DEBUG - Request: GET /dashboard
+2025-06-16 01:01:10 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:01:10 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications
+2025-06-16 01:01:10 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:01:12 - [app] app - [DEBUG] DEBUG - Request: GET /sw.js
+2025-06-16 01:01:12 - [app] app - [DEBUG] DEBUG - Response: 304
+2025-06-16 01:01:20 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications
+2025-06-16 01:01:20 - [app] app - [DEBUG] DEBUG - Request: GET /api/stats
+2025-06-16 01:01:20 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:01:20 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:01:20 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/system-health
+2025-06-16 01:01:20 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1')
+2025-06-16 01:01:20 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:01:21 - [app] app - [DEBUG] DEBUG - Request: GET /sw.js
+2025-06-16 01:01:21 - [app] app - [DEBUG] DEBUG - Response: 304
+2025-06-16 01:01:23 - [app] app - [DEBUG] DEBUG - Request: GET /admin/guest-requests
+2025-06-16 01:01:23 - [app] app - [INFO] INFO - Locating template 'admin_guest_requests.html':
+ 1: trying loader of application '__main__'
+ class: jinja2.loaders.FileSystemLoader
+ encoding: 'utf-8'
+ followlinks: False
+ searchpath:
+ - /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates
+ -> found ('/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/admin_guest_requests.html')
+2025-06-16 01:01:23 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:01:23 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications
+2025-06-16 01:01:23 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:01:23 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/requests
+2025-06-16 01:01:23 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:01:25 - [app] app - [DEBUG] DEBUG - Request: GET /sw.js
+2025-06-16 01:01:25 - [app] app - [DEBUG] DEBUG - Response: 304
+2025-06-16 01:01:29 - [app] app - [DEBUG] DEBUG - Request: POST /api/requests/2/approve
+2025-06-16 01:01:30 - [app] app - [INFO] INFO - 6-stelliger OTP generiert für Guest Request 2
+2025-06-16 01:01:30 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:01:30 - [app] app - [DEBUG] DEBUG - Request: GET /api/admin/requests
+2025-06-16 01:01:30 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:01:39 - [app] app - [DEBUG] DEBUG - Request: GET /requests/overview
+2025-06-16 01:01:39 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:01:39 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications
+2025-06-16 01:01:39 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:01:40 - [app] app - [DEBUG] DEBUG - Request: GET /sw.js
+2025-06-16 01:01:40 - [app] app - [DEBUG] DEBUG - Response: 304
+2025-06-16 01:01:41 - [app] app - [DEBUG] DEBUG - Request: POST /api/guest/start-job
+2025-06-16 01:01:42 - [app] app - [WARNING] WARNING - Ungültiger OTP-Code für Guest Request 1
+2025-06-16 01:01:42 - [app] app - [INFO] INFO - OTP erfolgreich verifiziert für Guest Request 2
+2025-06-16 01:01:42 - [app] app - [INFO] INFO - OTP als verwendet markiert für Guest Request 2
+2025-06-16 01:01:50 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
+2025-06-16 01:01:50 - [app] app - [DEBUG] DEBUG - Response: 500
+2025-06-16 01:01:52 - [app] app - [DEBUG] DEBUG - Request: GET /printers
+2025-06-16 01:01:52 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:01:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers
+2025-06-16 01:01:52 - [app] app - [INFO] INFO - ✅ API: 6 Drucker abgerufen (include_inactive=False)
+2025-06-16 01:01:52 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:01:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers
+2025-06-16 01:01:52 - [app] app - [INFO] INFO - ✅ API: 6 Drucker abgerufen (include_inactive=False)
+2025-06-16 01:01:52 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:01:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications
+2025-06-16 01:01:52 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:01:53 - [app] app - [DEBUG] DEBUG - Request: GET /calendar
+2025-06-16 01:01:53 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:01:53 - [app] app - [DEBUG] DEBUG - Request: GET /api/calendar/events
+2025-06-16 01:01:53 - [app] app - [DEBUG] DEBUG - Request: GET /api/calendar/statistics
+2025-06-16 01:01:53 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications
+2025-06-16 01:01:53 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:01:53 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:01:54 - [app] app - [DEBUG] DEBUG - Request: GET /sw.js
+2025-06-16 01:01:54 - [app] app - [DEBUG] DEBUG - Response: 304
+2025-06-16 01:01:55 - [app] app - [DEBUG] DEBUG - Request: GET /sw.js
+2025-06-16 01:01:55 - [app] app - [DEBUG] DEBUG - Response: 304
+2025-06-16 01:01:56 - [app] app - [INFO] INFO - Steckdosen-Status geloggt: Drucker 1, Status: unreachable, Quelle: system
+2025-06-16 01:01:56 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:01:56 - [app] app - [DEBUG] DEBUG - Request: GET /api/calendar/statistics
+2025-06-16 01:01:56 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:02:00 - [app] app - [DEBUG] DEBUG - Request: GET /api/calendar/events
+2025-06-16 01:02:00 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:02:00 - [app] app - [DEBUG] DEBUG - Request: GET /api/calendar/statistics
+2025-06-16 01:02:00 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:02:09 - [app] app - [DEBUG] DEBUG - Request: GET /jobs
+2025-06-16 01:02:09 - [app] app - [INFO] INFO - Locating template 'jobs.html':
+ 1: trying loader of application '__main__'
+ class: jinja2.loaders.FileSystemLoader
+ encoding: 'utf-8'
+ followlinks: False
+ searchpath:
+ - /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates
+ -> found ('/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/jobs.html')
+2025-06-16 01:02:09 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:02:09 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications
+2025-06-16 01:02:09 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:02:09 - [app] app - [DEBUG] DEBUG - Request: GET /api/jobs
+2025-06-16 01:02:09 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:02:09 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers
+2025-06-16 01:02:09 - [app] app - [INFO] INFO - ✅ API: 6 Drucker abgerufen (include_inactive=False)
+2025-06-16 01:02:09 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:02:11 - [app] app - [DEBUG] DEBUG - Request: GET /sw.js
+2025-06-16 01:02:11 - [app] app - [DEBUG] DEBUG - Response: 304
+2025-06-16 01:02:13 - [app] app - [DEBUG] DEBUG - Request: DELETE /api/jobs/1
+2025-06-16 01:02:13 - [app] app - [DEBUG] DEBUG - Response: 500
+2025-06-16 01:02:16 - [app] app - [DEBUG] DEBUG - Request: DELETE /api/jobs/2
+2025-06-16 01:02:16 - [app] app - [DEBUG] DEBUG - Response: 500
+2025-06-16 01:02:18 - [app] app - [DEBUG] DEBUG - Request: GET /jobs
+2025-06-16 01:02:18 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:02:18 - [app] app - [DEBUG] DEBUG - Request: GET /.well-known/appspecific/com.chrome.devtools.json
+2025-06-16 01:02:18 - [app] app - [INFO] INFO - Not Found (404): http://127.0.0.1:5000/.well-known/appspecific/com.chrome.devtools.json
+2025-06-16 01:02:18 - [app] app - [INFO] INFO - Locating template 'errors/404.html':
+ 1: trying loader of application '__main__'
+ class: jinja2.loaders.FileSystemLoader
+ encoding: 'utf-8'
+ followlinks: False
+ searchpath:
+ - /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates
+ -> found ('/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/templates/errors/404.html')
+2025-06-16 01:02:18 - [app] app - [DEBUG] DEBUG - Response: 404
+2025-06-16 01:02:24 - [app] app - [ERROR] ERROR - CSRF-Fehler für /api/printers: The CSRF session token is missing.
+2025-06-16 01:02:24 - [app] app - [ERROR] ERROR - Request Headers: {'Host': '127.0.0.1:5000', 'User-Agent': 'curl/7.79.1', 'Accept': '*/*', 'Content-Type': 'application/json', 'X-Csrftoken': 'test', 'Content-Length': '81'}
+2025-06-16 01:02:24 - [app] app - [ERROR] ERROR - Request Form: {}
+2025-06-16 01:02:24 - [app] app - [DEBUG] DEBUG - CSRF-Token generiert: IjdkZWU0Mz...
+2025-06-16 01:02:24 - [app] app - [DEBUG] DEBUG - Response: 400
+2025-06-16 01:02:39 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications
+2025-06-16 01:02:39 - [app] app - [DEBUG] DEBUG - Request: GET /api/jobs
+2025-06-16 01:02:39 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:02:39 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:03:09 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications
+2025-06-16 01:03:09 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:03:09 - [app] app - [DEBUG] DEBUG - Request: GET /api/jobs
+2025-06-16 01:03:09 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:03:39 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications
+2025-06-16 01:03:39 - [app] app - [DEBUG] DEBUG - Request: GET /api/jobs
+2025-06-16 01:03:39 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:03:39 - [app] app - [DEBUG] DEBUG - Response: 200
+2025-06-16 01:03:49 - [app] app - [INFO] INFO - [SHUTDOWN] 🧹 Cleanup wird ausgeführt...
+2025-06-16 01:03:49 - [app] app - [INFO] INFO - [SHUTDOWN] ✅ Queue Manager gestoppt
+2025-06-16 01:03:49 - [app] app - [ERROR] ERROR - [SHUTDOWN] ❌ Cleanup-Fehler: 'BackgroundTaskScheduler' object has no attribute 'shutdown'
+2025-06-16 01:03:49 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db
+2025-06-16 01:03:50 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: development
+2025-06-16 01:03:50 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: False
+2025-06-16 01:03:50 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration
+2025-06-16 01:03:50 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration
+2025-06-16 01:03:50 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ MYP Development Environment Konfiguration aktiviert
+2025-06-16 01:03:50 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: Development/Testing
+2025-06-16 01:03:50 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: True
+2025-06-16 01:03:50 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: True
+2025-06-16 01:03:50 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O)
+2025-06-16 01:03:50 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: 0 erstellt, 0 aktualisiert
+2025-06-16 01:03:50 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP DEVELOPMENT-Umgebung
+2025-06-16 01:03:50 - [app] app - [INFO] INFO - [STARTUP] 🏢 Mercedes-Benz TBA Marienfelde
+2025-06-16 01:03:50 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: True
+2025-06-16 01:03:50 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank...
+2025-06-16 01:03:50 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert
+2025-06-16 01:03:50 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert
+2025-06-16 01:03:50 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin...
+2025-06-16 01:03:51 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt.
+2025-06-16 01:03:51 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft
+2025-06-16 01:03:51 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker...
+2025-06-16 01:03:51 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100)
+2025-06-16 01:03:51 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101)
+2025-06-16 01:03:51 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102)
+2025-06-16 01:03:51 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103)
+2025-06-16 01:03:51 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104)
+2025-06-16 01:03:51 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106)
+2025-06-16 01:03:51 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert
+2025-06-16 01:03:51 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert
+2025-06-16 01:03:51 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105)
+2025-06-16 01:03:51 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert
+2025-06-16 01:03:51 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager...
+2025-06-16 01:03:51 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet
+2025-06-16 01:03:51 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler...
+2025-06-16 01:03:51 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet
+2025-06-16 01:03:51 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://0.0.0.0:5000
+2025-06-16 01:03:56 - [app] app - [INFO] INFO - [SHUTDOWN] 🧹 Cleanup wird ausgeführt...
+2025-06-16 01:03:56 - [app] app - [INFO] INFO - [SHUTDOWN] ✅ Queue Manager gestoppt
+2025-06-16 01:03:56 - [app] app - [ERROR] ERROR - [SHUTDOWN] ❌ Cleanup-Fehler: 'BackgroundTaskScheduler' object has no attribute 'shutdown'
+2025-06-16 01:03:56 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db
+2025-06-16 01:03:57 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: development
+2025-06-16 01:03:57 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: False
+2025-06-16 01:03:57 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration
+2025-06-16 01:03:57 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration
+2025-06-16 01:03:57 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ MYP Development Environment Konfiguration aktiviert
+2025-06-16 01:03:57 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: Development/Testing
+2025-06-16 01:03:57 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: True
+2025-06-16 01:03:57 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: True
+2025-06-16 01:03:57 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O)
+2025-06-16 01:03:57 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: 0 erstellt, 0 aktualisiert
+2025-06-16 01:03:57 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP DEVELOPMENT-Umgebung
+2025-06-16 01:03:57 - [app] app - [INFO] INFO - [STARTUP] 🏢 Mercedes-Benz TBA Marienfelde
+2025-06-16 01:03:57 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: True
+2025-06-16 01:03:57 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank...
+2025-06-16 01:03:57 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert
+2025-06-16 01:03:57 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert
+2025-06-16 01:03:57 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin...
+2025-06-16 01:03:58 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt.
+2025-06-16 01:03:58 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft
+2025-06-16 01:03:58 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker...
+2025-06-16 01:03:58 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100)
+2025-06-16 01:03:58 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101)
+2025-06-16 01:03:58 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102)
+2025-06-16 01:03:58 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103)
+2025-06-16 01:03:58 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104)
+2025-06-16 01:03:58 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106)
+2025-06-16 01:03:58 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert
+2025-06-16 01:03:58 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert
+2025-06-16 01:03:58 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105)
+2025-06-16 01:03:58 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert
+2025-06-16 01:03:58 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager...
+2025-06-16 01:03:58 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet
+2025-06-16 01:03:58 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler...
+2025-06-16 01:03:58 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet
+2025-06-16 01:03:58 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://0.0.0.0:5000
+2025-06-16 01:04:09 - [app] app - [INFO] INFO - [SHUTDOWN] 🧹 Cleanup wird ausgeführt...
+2025-06-16 01:04:09 - [app] app - [INFO] INFO - [SHUTDOWN] ✅ Queue Manager gestoppt
+2025-06-16 01:04:09 - [app] app - [ERROR] ERROR - [SHUTDOWN] ❌ Cleanup-Fehler: 'BackgroundTaskScheduler' object has no attribute 'shutdown'
+2025-06-16 01:04:10 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db
+2025-06-16 01:04:11 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: development
+2025-06-16 01:04:11 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: False
+2025-06-16 01:04:11 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration
+2025-06-16 01:04:11 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration
+2025-06-16 01:04:11 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ MYP Development Environment Konfiguration aktiviert
+2025-06-16 01:04:11 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: Development/Testing
+2025-06-16 01:04:11 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: True
+2025-06-16 01:04:11 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: True
+2025-06-16 01:04:11 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O)
+2025-06-16 01:04:11 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: 0 erstellt, 0 aktualisiert
+2025-06-16 01:04:11 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP DEVELOPMENT-Umgebung
+2025-06-16 01:04:11 - [app] app - [INFO] INFO - [STARTUP] 🏢 Mercedes-Benz TBA Marienfelde
+2025-06-16 01:04:11 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: True
+2025-06-16 01:04:11 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank...
+2025-06-16 01:04:11 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert
+2025-06-16 01:04:11 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert
+2025-06-16 01:04:11 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin...
+2025-06-16 01:04:11 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt.
+2025-06-16 01:04:11 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft
+2025-06-16 01:04:11 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker...
+2025-06-16 01:04:11 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100)
+2025-06-16 01:04:11 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101)
+2025-06-16 01:04:11 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102)
+2025-06-16 01:04:11 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103)
+2025-06-16 01:04:11 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104)
+2025-06-16 01:04:11 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106)
+2025-06-16 01:04:11 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert
+2025-06-16 01:04:11 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert
+2025-06-16 01:04:11 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105)
+2025-06-16 01:04:11 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert
+2025-06-16 01:04:11 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager...
+2025-06-16 01:04:11 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet
+2025-06-16 01:04:11 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler...
+2025-06-16 01:04:11 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet
+2025-06-16 01:04:11 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://0.0.0.0:5000
diff --git a/backend/logs/auth/auth.log b/backend/logs/auth/auth.log
index bf8929e5a..02d157523 100644
--- a/backend/logs/auth/auth.log
+++ b/backend/logs/auth/auth.log
@@ -88,3 +88,6 @@ WHERE users.username = ? OR users.email = ?
2025-06-15 23:56:11 - [auth] auth - [INFO] INFO - Benutzer admin@mercedes-benz.com hat sich abgemeldet
2025-06-15 23:56:36 - [auth] auth - [WARNING] WARNING - JSON-Parsing fehlgeschlagen: 400 Bad Request: Failed to decode JSON object: Expecting value: line 1 column 1 (char 0)
2025-06-15 23:56:36 - [auth] auth - [INFO] INFO - Benutzer admin@mercedes-benz.com hat sich erfolgreich angemeldet
+2025-06-16 01:00:52 - [auth] auth - [INFO] INFO - Benutzer admin@mercedes-benz.com hat sich abgemeldet
+2025-06-16 01:01:08 - [auth] auth - [WARNING] WARNING - JSON-Parsing fehlgeschlagen: 400 Bad Request: Failed to decode JSON object: Expecting value: line 1 column 1 (char 0)
+2025-06-16 01:01:09 - [auth] auth - [INFO] INFO - Benutzer admin@mercedes-benz.com hat sich erfolgreich angemeldet
diff --git a/backend/logs/calendar/calendar.log b/backend/logs/calendar/calendar.log
index b1465786d..1b0e004ec 100644
--- a/backend/logs/calendar/calendar.log
+++ b/backend/logs/calendar/calendar.log
@@ -29,3 +29,7 @@
2025-06-16 00:45:34 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 1 Einträge für Zeitraum 2025-06-14 22:00:00+00:00 bis 2025-06-21 22:00:00+00:00
2025-06-16 00:48:18 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 1 Einträge für Zeitraum 2025-06-14 22:00:00+00:00 bis 2025-06-21 22:00:00+00:00
2025-06-16 00:53:40 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 1 Einträge für Zeitraum 2025-06-14 22:00:00+00:00 bis 2025-06-21 22:00:00+00:00
+2025-06-16 01:00:02 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 1 Einträge für Zeitraum 2025-06-14 22:00:00+00:00 bis 2025-06-21 22:00:00+00:00
+2025-06-16 01:00:40 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 1 Einträge für Zeitraum 2025-06-14 22:00:00+00:00 bis 2025-06-21 22:00:00+00:00
+2025-06-16 01:01:56 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 2 Einträge für Zeitraum 2025-06-14 22:00:00+00:00 bis 2025-06-21 22:00:00+00:00
+2025-06-16 01:02:00 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 44 Einträge für Zeitraum 2025-06-14 22:00:00+00:00 bis 2025-06-21 22:00:00+00:00
diff --git a/backend/logs/data_management/data_management.log b/backend/logs/data_management/data_management.log
index 5a018c8a8..189a378a7 100644
--- a/backend/logs/data_management/data_management.log
+++ b/backend/logs/data_management/data_management.log
@@ -495,3 +495,21 @@
2025-06-16 00:52:30 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
2025-06-16 00:52:31 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert
2025-06-16 00:52:31 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
+2025-06-16 00:54:37 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert
+2025-06-16 00:54:37 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
+2025-06-16 00:54:51 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert
+2025-06-16 00:54:51 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
+2025-06-16 00:59:48 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert
+2025-06-16 00:59:48 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
+2025-06-16 00:59:50 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert
+2025-06-16 00:59:50 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
+2025-06-16 01:00:14 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert
+2025-06-16 01:00:14 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
+2025-06-16 01:00:18 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert
+2025-06-16 01:00:18 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
+2025-06-16 01:03:50 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert
+2025-06-16 01:03:50 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
+2025-06-16 01:03:57 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert
+2025-06-16 01:03:57 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
+2025-06-16 01:04:10 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert
+2025-06-16 01:04:10 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
diff --git a/backend/logs/energy_monitoring/energy_monitoring.log b/backend/logs/energy_monitoring/energy_monitoring.log
index 25b715f98..3d2d6dd8d 100644
--- a/backend/logs/energy_monitoring/energy_monitoring.log
+++ b/backend/logs/energy_monitoring/energy_monitoring.log
@@ -336,3 +336,19 @@
2025-06-16 00:52:34 - [energy_monitoring] energy_monitoring - [INFO] INFO - [OK] API-Live-Energiedaten 'api_live_energy_data' erfolgreich in 114.17ms
2025-06-16 00:52:34 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiestatistiken erfolgreich erstellt für Zeitraum: today
2025-06-16 00:52:34 - [energy_monitoring] energy_monitoring - [INFO] INFO - [OK] API-Energiestatistiken 'api_energy_statistics' erfolgreich in 153.70ms
+2025-06-16 00:54:38 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert
+2025-06-16 00:54:54 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert
+2025-06-16 00:59:48 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert
+2025-06-16 00:59:52 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert
+2025-06-16 01:00:16 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert
+2025-06-16 01:00:19 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert
+2025-06-16 01:00:36 - [energy_monitoring] energy_monitoring - [INFO] INFO - 📊 API-Energiemonitoring-Dashboard von admin
+2025-06-16 01:00:36 - [energy_monitoring] energy_monitoring - [INFO] INFO - 📈 API-Energiestatistiken (today) von admin
+2025-06-16 01:00:36 - [energy_monitoring] energy_monitoring - [INFO] INFO - [OK] API-Live-Energiedaten 'api_live_energy_data' erfolgreich in 4.62ms
+2025-06-16 01:00:36 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiestatistiken erfolgreich erstellt für Zeitraum: today
+2025-06-16 01:00:36 - [energy_monitoring] energy_monitoring - [INFO] INFO - [OK] API-Energiestatistiken 'api_energy_statistics' erfolgreich in 9.13ms
+2025-06-16 01:00:36 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Dashboard-Daten erfolgreich erstellt: 0 Geräte online
+2025-06-16 01:00:36 - [energy_monitoring] energy_monitoring - [INFO] INFO - [OK] API-Energiemonitoring-Dashboard 'api_energy_dashboard' erfolgreich in 15.18ms
+2025-06-16 01:03:50 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert
+2025-06-16 01:03:57 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert
+2025-06-16 01:04:11 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert
diff --git a/backend/logs/guest/guest.log b/backend/logs/guest/guest.log
index 0ac80239c..bec73b5fb 100644
--- a/backend/logs/guest/guest.log
+++ b/backend/logs/guest/guest.log
@@ -55,3 +55,8 @@ WHERE user_permissions.can_approve_jobs = 1]
2025-06-15 23:55:56 - [guest] guest - [INFO] INFO - Gastanfrage 1 genehmigt von Admin 1 (admin), Drucker: Drucker 1
2025-06-15 23:56:30 - [guest] guest - [WARNING] WARNING - Fehler beim Einschalten des Druckers: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
2025-06-15 23:56:30 - [guest] guest - [ERROR] ERROR - Fehler beim Starten des Jobs mit Code: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
+2025-06-16 01:01:00 - [guest] guest - [INFO] INFO - Neue Gastanfrage erstellt: ID 2, Name: testeadmin@example.com, OTP generiert
+2025-06-16 01:01:29 - [guest] guest - [INFO] INFO - Automatisch Drucker 1 (Drucker 1) für Gastanfrage 2 zugewiesen
+2025-06-16 01:01:30 - [guest] guest - [INFO] INFO - Gastanfrage 2 genehmigt von Admin 1 (admin), Drucker: Drucker 1
+2025-06-16 01:01:50 - [guest] guest - [WARNING] WARNING - Fehler beim Einschalten des Druckers: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
+2025-06-16 01:01:50 - [guest] guest - [ERROR] ERROR - Fehler beim Starten des Jobs mit Code: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
diff --git a/backend/logs/hardware_integration/hardware_integration.log b/backend/logs/hardware_integration/hardware_integration.log
index 7ab8ff3fb..160905f97 100644
--- a/backend/logs/hardware_integration/hardware_integration.log
+++ b/backend/logs/hardware_integration/hardware_integration.log
@@ -1815,3 +1815,66 @@
2025-06-16 00:52:34 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 6 nicht abrufen: module 'PyP100.PyP100' has no attribute 'P110'
2025-06-16 00:52:34 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Energiestatistiken erfolgreich gesammelt: 0/6 Geräte online
2025-06-16 00:52:34 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Gesamtverbrauch: 0.0W aktuell, 0.0Wh heute
+2025-06-16 00:54:37 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ PyP100 (TP-Link Tapo) verfügbar
+2025-06-16 00:54:37 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor initialisiert
+2025-06-16 00:54:37 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert
+2025-06-16 00:54:37 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion)
+2025-06-16 00:54:51 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ PyP100 (TP-Link Tapo) verfügbar
+2025-06-16 00:54:51 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor initialisiert
+2025-06-16 00:54:51 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert
+2025-06-16 00:54:51 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion)
+2025-06-16 00:59:48 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ PyP100 (TP-Link Tapo) verfügbar
+2025-06-16 00:59:48 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor initialisiert
+2025-06-16 00:59:48 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert
+2025-06-16 00:59:48 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion)
+2025-06-16 00:59:50 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ PyP100 (TP-Link Tapo) verfügbar
+2025-06-16 00:59:50 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor initialisiert
+2025-06-16 00:59:50 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert
+2025-06-16 00:59:50 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion)
+2025-06-16 01:00:14 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ PyP100 (TP-Link Tapo) verfügbar
+2025-06-16 01:00:14 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor initialisiert
+2025-06-16 01:00:14 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert
+2025-06-16 01:00:14 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion)
+2025-06-16 01:00:18 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ PyP100 (TP-Link Tapo) verfügbar
+2025-06-16 01:00:18 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor initialisiert
+2025-06-16 01:00:18 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert
+2025-06-16 01:00:18 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion)
+2025-06-16 01:00:36 - [hardware_integration] hardware_integration - [INFO] INFO - 🔋 Sammle Energiestatistiken von allen P110 Steckdosen...
+2025-06-16 01:00:36 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 1 nicht abrufen: module 'PyP100.PyP100' has no attribute 'P110'
+2025-06-16 01:00:36 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 2 nicht abrufen: module 'PyP100.PyP100' has no attribute 'P110'
+2025-06-16 01:00:36 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 3 nicht abrufen: module 'PyP100.PyP100' has no attribute 'P110'
+2025-06-16 01:00:36 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 4 nicht abrufen: module 'PyP100.PyP100' has no attribute 'P110'
+2025-06-16 01:00:36 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 5 nicht abrufen: module 'PyP100.PyP100' has no attribute 'P110'
+2025-06-16 01:00:36 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 6 nicht abrufen: module 'PyP100.PyP100' has no attribute 'P110'
+2025-06-16 01:00:36 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Energiestatistiken erfolgreich gesammelt: 0/6 Geräte online
+2025-06-16 01:00:36 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Gesamtverbrauch: 0.0W aktuell, 0.0Wh heute
+2025-06-16 01:00:36 - [hardware_integration] hardware_integration - [INFO] INFO - 🔋 Sammle Energiestatistiken von allen P110 Steckdosen...
+2025-06-16 01:00:36 - [hardware_integration] hardware_integration - [INFO] INFO - 🔋 Sammle Energiestatistiken von allen P110 Steckdosen...
+2025-06-16 01:00:36 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 1 nicht abrufen: module 'PyP100.PyP100' has no attribute 'P110'
+2025-06-16 01:00:36 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 2 nicht abrufen: module 'PyP100.PyP100' has no attribute 'P110'
+2025-06-16 01:00:36 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 3 nicht abrufen: module 'PyP100.PyP100' has no attribute 'P110'
+2025-06-16 01:00:36 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 4 nicht abrufen: module 'PyP100.PyP100' has no attribute 'P110'
+2025-06-16 01:00:36 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 5 nicht abrufen: module 'PyP100.PyP100' has no attribute 'P110'
+2025-06-16 01:00:36 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 6 nicht abrufen: module 'PyP100.PyP100' has no attribute 'P110'
+2025-06-16 01:00:36 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Energiestatistiken erfolgreich gesammelt: 0/6 Geräte online
+2025-06-16 01:00:36 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Gesamtverbrauch: 0.0W aktuell, 0.0Wh heute
+2025-06-16 01:00:36 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 1 nicht abrufen: module 'PyP100.PyP100' has no attribute 'P110'
+2025-06-16 01:00:36 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 2 nicht abrufen: module 'PyP100.PyP100' has no attribute 'P110'
+2025-06-16 01:00:36 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 3 nicht abrufen: module 'PyP100.PyP100' has no attribute 'P110'
+2025-06-16 01:00:36 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 4 nicht abrufen: module 'PyP100.PyP100' has no attribute 'P110'
+2025-06-16 01:00:36 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 5 nicht abrufen: module 'PyP100.PyP100' has no attribute 'P110'
+2025-06-16 01:00:36 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 6 nicht abrufen: module 'PyP100.PyP100' has no attribute 'P110'
+2025-06-16 01:00:36 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Energiestatistiken erfolgreich gesammelt: 0/6 Geräte online
+2025-06-16 01:00:36 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Gesamtverbrauch: 0.0W aktuell, 0.0Wh heute
+2025-06-16 01:03:50 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ PyP100 (TP-Link Tapo) verfügbar
+2025-06-16 01:03:50 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor initialisiert
+2025-06-16 01:03:50 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert
+2025-06-16 01:03:50 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion)
+2025-06-16 01:03:57 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ PyP100 (TP-Link Tapo) verfügbar
+2025-06-16 01:03:57 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor initialisiert
+2025-06-16 01:03:57 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert
+2025-06-16 01:03:57 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion)
+2025-06-16 01:04:10 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ PyP100 (TP-Link Tapo) verfügbar
+2025-06-16 01:04:10 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor initialisiert
+2025-06-16 01:04:10 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert
+2025-06-16 01:04:10 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion)
diff --git a/backend/logs/job_queue_system/job_queue_system.log b/backend/logs/job_queue_system/job_queue_system.log
index 1fb99cd76..8dcf6e5b3 100644
--- a/backend/logs/job_queue_system/job_queue_system.log
+++ b/backend/logs/job_queue_system/job_queue_system.log
@@ -971,3 +971,38 @@
2025-06-16 00:52:31 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert
2025-06-16 00:52:31 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion)
2025-06-16 00:52:33 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität)
+2025-06-16 00:54:34 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität)
+2025-06-16 00:54:37 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert
+2025-06-16 00:54:37 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion)
+2025-06-16 00:54:39 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität)
+2025-06-16 00:54:49 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität)
+2025-06-16 00:54:51 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert
+2025-06-16 00:54:51 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion)
+2025-06-16 00:54:55 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität)
+2025-06-16 00:57:30 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität)
+2025-06-16 00:57:30 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität)
+2025-06-16 00:59:48 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert
+2025-06-16 00:59:48 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion)
+2025-06-16 00:59:49 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität)
+2025-06-16 00:59:50 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert
+2025-06-16 00:59:50 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion)
+2025-06-16 00:59:52 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität)
+2025-06-16 01:00:06 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität)
+2025-06-16 01:00:14 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert
+2025-06-16 01:00:14 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion)
+2025-06-16 01:00:17 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität)
+2025-06-16 01:00:18 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert
+2025-06-16 01:00:18 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion)
+2025-06-16 01:00:20 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität)
+2025-06-16 01:03:49 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität)
+2025-06-16 01:03:50 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert
+2025-06-16 01:03:50 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion)
+2025-06-16 01:03:51 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität)
+2025-06-16 01:03:56 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität)
+2025-06-16 01:03:57 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert
+2025-06-16 01:03:57 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion)
+2025-06-16 01:03:58 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität)
+2025-06-16 01:04:09 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität)
+2025-06-16 01:04:10 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert
+2025-06-16 01:04:10 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion)
+2025-06-16 01:04:11 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität)
diff --git a/backend/logs/jobs/jobs.log b/backend/logs/jobs/jobs.log
index 5886b324d..58eececfc 100644
--- a/backend/logs/jobs/jobs.log
+++ b/backend/logs/jobs/jobs.log
@@ -667,3 +667,157 @@ IndexError: tuple index out of range
2025-06-16 00:48:15 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 1 von 1 (Seite 1)
2025-06-16 00:53:38 - [jobs] jobs - [INFO] INFO - 📋 Jobs-Abfrage gestartet von Benutzer 1 (Admin: True)
2025-06-16 00:53:38 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 1 von 1 (Seite 1)
+2025-06-16 01:02:09 - [jobs] jobs - [INFO] INFO - 📋 Jobs-Abfrage gestartet von Benutzer 1 (Admin: True)
+2025-06-16 01:02:09 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 2 von 2 (Seite 1)
+2025-06-16 01:02:13 - [jobs] jobs - [INFO] INFO - 🗑️ Lösche Job 1 für Benutzer 1
+2025-06-16 01:02:13 - [jobs] jobs - [ERROR] ERROR - ❌ Fehler beim Löschen des Jobs 1: (sqlite3.IntegrityError) FOREIGN KEY constraint failed
+[SQL: DELETE FROM jobs WHERE jobs.id = ?]
+[parameters: (1,)]
+(Background on this error at: https://sqlalche.me/e/20/gkpj)
+Traceback (most recent call last):
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1969, in _exec_single_context
+ self.dialect.do_execute(
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 922, in do_execute
+ cursor.execute(statement, parameters)
+sqlite3.IntegrityError: FOREIGN KEY constraint failed
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+ File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/blueprints/jobs.py", line 419, in delete_job
+ db_session.commit()
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 1969, in commit
+ trans.commit(_to_root=True)
+ File "", line 2, in commit
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
+ ret_value = fn(self, *arg, **kw)
+ ^^^^^^^^^^^^^^^^^^^^
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 1256, in commit
+ self._prepare_impl()
+ File "", line 2, in _prepare_impl
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
+ ret_value = fn(self, *arg, **kw)
+ ^^^^^^^^^^^^^^^^^^^^
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 1231, in _prepare_impl
+ self.session.flush()
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 4312, in flush
+ self._flush(objects)
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 4447, in _flush
+ with util.safe_reraise():
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
+ raise exc_value.with_traceback(exc_tb)
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 4408, in _flush
+ flush_context.execute()
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
+ rec.execute(self)
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/orm/unitofwork.py", line 679, in execute
+ util.preloaded.orm_persistence.delete_obj(
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/orm/persistence.py", line 191, in delete_obj
+ _emit_delete_statements(
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/orm/persistence.py", line 1456, in _emit_delete_statements
+ c = connection.execute(
+ ^^^^^^^^^^^^^^^^^^^
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1416, in execute
+ return meth(
+ ^^^^^
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/sql/elements.py", line 516, in _execute_on_connection
+ return connection._execute_clauseelement(
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1639, in _execute_clauseelement
+ ret = self._execute_context(
+ ^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1848, in _execute_context
+ return self._exec_single_context(
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1988, in _exec_single_context
+ self._handle_dbapi_exception(
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 2343, in _handle_dbapi_exception
+ raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1969, in _exec_single_context
+ self.dialect.do_execute(
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 922, in do_execute
+ cursor.execute(statement, parameters)
+sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) FOREIGN KEY constraint failed
+[SQL: DELETE FROM jobs WHERE jobs.id = ?]
+[parameters: (1,)]
+(Background on this error at: https://sqlalche.me/e/20/gkpj)
+2025-06-16 01:02:16 - [jobs] jobs - [INFO] INFO - 🗑️ Lösche Job 2 für Benutzer 1
+2025-06-16 01:02:16 - [jobs] jobs - [ERROR] ERROR - ❌ Fehler beim Löschen des Jobs 2: (sqlite3.IntegrityError) FOREIGN KEY constraint failed
+[SQL: DELETE FROM jobs WHERE jobs.id = ?]
+[parameters: (2,)]
+(Background on this error at: https://sqlalche.me/e/20/gkpj)
+Traceback (most recent call last):
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1969, in _exec_single_context
+ self.dialect.do_execute(
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 922, in do_execute
+ cursor.execute(statement, parameters)
+sqlite3.IntegrityError: FOREIGN KEY constraint failed
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+ File "/cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend/blueprints/jobs.py", line 419, in delete_job
+ db_session.commit()
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 1969, in commit
+ trans.commit(_to_root=True)
+ File "", line 2, in commit
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
+ ret_value = fn(self, *arg, **kw)
+ ^^^^^^^^^^^^^^^^^^^^
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 1256, in commit
+ self._prepare_impl()
+ File "", line 2, in _prepare_impl
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
+ ret_value = fn(self, *arg, **kw)
+ ^^^^^^^^^^^^^^^^^^^^
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 1231, in _prepare_impl
+ self.session.flush()
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 4312, in flush
+ self._flush(objects)
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 4447, in _flush
+ with util.safe_reraise():
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
+ raise exc_value.with_traceback(exc_tb)
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 4408, in _flush
+ flush_context.execute()
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
+ rec.execute(self)
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/orm/unitofwork.py", line 679, in execute
+ util.preloaded.orm_persistence.delete_obj(
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/orm/persistence.py", line 191, in delete_obj
+ _emit_delete_statements(
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/orm/persistence.py", line 1456, in _emit_delete_statements
+ c = connection.execute(
+ ^^^^^^^^^^^^^^^^^^^
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1416, in execute
+ return meth(
+ ^^^^^
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/sql/elements.py", line 516, in _execute_on_connection
+ return connection._execute_clauseelement(
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1639, in _execute_clauseelement
+ ret = self._execute_context(
+ ^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1848, in _execute_context
+ return self._exec_single_context(
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1988, in _exec_single_context
+ self._handle_dbapi_exception(
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 2343, in _handle_dbapi_exception
+ raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1969, in _exec_single_context
+ self.dialect.do_execute(
+ File "/home/core/.local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 922, in do_execute
+ cursor.execute(statement, parameters)
+sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) FOREIGN KEY constraint failed
+[SQL: DELETE FROM jobs WHERE jobs.id = ?]
+[parameters: (2,)]
+(Background on this error at: https://sqlalche.me/e/20/gkpj)
+2025-06-16 01:02:39 - [jobs] jobs - [INFO] INFO - 📋 Jobs-Abfrage gestartet von Benutzer 1 (Admin: True)
+2025-06-16 01:02:39 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 2 von 2 (Seite 1)
+2025-06-16 01:03:09 - [jobs] jobs - [INFO] INFO - 📋 Jobs-Abfrage gestartet von Benutzer 1 (Admin: True)
+2025-06-16 01:03:09 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 2 von 2 (Seite 1)
+2025-06-16 01:03:39 - [jobs] jobs - [INFO] INFO - 📋 Jobs-Abfrage gestartet von Benutzer 1 (Admin: True)
+2025-06-16 01:03:39 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 2 von 2 (Seite 1)
+2025-06-16 01:04:12 - [jobs] jobs - [INFO] INFO - 📋 Jobs-Abfrage gestartet von Benutzer 1 (Admin: True)
+2025-06-16 01:04:12 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 2 von 2 (Seite 1)
diff --git a/backend/logs/models/models.log b/backend/logs/models/models.log
index adb63bc04..9febd4df9 100644
--- a/backend/logs/models/models.log
+++ b/backend/logs/models/models.log
@@ -8,3 +8,5 @@
2025-06-15 23:20:59 - [models] models - [INFO] INFO - Erfolgreich 1 Benachrichtigungen erstellt für 'guest_request'
2025-06-15 23:55:30 - [models] models - [INFO] INFO - Gefunden: 1 Genehmiger für Benachrichtigung 'guest_request'
2025-06-15 23:55:30 - [models] models - [INFO] INFO - Erfolgreich 1 Benachrichtigungen erstellt für 'guest_request'
+2025-06-16 01:01:00 - [models] models - [INFO] INFO - Gefunden: 1 Genehmiger für Benachrichtigung 'guest_request'
+2025-06-16 01:01:00 - [models] models - [INFO] INFO - Erfolgreich 1 Benachrichtigungen erstellt für 'guest_request'
diff --git a/backend/logs/monitoring_analytics/monitoring_analytics.log b/backend/logs/monitoring_analytics/monitoring_analytics.log
index e9a6fcc5c..c11a43135 100644
--- a/backend/logs/monitoring_analytics/monitoring_analytics.log
+++ b/backend/logs/monitoring_analytics/monitoring_analytics.log
@@ -495,3 +495,21 @@
2025-06-16 00:52:30 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
2025-06-16 00:52:32 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert
2025-06-16 00:52:32 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
+2025-06-16 00:54:38 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert
+2025-06-16 00:54:38 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
+2025-06-16 00:54:53 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert
+2025-06-16 00:54:53 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
+2025-06-16 00:59:48 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert
+2025-06-16 00:59:48 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
+2025-06-16 00:59:51 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert
+2025-06-16 00:59:51 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
+2025-06-16 01:00:16 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert
+2025-06-16 01:00:16 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
+2025-06-16 01:00:19 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert
+2025-06-16 01:00:19 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
+2025-06-16 01:03:50 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert
+2025-06-16 01:03:50 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
+2025-06-16 01:03:57 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert
+2025-06-16 01:03:57 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
+2025-06-16 01:04:11 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert
+2025-06-16 01:04:11 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
diff --git a/backend/logs/permissions/permissions.log b/backend/logs/permissions/permissions.log
index 0780c761d..c453bc00a 100644
--- a/backend/logs/permissions/permissions.log
+++ b/backend/logs/permissions/permissions.log
@@ -187,3 +187,15 @@ WHERE users.role = ?]
2025-06-16 00:52:30 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert
2025-06-16 00:52:32 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert
2025-06-16 00:53:34 - [permissions] permissions - [INFO] INFO - UserPermission für Admin-Benutzer 1 aktualisiert
+2025-06-16 00:54:38 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert
+2025-06-16 00:54:54 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert
+2025-06-16 00:59:49 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert
+2025-06-16 00:59:52 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert
+2025-06-16 01:00:16 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert
+2025-06-16 01:00:19 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert
+2025-06-16 01:01:23 - [permissions] permissions - [INFO] INFO - UserPermission für Admin-Benutzer 1 aktualisiert
+2025-06-16 01:01:29 - [permissions] permissions - [INFO] INFO - UserPermission für Admin-Benutzer 1 aktualisiert
+2025-06-16 01:01:30 - [permissions] permissions - [INFO] INFO - UserPermission für Admin-Benutzer 1 aktualisiert
+2025-06-16 01:03:50 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert
+2025-06-16 01:03:57 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert
+2025-06-16 01:04:11 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert
diff --git a/backend/logs/scheduler/scheduler.log b/backend/logs/scheduler/scheduler.log
index f8949d8f7..eb2c615d3 100644
--- a/backend/logs/scheduler/scheduler.log
+++ b/backend/logs/scheduler/scheduler.log
@@ -1226,3 +1226,95 @@
2025-06-16 00:54:04 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: testeadmin@example.com
2025-06-16 00:54:10 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler bei Überprüfung der Jobs: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
2025-06-16 00:54:12 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler bei Überprüfung der Jobs: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
+2025-06-16 00:54:32 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: testeadmin@example.com
+2025-06-16 00:54:37 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True
+2025-06-16 00:54:39 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet
+2025-06-16 00:54:39 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: testeadmin@example.com
+2025-06-16 00:54:39 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet
+2025-06-16 00:54:42 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler bei Überprüfung der Jobs: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
+2025-06-16 00:54:48 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler bei Überprüfung der Jobs: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
+2025-06-16 00:54:51 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True
+2025-06-16 00:54:55 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet
+2025-06-16 00:54:55 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: testeadmin@example.com
+2025-06-16 00:54:55 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet
+2025-06-16 00:55:03 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: testeadmin@example.com
+2025-06-16 00:55:04 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler bei Überprüfung der Jobs: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
+2025-06-16 00:55:12 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler bei Überprüfung der Jobs: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
+2025-06-16 00:55:25 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: testeadmin@example.com
+2025-06-16 00:55:33 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: testeadmin@example.com
+2025-06-16 00:55:34 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler bei Überprüfung der Jobs: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
+2025-06-16 00:55:43 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler bei Überprüfung der Jobs: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
+2025-06-16 00:55:55 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: testeadmin@example.com
+2025-06-16 00:56:04 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: testeadmin@example.com
+2025-06-16 00:56:04 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler bei Überprüfung der Jobs: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
+2025-06-16 00:56:13 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler bei Überprüfung der Jobs: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
+2025-06-16 00:56:26 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: testeadmin@example.com
+2025-06-16 00:56:35 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: testeadmin@example.com
+2025-06-16 00:56:35 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler bei Überprüfung der Jobs: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
+2025-06-16 00:56:43 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler bei Überprüfung der Jobs: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
+2025-06-16 00:56:57 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: testeadmin@example.com
+2025-06-16 00:57:05 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: testeadmin@example.com
+2025-06-16 00:57:05 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler bei Überprüfung der Jobs: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
+2025-06-16 00:57:14 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler bei Überprüfung der Jobs: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
+2025-06-16 00:57:27 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: testeadmin@example.com
+2025-06-16 00:59:48 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True
+2025-06-16 00:59:49 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet
+2025-06-16 00:59:49 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet
+2025-06-16 00:59:49 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: testeadmin@example.com
+2025-06-16 00:59:50 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True
+2025-06-16 00:59:52 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet
+2025-06-16 00:59:52 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: testeadmin@example.com
+2025-06-16 00:59:52 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet
+2025-06-16 00:59:57 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler bei Überprüfung der Jobs: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
+2025-06-16 01:00:01 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler bei Überprüfung der Jobs: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
+2025-06-16 01:00:14 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True
+2025-06-16 01:00:17 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet
+2025-06-16 01:00:17 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet
+2025-06-16 01:00:17 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: testeadmin@example.com
+2025-06-16 01:00:18 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True
+2025-06-16 01:00:20 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet
+2025-06-16 01:00:20 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet
+2025-06-16 01:00:20 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: testeadmin@example.com
+2025-06-16 01:00:25 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler bei Überprüfung der Jobs: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
+2025-06-16 01:00:28 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler bei Überprüfung der Jobs: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
+2025-06-16 01:00:47 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: testeadmin@example.com
+2025-06-16 01:00:50 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: testeadmin@example.com
+2025-06-16 01:00:55 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler bei Überprüfung der Jobs: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
+2025-06-16 01:00:58 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler bei Überprüfung der Jobs: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
+2025-06-16 01:01:17 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: testeadmin@example.com
+2025-06-16 01:01:20 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: testeadmin@example.com
+2025-06-16 01:01:26 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler bei Überprüfung der Jobs: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
+2025-06-16 01:01:29 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler bei Überprüfung der Jobs: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
+2025-06-16 01:01:48 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: testeadmin@example.com
+2025-06-16 01:01:51 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: testeadmin@example.com
+2025-06-16 01:01:56 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler bei Überprüfung der Jobs: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
+2025-06-16 01:01:59 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler bei Überprüfung der Jobs: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
+2025-06-16 01:02:18 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: testeadmin@example.com
+2025-06-16 01:02:21 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: testeadmin@example.com
+2025-06-16 01:02:26 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler bei Überprüfung der Jobs: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
+2025-06-16 01:02:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler bei Überprüfung der Jobs: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
+2025-06-16 01:02:48 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: testeadmin@example.com
+2025-06-16 01:02:52 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: testeadmin@example.com
+2025-06-16 01:02:57 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler bei Überprüfung der Jobs: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
+2025-06-16 01:03:00 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler bei Überprüfung der Jobs: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
+2025-06-16 01:03:19 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: testeadmin@example.com
+2025-06-16 01:03:22 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: testeadmin@example.com
+2025-06-16 01:03:27 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler bei Überprüfung der Jobs: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
+2025-06-16 01:03:31 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler bei Überprüfung der Jobs: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
+2025-06-16 01:03:49 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: testeadmin@example.com
+2025-06-16 01:03:50 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True
+2025-06-16 01:03:51 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet
+2025-06-16 01:03:51 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet
+2025-06-16 01:03:51 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: testeadmin@example.com
+2025-06-16 01:03:57 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True
+2025-06-16 01:03:57 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler bei Überprüfung der Jobs: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
+2025-06-16 01:03:58 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet
+2025-06-16 01:03:58 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet
+2025-06-16 01:03:58 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: testeadmin@example.com
+2025-06-16 01:04:06 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler bei Überprüfung der Jobs: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
+2025-06-16 01:04:10 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True
+2025-06-16 01:04:11 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet
+2025-06-16 01:04:11 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet
+2025-06-16 01:04:11 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: testeadmin@example.com
+2025-06-16 01:04:19 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: Gastauftrag: testeadmin@example.com
+2025-06-16 01:04:20 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler bei Überprüfung der Jobs: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
diff --git a/backend/logs/security_suite/security_suite.log b/backend/logs/security_suite/security_suite.log
index 295d37dc1..6a4064e6a 100644
--- a/backend/logs/security_suite/security_suite.log
+++ b/backend/logs/security_suite/security_suite.log
@@ -743,3 +743,30 @@
2025-06-16 00:52:31 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert
2025-06-16 00:52:31 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
2025-06-16 00:52:32 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert
+2025-06-16 00:54:37 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert
+2025-06-16 00:54:37 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
+2025-06-16 00:54:38 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert
+2025-06-16 00:54:51 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert
+2025-06-16 00:54:51 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
+2025-06-16 00:54:54 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert
+2025-06-16 00:59:48 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert
+2025-06-16 00:59:48 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
+2025-06-16 00:59:48 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert
+2025-06-16 00:59:50 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert
+2025-06-16 00:59:50 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
+2025-06-16 00:59:52 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert
+2025-06-16 01:00:14 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert
+2025-06-16 01:00:14 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
+2025-06-16 01:00:16 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert
+2025-06-16 01:00:18 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert
+2025-06-16 01:00:18 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
+2025-06-16 01:00:19 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert
+2025-06-16 01:03:50 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert
+2025-06-16 01:03:50 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
+2025-06-16 01:03:50 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert
+2025-06-16 01:03:57 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert
+2025-06-16 01:03:57 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
+2025-06-16 01:03:57 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert
+2025-06-16 01:04:10 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert
+2025-06-16 01:04:10 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
+2025-06-16 01:04:11 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert
diff --git a/backend/logs/startup/startup.log b/backend/logs/startup/startup.log
index 8b6e6cddc..e9927b6da 100644
--- a/backend/logs/startup/startup.log
+++ b/backend/logs/startup/startup.log
@@ -1944,3 +1944,66 @@
2025-06-16 00:52:32 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend
2025-06-16 00:52:32 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-16T00:52:32.772222
2025-06-16 00:52:32 - [startup] startup - [INFO] INFO - ==================================================
+2025-06-16 00:54:38 - [startup] startup - [INFO] INFO - ==================================================
+2025-06-16 00:54:38 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet...
+2025-06-16 00:54:38 - [startup] startup - [INFO] INFO - 🐍 Python Version: 3.11.2 (main, Mar 05 2023, 19:08:04) [GCC]
+2025-06-16 00:54:38 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: posix (linux)
+2025-06-16 00:54:38 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend
+2025-06-16 00:54:38 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-16T00:54:38.621972
+2025-06-16 00:54:38 - [startup] startup - [INFO] INFO - ==================================================
+2025-06-16 00:54:53 - [startup] startup - [INFO] INFO - ==================================================
+2025-06-16 00:54:53 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet...
+2025-06-16 00:54:53 - [startup] startup - [INFO] INFO - 🐍 Python Version: 3.11.2 (main, Mar 05 2023, 19:08:04) [GCC]
+2025-06-16 00:54:53 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: posix (linux)
+2025-06-16 00:54:53 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend
+2025-06-16 00:54:53 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-16T00:54:53.950046
+2025-06-16 00:54:53 - [startup] startup - [INFO] INFO - ==================================================
+2025-06-16 00:59:48 - [startup] startup - [INFO] INFO - ==================================================
+2025-06-16 00:59:48 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet...
+2025-06-16 00:59:48 - [startup] startup - [INFO] INFO - 🐍 Python Version: 3.11.2 (main, Mar 05 2023, 19:08:04) [GCC]
+2025-06-16 00:59:48 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: posix (linux)
+2025-06-16 00:59:48 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend
+2025-06-16 00:59:48 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-16T00:59:48.892243
+2025-06-16 00:59:48 - [startup] startup - [INFO] INFO - ==================================================
+2025-06-16 00:59:51 - [startup] startup - [INFO] INFO - ==================================================
+2025-06-16 00:59:51 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet...
+2025-06-16 00:59:51 - [startup] startup - [INFO] INFO - 🐍 Python Version: 3.11.2 (main, Mar 05 2023, 19:08:04) [GCC]
+2025-06-16 00:59:51 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: posix (linux)
+2025-06-16 00:59:51 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend
+2025-06-16 00:59:51 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-16T00:59:51.985719
+2025-06-16 00:59:51 - [startup] startup - [INFO] INFO - ==================================================
+2025-06-16 01:00:16 - [startup] startup - [INFO] INFO - ==================================================
+2025-06-16 01:00:16 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet...
+2025-06-16 01:00:16 - [startup] startup - [INFO] INFO - 🐍 Python Version: 3.11.2 (main, Mar 05 2023, 19:08:04) [GCC]
+2025-06-16 01:00:16 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: posix (linux)
+2025-06-16 01:00:16 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend
+2025-06-16 01:00:16 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-16T01:00:16.151830
+2025-06-16 01:00:16 - [startup] startup - [INFO] INFO - ==================================================
+2025-06-16 01:00:19 - [startup] startup - [INFO] INFO - ==================================================
+2025-06-16 01:00:19 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet...
+2025-06-16 01:00:19 - [startup] startup - [INFO] INFO - 🐍 Python Version: 3.11.2 (main, Mar 05 2023, 19:08:04) [GCC]
+2025-06-16 01:00:19 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: posix (linux)
+2025-06-16 01:00:19 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend
+2025-06-16 01:00:19 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-16T01:00:19.624371
+2025-06-16 01:00:19 - [startup] startup - [INFO] INFO - ==================================================
+2025-06-16 01:03:50 - [startup] startup - [INFO] INFO - ==================================================
+2025-06-16 01:03:50 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet...
+2025-06-16 01:03:50 - [startup] startup - [INFO] INFO - 🐍 Python Version: 3.11.2 (main, Mar 05 2023, 19:08:04) [GCC]
+2025-06-16 01:03:50 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: posix (linux)
+2025-06-16 01:03:50 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend
+2025-06-16 01:03:50 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-16T01:03:50.767539
+2025-06-16 01:03:50 - [startup] startup - [INFO] INFO - ==================================================
+2025-06-16 01:03:57 - [startup] startup - [INFO] INFO - ==================================================
+2025-06-16 01:03:57 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet...
+2025-06-16 01:03:57 - [startup] startup - [INFO] INFO - 🐍 Python Version: 3.11.2 (main, Mar 05 2023, 19:08:04) [GCC]
+2025-06-16 01:03:57 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: posix (linux)
+2025-06-16 01:03:57 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend
+2025-06-16 01:03:57 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-16T01:03:57.771009
+2025-06-16 01:03:57 - [startup] startup - [INFO] INFO - ==================================================
+2025-06-16 01:04:11 - [startup] startup - [INFO] INFO - ==================================================
+2025-06-16 01:04:11 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet...
+2025-06-16 01:04:11 - [startup] startup - [INFO] INFO - 🐍 Python Version: 3.11.2 (main, Mar 05 2023, 19:08:04) [GCC]
+2025-06-16 01:04:11 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: posix (linux)
+2025-06-16 01:04:11 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: /cbin/C0S1-cernel/C02L2/Dateiverwaltung/nextcloud/core/files/3_Beruf_Ausbildung_und_Schule/IHK-Abschlussprüfung/Projektarbeit-MYP/backend
+2025-06-16 01:04:11 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-16T01:04:11.309042
+2025-06-16 01:04:11 - [startup] startup - [INFO] INFO - ==================================================
diff --git a/backend/logs/tapo_controller/tapo_controller.log b/backend/logs/tapo_controller/tapo_controller.log
index 1a4886b42..42460b431 100644
--- a/backend/logs/tapo_controller/tapo_controller.log
+++ b/backend/logs/tapo_controller/tapo_controller.log
@@ -1377,3 +1377,149 @@
2025-06-16 00:54:10 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Alle 3 Versuche fehlgeschlagen beim einschalten der Tapo-Steckdose 192.168.0.100
2025-06-16 00:54:12 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 3/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
2025-06-16 00:54:12 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Alle 3 Versuche fehlgeschlagen beim einschalten der Tapo-Steckdose 192.168.0.100
+2025-06-16 00:54:34 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 1/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:54:37 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert
+2025-06-16 00:54:38 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 2/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:54:42 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 3/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:54:42 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Alle 3 Versuche fehlgeschlagen beim einschalten der Tapo-Steckdose 192.168.0.100
+2025-06-16 00:54:42 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 1/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:54:45 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 2/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:54:48 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 3/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:54:48 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Alle 3 Versuche fehlgeschlagen beim einschalten der Tapo-Steckdose 192.168.0.100
+2025-06-16 00:54:51 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert
+2025-06-16 00:54:57 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 1/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:55:01 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 2/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:55:04 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 3/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:55:04 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Alle 3 Versuche fehlgeschlagen beim einschalten der Tapo-Steckdose 192.168.0.100
+2025-06-16 00:55:06 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 1/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:55:09 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 2/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:55:12 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 3/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:55:12 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Alle 3 Versuche fehlgeschlagen beim einschalten der Tapo-Steckdose 192.168.0.100
+2025-06-16 00:55:27 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 1/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:55:31 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 2/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:55:34 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 3/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:55:34 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Alle 3 Versuche fehlgeschlagen beim einschalten der Tapo-Steckdose 192.168.0.100
+2025-06-16 00:55:35 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 1/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:55:39 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 2/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:55:43 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 3/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:55:43 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Alle 3 Versuche fehlgeschlagen beim einschalten der Tapo-Steckdose 192.168.0.100
+2025-06-16 00:55:58 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 1/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:56:01 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 2/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:56:04 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 3/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:56:04 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Alle 3 Versuche fehlgeschlagen beim einschalten der Tapo-Steckdose 192.168.0.100
+2025-06-16 00:56:06 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 1/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:56:09 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 2/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:56:13 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 3/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:56:13 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Alle 3 Versuche fehlgeschlagen beim einschalten der Tapo-Steckdose 192.168.0.100
+2025-06-16 00:56:28 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 1/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:56:32 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 2/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:56:35 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 3/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:56:35 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Alle 3 Versuche fehlgeschlagen beim einschalten der Tapo-Steckdose 192.168.0.100
+2025-06-16 00:56:37 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 1/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:56:40 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 2/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:56:43 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 3/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:56:43 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Alle 3 Versuche fehlgeschlagen beim einschalten der Tapo-Steckdose 192.168.0.100
+2025-06-16 00:56:59 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 1/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:57:02 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 2/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:57:05 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 3/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:57:05 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Alle 3 Versuche fehlgeschlagen beim einschalten der Tapo-Steckdose 192.168.0.100
+2025-06-16 00:57:07 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 1/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:57:11 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 2/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:57:14 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 3/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:57:14 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Alle 3 Versuche fehlgeschlagen beim einschalten der Tapo-Steckdose 192.168.0.100
+2025-06-16 00:57:30 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 1/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:59:48 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert
+2025-06-16 00:59:50 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert
+2025-06-16 00:59:51 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 1/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:59:54 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 2/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:59:55 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 1/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:59:57 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 3/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 00:59:57 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Alle 3 Versuche fehlgeschlagen beim einschalten der Tapo-Steckdose 192.168.0.100
+2025-06-16 00:59:58 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 2/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:00:01 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 3/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:00:01 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Alle 3 Versuche fehlgeschlagen beim einschalten der Tapo-Steckdose 192.168.0.100
+2025-06-16 01:00:02 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:00:02 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.100 fehlgeschlagen: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:00:14 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert
+2025-06-16 01:00:18 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert
+2025-06-16 01:00:19 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 1/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:00:22 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 1/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:00:22 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 2/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:00:25 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 2/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:00:25 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 3/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:00:25 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Alle 3 Versuche fehlgeschlagen beim einschalten der Tapo-Steckdose 192.168.0.100
+2025-06-16 01:00:28 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 3/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:00:28 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Alle 3 Versuche fehlgeschlagen beim einschalten der Tapo-Steckdose 192.168.0.100
+2025-06-16 01:00:40 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:00:40 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.100 fehlgeschlagen: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:00:49 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 1/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:00:52 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 1/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:00:52 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 2/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:00:55 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 2/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:00:55 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 3/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:00:55 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Alle 3 Versuche fehlgeschlagen beim einschalten der Tapo-Steckdose 192.168.0.100
+2025-06-16 01:00:58 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 3/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:00:58 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Alle 3 Versuche fehlgeschlagen beim einschalten der Tapo-Steckdose 192.168.0.100
+2025-06-16 01:01:19 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 1/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:01:23 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 2/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:01:23 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 1/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:01:26 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 3/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:01:26 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Alle 3 Versuche fehlgeschlagen beim einschalten der Tapo-Steckdose 192.168.0.100
+2025-06-16 01:01:26 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 2/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:01:29 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 3/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:01:29 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Alle 3 Versuche fehlgeschlagen beim einschalten der Tapo-Steckdose 192.168.0.100
+2025-06-16 01:01:44 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 1/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:01:47 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 2/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:01:50 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 1/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:01:50 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 3/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:01:50 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Alle 3 Versuche fehlgeschlagen beim einschalten der Tapo-Steckdose 192.168.0.100
+2025-06-16 01:01:53 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 1/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:01:53 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 2/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:01:56 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:01:56 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.100 fehlgeschlagen: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:01:56 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 3/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:01:56 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Alle 3 Versuche fehlgeschlagen beim einschalten der Tapo-Steckdose 192.168.0.100
+2025-06-16 01:01:56 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 2/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:01:59 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 3/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:01:59 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Alle 3 Versuche fehlgeschlagen beim einschalten der Tapo-Steckdose 192.168.0.100
+2025-06-16 01:02:20 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 1/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:02:23 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 2/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:02:23 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 1/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:02:26 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 3/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:02:26 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Alle 3 Versuche fehlgeschlagen beim einschalten der Tapo-Steckdose 192.168.0.100
+2025-06-16 01:02:27 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 2/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:02:30 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 3/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:02:30 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Alle 3 Versuche fehlgeschlagen beim einschalten der Tapo-Steckdose 192.168.0.100
+2025-06-16 01:02:51 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 1/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:02:54 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 2/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:02:54 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 1/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:02:57 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 3/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:02:57 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Alle 3 Versuche fehlgeschlagen beim einschalten der Tapo-Steckdose 192.168.0.100
+2025-06-16 01:02:57 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 2/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:03:00 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 3/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:03:00 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Alle 3 Versuche fehlgeschlagen beim einschalten der Tapo-Steckdose 192.168.0.100
+2025-06-16 01:03:21 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 1/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:03:24 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 2/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:03:25 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 1/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:03:27 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 3/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:03:27 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Alle 3 Versuche fehlgeschlagen beim einschalten der Tapo-Steckdose 192.168.0.100
+2025-06-16 01:03:28 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 2/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:03:31 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 3/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:03:31 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Alle 3 Versuche fehlgeschlagen beim einschalten der Tapo-Steckdose 192.168.0.100
+2025-06-16 01:03:50 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert
+2025-06-16 01:03:51 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 1/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:03:53 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 1/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:03:54 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 2/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:03:57 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert
+2025-06-16 01:03:57 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 3/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:03:57 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Alle 3 Versuche fehlgeschlagen beim einschalten der Tapo-Steckdose 192.168.0.100
+2025-06-16 01:04:00 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 1/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:04:03 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 2/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:04:06 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 3/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:04:06 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Alle 3 Versuche fehlgeschlagen beim einschalten der Tapo-Steckdose 192.168.0.100
+2025-06-16 01:04:10 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert
+2025-06-16 01:04:13 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 1/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:04:17 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 2/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:04:20 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 3/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
+2025-06-16 01:04:20 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Alle 3 Versuche fehlgeschlagen beim einschalten der Tapo-Steckdose 192.168.0.100
+2025-06-16 01:04:21 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Versuch 1/3 fehlgeschlagen beim einschalten von 192.168.0.100: HTTPConnectionPool(host='192.168.1.101', port=3128): Read timed out. (read timeout=2)
diff --git a/backend/logs/tapo_status_manager/tapo_status_manager.log b/backend/logs/tapo_status_manager/tapo_status_manager.log
index 5f2c51726..343e018a1 100644
--- a/backend/logs/tapo_status_manager/tapo_status_manager.log
+++ b/backend/logs/tapo_status_manager/tapo_status_manager.log
@@ -214,3 +214,12 @@
2025-06-16 00:50:39 - [tapo_status_manager] tapo_status_manager - [INFO] INFO - TapoStatusManager mit Session-Caching initialisiert
2025-06-16 00:52:30 - [tapo_status_manager] tapo_status_manager - [INFO] INFO - TapoStatusManager mit Session-Caching initialisiert
2025-06-16 00:52:31 - [tapo_status_manager] tapo_status_manager - [INFO] INFO - TapoStatusManager mit Session-Caching initialisiert
+2025-06-16 00:54:37 - [tapo_status_manager] tapo_status_manager - [INFO] INFO - TapoStatusManager mit Session-Caching initialisiert
+2025-06-16 00:54:51 - [tapo_status_manager] tapo_status_manager - [INFO] INFO - TapoStatusManager mit Session-Caching initialisiert
+2025-06-16 00:59:48 - [tapo_status_manager] tapo_status_manager - [INFO] INFO - TapoStatusManager mit Session-Caching initialisiert
+2025-06-16 00:59:50 - [tapo_status_manager] tapo_status_manager - [INFO] INFO - TapoStatusManager mit Session-Caching initialisiert
+2025-06-16 01:00:14 - [tapo_status_manager] tapo_status_manager - [INFO] INFO - TapoStatusManager mit Session-Caching initialisiert
+2025-06-16 01:00:18 - [tapo_status_manager] tapo_status_manager - [INFO] INFO - TapoStatusManager mit Session-Caching initialisiert
+2025-06-16 01:03:50 - [tapo_status_manager] tapo_status_manager - [INFO] INFO - TapoStatusManager mit Session-Caching initialisiert
+2025-06-16 01:03:57 - [tapo_status_manager] tapo_status_manager - [INFO] INFO - TapoStatusManager mit Session-Caching initialisiert
+2025-06-16 01:04:10 - [tapo_status_manager] tapo_status_manager - [INFO] INFO - TapoStatusManager mit Session-Caching initialisiert
diff --git a/backend/logs/utilities_collection/utilities_collection.log b/backend/logs/utilities_collection/utilities_collection.log
index 49857aaa5..2742bd285 100644
--- a/backend/logs/utilities_collection/utilities_collection.log
+++ b/backend/logs/utilities_collection/utilities_collection.log
@@ -657,3 +657,21 @@
2025-06-16 00:52:29 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion)
2025-06-16 00:52:31 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert
2025-06-16 00:52:31 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion)
+2025-06-16 00:54:36 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert
+2025-06-16 00:54:36 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion)
+2025-06-16 00:54:51 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert
+2025-06-16 00:54:51 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion)
+2025-06-16 00:59:47 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert
+2025-06-16 00:59:47 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion)
+2025-06-16 00:59:50 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert
+2025-06-16 00:59:50 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion)
+2025-06-16 01:00:14 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert
+2025-06-16 01:00:14 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion)
+2025-06-16 01:00:18 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert
+2025-06-16 01:00:18 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion)
+2025-06-16 01:03:49 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert
+2025-06-16 01:03:49 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion)
+2025-06-16 01:03:56 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert
+2025-06-16 01:03:56 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion)
+2025-06-16 01:04:10 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert
+2025-06-16 01:04:10 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion)
diff --git a/backend/static/sw.js b/backend/static/sw.js
index ce0f0eb3e..c83ed22d2 100644
--- a/backend/static/sw.js
+++ b/backend/static/sw.js
@@ -110,8 +110,29 @@ self.addEventListener('fetch', event => {
return;
}
- // Alle anderen Requests: Network Only
- event.respondWith(fetch(request));
+ // Alle anderen Requests: Network Only mit Error-Handling
+ event.respondWith(
+ fetch(request).catch(error => {
+ console.warn('🌐 Network request failed:', request.url, error);
+ // Für kritische Fehler eine Fallback-Response zurückgeben
+ if (request.destination === 'document') {
+ return new Response('Service temporarily unavailable', {
+ status: 503,
+ statusText: 'Service Unavailable',
+ headers: { 'Content-Type': 'text/plain' }
+ });
+ }
+ // Für API-Requests
+ return new Response(JSON.stringify({
+ error: 'Network error',
+ message: 'Service temporarily unavailable'
+ }), {
+ status: 503,
+ statusText: 'Service Unavailable',
+ headers: { 'Content-Type': 'application/json' }
+ });
+ })
+ );
});
/**