📚 Improved logging structure across various logs files in the backend. 🖥️🔍
This commit is contained in:
parent
03ad8f275d
commit
b29219ce4c
BIN
backend/database/myp.db-shm
Normal file
BIN
backend/database/myp.db-shm
Normal file
Binary file not shown.
BIN
backend/database/myp.db-wal
Normal file
BIN
backend/database/myp.db-wal
Normal file
Binary file not shown.
@ -116,3 +116,4 @@
|
|||||||
2025-06-02 14:51:08 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert
|
2025-06-02 14:51:08 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert
|
||||||
2025-06-02 15:18:14 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert
|
2025-06-02 15:18:14 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert
|
||||||
2025-06-02 15:29:06 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert
|
2025-06-02 15:29:06 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert
|
||||||
|
2025-06-03 13:18:50 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert
|
||||||
|
@ -3057,3 +3057,24 @@ WHERE jobs.status = ?) AS anon_1]
|
|||||||
2025-06-02 15:31:02 - [app] app - [INFO] INFO - Dashboard-Refresh angefordert von User 1
|
2025-06-02 15:31:02 - [app] app - [INFO] INFO - Dashboard-Refresh angefordert von User 1
|
||||||
2025-06-02 15:31:02 - [app] app - [INFO] INFO - Dashboard-Refresh erfolgreich: {'active_jobs': 0, 'available_printers': 2, 'total_jobs': 16, 'pending_jobs': 0, 'success_rate': 0.0, 'completed_jobs': None, 'failed_jobs': None, 'cancelled_jobs': 0, 'total_users': 1, 'online_printers': 0, 'offline_printers': 2}
|
2025-06-02 15:31:02 - [app] app - [INFO] INFO - Dashboard-Refresh erfolgreich: {'active_jobs': 0, 'available_printers': 2, 'total_jobs': 16, 'pending_jobs': 0, 'success_rate': 0.0, 'completed_jobs': None, 'failed_jobs': None, 'cancelled_jobs': 0, 'total_users': 1, 'online_printers': 0, 'offline_printers': 2}
|
||||||
2025-06-02 15:31:02 - [app] app - [INFO] INFO - Dashboard-Refresh erfolgreich: {'active_jobs': 0, 'available_printers': None, 'total_jobs': 16, 'pending_jobs': 0, 'success_rate': 0.0, 'completed_jobs': 0, 'failed_jobs': 0, 'cancelled_jobs': 0, 'total_users': 1, 'online_printers': 0, 'offline_printers': 2}
|
2025-06-02 15:31:02 - [app] app - [INFO] INFO - Dashboard-Refresh erfolgreich: {'active_jobs': 0, 'available_printers': None, 'total_jobs': 16, 'pending_jobs': 0, 'success_rate': 0.0, 'completed_jobs': 0, 'failed_jobs': 0, 'cancelled_jobs': 0, 'total_users': 1, 'online_printers': 0, 'offline_printers': 2}
|
||||||
|
2025-06-03 13:18:49 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\database\myp.db
|
||||||
|
2025-06-03 13:18:51 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O)
|
||||||
|
2025-06-03 13:18:52 - [app] app - [INFO] INFO - ✅ Timeout Force-Quit Manager geladen
|
||||||
|
2025-06-03 13:18:52 - [app] app - [INFO] INFO - ✅ Zentraler Shutdown-Manager initialisiert
|
||||||
|
2025-06-03 13:18:52 - [app] app - [INFO] INFO - ✅ Error-Recovery-Monitoring gestartet
|
||||||
|
2025-06-03 13:18:52 - [app] app - [INFO] INFO - ✅ System-Control-Manager initialisiert
|
||||||
|
2025-06-03 13:18:52 - [app] app - [WARNING] WARNING - ⚠️ Kiosk-Service nicht gefunden - Kiosk-Funktionen eventuell eingeschränkt
|
||||||
|
2025-06-03 13:18:52 - [app] app - [INFO] INFO - 🔄 Starte Datenbank-Setup und Migrationen...
|
||||||
|
2025-06-03 13:18:52 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert
|
||||||
|
2025-06-03 13:18:52 - [app] app - [INFO] INFO - ✅ JobOrder-Tabelle bereits vorhanden
|
||||||
|
2025-06-03 13:18:52 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt.
|
||||||
|
2025-06-03 13:18:52 - [app] app - [INFO] INFO - ✅ Datenbank-Setup und Migrationen erfolgreich abgeschlossen
|
||||||
|
2025-06-03 13:18:52 - [app] app - [INFO] INFO - 🖨️ Starte automatische Steckdosen-Initialisierung...
|
||||||
|
2025-06-03 13:18:54 - [app] app - [INFO] INFO - Steckdosen-Status geloggt: Drucker 4, Status: disconnected, Quelle: system
|
||||||
|
2025-06-03 13:18:56 - [app] app - [INFO] INFO - Steckdosen-Status geloggt: Drucker 5, Status: disconnected, Quelle: system
|
||||||
|
2025-06-03 13:18:56 - [app] app - [INFO] INFO - ✅ Steckdosen-Initialisierung: 0/2 Drucker erfolgreich
|
||||||
|
2025-06-03 13:18:56 - [app] app - [WARNING] WARNING - ⚠️ 2 Drucker konnten nicht initialisiert werden
|
||||||
|
2025-06-03 13:18:56 - [app] app - [INFO] INFO - 🔄 Debug-Modus: Queue Manager deaktiviert für Entwicklung
|
||||||
|
2025-06-03 13:18:56 - [app] app - [INFO] INFO - Job-Scheduler gestartet
|
||||||
|
2025-06-03 13:18:56 - [app] app - [INFO] INFO - Starte Debug-Server auf 0.0.0.0:5000 (HTTP)
|
||||||
|
2025-06-03 13:18:56 - [app] app - [INFO] INFO - Windows-Debug-Modus: Auto-Reload deaktiviert
|
||||||
|
@ -120,3 +120,4 @@
|
|||||||
2025-06-02 14:51:08 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation)
|
2025-06-02 14:51:08 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation)
|
||||||
2025-06-02 15:18:14 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation)
|
2025-06-02 15:18:14 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation)
|
||||||
2025-06-02 15:29:06 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation)
|
2025-06-02 15:29:06 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation)
|
||||||
|
2025-06-03 13:18:50 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation)
|
||||||
|
@ -466,3 +466,7 @@
|
|||||||
2025-06-02 15:29:07 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet
|
2025-06-02 15:29:07 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet
|
||||||
2025-06-02 15:29:07 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server wird mit threading initialisiert (eventlet-Fallback)
|
2025-06-02 15:29:07 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server wird mit threading initialisiert (eventlet-Fallback)
|
||||||
2025-06-02 15:29:07 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server initialisiert (async_mode: threading)
|
2025-06-02 15:29:07 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server initialisiert (async_mode: threading)
|
||||||
|
2025-06-03 13:18:51 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet
|
||||||
|
2025-06-03 13:18:52 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet
|
||||||
|
2025-06-03 13:18:52 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server wird mit threading initialisiert (eventlet-Fallback)
|
||||||
|
2025-06-03 13:18:52 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server initialisiert (async_mode: threading)
|
||||||
|
@ -116,3 +116,4 @@
|
|||||||
2025-06-02 14:51:08 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet
|
2025-06-02 14:51:08 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet
|
||||||
2025-06-02 15:18:14 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet
|
2025-06-02 15:18:14 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet
|
||||||
2025-06-02 15:29:06 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet
|
2025-06-02 15:29:06 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet
|
||||||
|
2025-06-03 13:18:50 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet
|
||||||
|
@ -19,3 +19,6 @@
|
|||||||
2025-06-02 15:29:07 - [database_cleanup] database_cleanup - [INFO] INFO - 🧹 Starte umfassendes Datenbank-Cleanup...
|
2025-06-02 15:29:07 - [database_cleanup] database_cleanup - [INFO] INFO - 🧹 Starte umfassendes Datenbank-Cleanup...
|
||||||
2025-06-02 15:29:07 - [database_cleanup] database_cleanup - [INFO] INFO - 📝 Schritt 1: Schließe alle Datenbankverbindungen...
|
2025-06-02 15:29:07 - [database_cleanup] database_cleanup - [INFO] INFO - 📝 Schritt 1: Schließe alle Datenbankverbindungen...
|
||||||
2025-06-02 15:29:07 - [database_cleanup] database_cleanup - [INFO] INFO - 🔄 Schließe alle aktiven Datenbankverbindungen...
|
2025-06-02 15:29:07 - [database_cleanup] database_cleanup - [INFO] INFO - 🔄 Schließe alle aktiven Datenbankverbindungen...
|
||||||
|
2025-06-03 13:18:52 - [database_cleanup] database_cleanup - [INFO] INFO - 🧹 Starte umfassendes Datenbank-Cleanup...
|
||||||
|
2025-06-03 13:18:52 - [database_cleanup] database_cleanup - [INFO] INFO - 📝 Schritt 1: Schließe alle Datenbankverbindungen...
|
||||||
|
2025-06-03 13:18:52 - [database_cleanup] database_cleanup - [INFO] INFO - 🔄 Schließe alle aktiven Datenbankverbindungen...
|
||||||
|
@ -113,3 +113,4 @@
|
|||||||
2025-06-02 14:51:09 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand)
|
2025-06-02 14:51:09 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand)
|
||||||
2025-06-02 15:18:15 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand)
|
2025-06-02 15:18:15 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand)
|
||||||
2025-06-02 15:29:07 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand)
|
2025-06-02 15:29:07 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand)
|
||||||
|
2025-06-03 13:18:51 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand)
|
||||||
|
@ -6,3 +6,7 @@
|
|||||||
2025-06-02 15:29:07 - [error_recovery] error_recovery - [INFO] INFO - 🔍 Error-Monitoring gestartet
|
2025-06-02 15:29:07 - [error_recovery] error_recovery - [INFO] INFO - 🔍 Error-Monitoring gestartet
|
||||||
2025-06-02 15:29:07 - [error_recovery] error_recovery - [WARNING] WARNING - 🚨 Fehler erkannt: database_lock - 2025-06-01 00:29:13 - myp.app - ERROR - ❌ Fehler beim Datenbank-Cleanup: (sqlite3.OperationalError) database is locked
|
2025-06-02 15:29:07 - [error_recovery] error_recovery - [WARNING] WARNING - 🚨 Fehler erkannt: database_lock - 2025-06-01 00:29:13 - myp.app - ERROR - ❌ Fehler beim Datenbank-Cleanup: (sqlite3.OperationalError) database is locked
|
||||||
2025-06-02 15:29:07 - [error_recovery] error_recovery - [INFO] INFO - 🔧 Führe Recovery-Aktion aus: reset_database
|
2025-06-02 15:29:07 - [error_recovery] error_recovery - [INFO] INFO - 🔧 Führe Recovery-Aktion aus: reset_database
|
||||||
|
2025-06-03 13:18:52 - [error_recovery] error_recovery - [INFO] INFO - 🛡️ Error-Recovery-Manager initialisiert
|
||||||
|
2025-06-03 13:18:52 - [error_recovery] error_recovery - [INFO] INFO - 🔍 Error-Monitoring gestartet
|
||||||
|
2025-06-03 13:18:52 - [error_recovery] error_recovery - [WARNING] WARNING - 🚨 Fehler erkannt: database_lock - 2025-06-01 00:29:13 - myp.app - ERROR - ❌ Fehler beim Datenbank-Cleanup: (sqlite3.OperationalError) database is locked
|
||||||
|
2025-06-03 13:18:52 - [error_recovery] error_recovery - [INFO] INFO - 🔧 Führe Recovery-Aktion aus: reset_database
|
||||||
|
@ -232,3 +232,5 @@
|
|||||||
2025-06-02 15:18:16 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet
|
2025-06-02 15:18:16 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet
|
||||||
2025-06-02 15:29:07 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet
|
2025-06-02 15:29:07 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet
|
||||||
2025-06-02 15:29:07 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet
|
2025-06-02 15:29:07 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet
|
||||||
|
2025-06-03 13:18:51 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet
|
||||||
|
2025-06-03 13:18:52 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet
|
||||||
|
@ -230,3 +230,5 @@
|
|||||||
2025-06-02 15:18:16 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt
|
2025-06-02 15:18:16 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt
|
||||||
2025-06-02 15:29:07 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt
|
2025-06-02 15:29:07 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt
|
||||||
2025-06-02 15:29:07 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt
|
2025-06-02 15:29:07 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt
|
||||||
|
2025-06-03 13:18:52 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt
|
||||||
|
2025-06-03 13:18:52 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt
|
||||||
|
@ -115,3 +115,4 @@
|
|||||||
2025-06-02 14:51:09 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert
|
2025-06-02 14:51:09 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert
|
||||||
2025-06-02 15:18:16 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert
|
2025-06-02 15:18:16 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert
|
||||||
2025-06-02 15:29:07 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert
|
2025-06-02 15:29:07 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert
|
||||||
|
2025-06-03 13:18:52 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert
|
||||||
|
@ -3274,3 +3274,18 @@
|
|||||||
2025-06-02 15:29:32 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 5/6: 192.168.0.102
|
2025-06-02 15:29:32 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 5/6: 192.168.0.102
|
||||||
2025-06-02 15:29:38 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 6/6: 192.168.0.105
|
2025-06-02 15:29:38 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 6/6: 192.168.0.105
|
||||||
2025-06-02 15:29:44 - [printer_monitor] printer_monitor - [INFO] INFO - ✅ Steckdosen-Erkennung abgeschlossen: 0/6 Steckdosen gefunden in 36.0s
|
2025-06-02 15:29:44 - [printer_monitor] printer_monitor - [INFO] INFO - ✅ Steckdosen-Erkennung abgeschlossen: 0/6 Steckdosen gefunden in 36.0s
|
||||||
|
2025-06-03 13:18:50 - [printer_monitor] printer_monitor - [INFO] INFO - 🖨️ Drucker-Monitor initialisiert
|
||||||
|
2025-06-03 13:18:50 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Automatische Tapo-Erkennung in separatem Thread gestartet
|
||||||
|
2025-06-03 13:18:52 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Starte automatische Tapo-Steckdosenerkennung...
|
||||||
|
2025-06-03 13:18:52 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Teste 6 Standard-IPs aus der Konfiguration
|
||||||
|
2025-06-03 13:18:52 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 1/6: 192.168.0.103
|
||||||
|
2025-06-03 13:18:52 - [printer_monitor] printer_monitor - [INFO] INFO - 🚀 Starte Steckdosen-Initialisierung beim Programmstart...
|
||||||
|
2025-06-03 13:18:54 - [printer_monitor] printer_monitor - [WARNING] WARNING - ❌ Tapo P110 (192.168.0.103): Steckdose konnte nicht ausgeschaltet werden
|
||||||
|
2025-06-03 13:18:56 - [printer_monitor] printer_monitor - [WARNING] WARNING - ❌ Tapo P110 (192.168.0.104): Steckdose konnte nicht ausgeschaltet werden
|
||||||
|
2025-06-03 13:18:56 - [printer_monitor] printer_monitor - [INFO] INFO - 🎯 Steckdosen-Initialisierung abgeschlossen: 0/2 erfolgreich
|
||||||
|
2025-06-03 13:18:58 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 2/6: 192.168.0.104
|
||||||
|
2025-06-03 13:19:04 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 3/6: 192.168.0.100
|
||||||
|
2025-06-03 13:19:10 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 4/6: 192.168.0.101
|
||||||
|
2025-06-03 13:19:16 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 5/6: 192.168.0.102
|
||||||
|
2025-06-03 13:19:22 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 6/6: 192.168.0.105
|
||||||
|
2025-06-03 13:19:28 - [printer_monitor] printer_monitor - [INFO] INFO - ✅ Steckdosen-Erkennung abgeschlossen: 0/6 Steckdosen gefunden in 36.0s
|
||||||
|
@ -115,3 +115,4 @@
|
|||||||
2025-06-02 14:51:09 - [security] security - [INFO] INFO - 🔒 Security System initialisiert
|
2025-06-02 14:51:09 - [security] security - [INFO] INFO - 🔒 Security System initialisiert
|
||||||
2025-06-02 15:18:16 - [security] security - [INFO] INFO - 🔒 Security System initialisiert
|
2025-06-02 15:18:16 - [security] security - [INFO] INFO - 🔒 Security System initialisiert
|
||||||
2025-06-02 15:29:07 - [security] security - [INFO] INFO - 🔒 Security System initialisiert
|
2025-06-02 15:29:07 - [security] security - [INFO] INFO - 🔒 Security System initialisiert
|
||||||
|
2025-06-03 13:18:52 - [security] security - [INFO] INFO - 🔒 Security System initialisiert
|
||||||
|
@ -201,3 +201,4 @@
|
|||||||
2025-06-02 14:51:09 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert
|
2025-06-02 14:51:09 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert
|
||||||
2025-06-02 15:18:16 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert
|
2025-06-02 15:18:16 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert
|
||||||
2025-06-02 15:29:07 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert
|
2025-06-02 15:29:07 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert
|
||||||
|
2025-06-03 13:18:52 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert
|
||||||
|
@ -1043,3 +1043,12 @@
|
|||||||
2025-06-02 15:29:07 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert
|
2025-06-02 15:29:07 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert
|
||||||
2025-06-02 15:29:07 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert
|
2025-06-02 15:29:07 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert
|
||||||
2025-06-02 15:29:07 - [startup] startup - [INFO] INFO - ==================================================
|
2025-06-02 15:29:07 - [startup] startup - [INFO] INFO - ==================================================
|
||||||
|
2025-06-03 13:18:52 - [startup] startup - [INFO] INFO - ==================================================
|
||||||
|
2025-06-03 13:18:52 - [startup] startup - [INFO] INFO - 🚀 MYP Platform Backend wird gestartet...
|
||||||
|
2025-06-03 13:18:52 - [startup] startup - [INFO] INFO - 🐍 Python Version: 3.13.3 (tags/v3.13.3:6280bb5, Apr 8 2025, 14:47:33) [MSC v.1943 64 bit (AMD64)]
|
||||||
|
2025-06-03 13:18:52 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32)
|
||||||
|
2025-06-03 13:18:52 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend
|
||||||
|
2025-06-03 13:18:52 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-03T13:18:52.083035
|
||||||
|
2025-06-03 13:18:52 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert
|
||||||
|
2025-06-03 13:18:52 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert
|
||||||
|
2025-06-03 13:18:52 - [startup] startup - [INFO] INFO - ==================================================
|
||||||
|
@ -1,2 +1,3 @@
|
|||||||
2025-06-02 15:18:16 - [system_control] system_control - [INFO] INFO - 🔧 System-Control-Manager initialisiert
|
2025-06-02 15:18:16 - [system_control] system_control - [INFO] INFO - 🔧 System-Control-Manager initialisiert
|
||||||
2025-06-02 15:29:07 - [system_control] system_control - [INFO] INFO - 🔧 System-Control-Manager initialisiert
|
2025-06-02 15:29:07 - [system_control] system_control - [INFO] INFO - 🔧 System-Control-Manager initialisiert
|
||||||
|
2025-06-03 13:18:52 - [system_control] system_control - [INFO] INFO - 🔧 System-Control-Manager initialisiert
|
||||||
|
@ -495,3 +495,7 @@
|
|||||||
2025-06-02 15:29:05 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Subprocess automatisch gepatcht für UTF-8 Encoding (run + Popen)
|
2025-06-02 15:29:05 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Subprocess automatisch gepatcht für UTF-8 Encoding (run + Popen)
|
||||||
2025-06-02 15:29:05 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Globaler subprocess-Patch angewendet
|
2025-06-02 15:29:05 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Globaler subprocess-Patch angewendet
|
||||||
2025-06-02 15:29:05 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet
|
2025-06-02 15:29:05 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet
|
||||||
|
2025-06-03 13:18:49 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an...
|
||||||
|
2025-06-03 13:18:49 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Subprocess automatisch gepatcht für UTF-8 Encoding (run + Popen)
|
||||||
|
2025-06-03 13:18:49 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Globaler subprocess-Patch angewendet
|
||||||
|
2025-06-03 13:18:49 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet
|
||||||
|
@ -57,11 +57,11 @@ if ($LASTEXITCODE -ne 0) {
|
|||||||
|
|
||||||
# Flask-App verfügbarkeit prüfen
|
# Flask-App verfügbarkeit prüfen
|
||||||
Write-Host ""
|
Write-Host ""
|
||||||
Write-Host "🔍 Prüfe Flask-App..." -ForegroundColor Blue
|
Write-Host "Prüfe Flask-App..." -ForegroundColor Blue
|
||||||
$flaskCheck = python -c "import sys; sys.path.append('..'); from app import app; print('✅ Flask-App verfügbar')" 2>&1
|
$flaskCheck = python -c "import sys; sys.path.append('..'); exec('from app import app'); print('Flask-App verfügbar')" 2>&1
|
||||||
if ($LASTEXITCODE -ne 0) {
|
if ($LASTEXITCODE -ne 0) {
|
||||||
Write-Host "⚠️ Flask-App nicht direkt verfügbar" -ForegroundColor Yellow
|
Write-Host "Flask-App nicht direkt verfügbar" -ForegroundColor Yellow
|
||||||
Write-Host "📋 Das Tool wird mit Standard-Routen arbeiten" -ForegroundColor Blue
|
Write-Host "Das Tool wird mit Standard-Routen arbeiten" -ForegroundColor Blue
|
||||||
} else {
|
} else {
|
||||||
Write-Host $flaskCheck -ForegroundColor Green
|
Write-Host $flaskCheck -ForegroundColor Green
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"server": {
|
"server": {
|
||||||
"base_url": "http://localhost:5000",
|
"base_url": "http://localhost:5000",
|
||||||
"admin_email": "admin@example.com",
|
"admin_email": "admin@mercedes-benz.com",
|
||||||
"admin_password": "admin123"
|
"admin_password": "744563017196A"
|
||||||
},
|
},
|
||||||
"browser": {
|
"browser": {
|
||||||
"type": "chrome",
|
"type": "chrome",
|
||||||
|
202
backend/setup.sh
202
backend/setup.sh
@ -23,6 +23,9 @@ readonly FIREWALL_SERVICE_NAME="myp-firewall"
|
|||||||
readonly KIOSK_USER="kiosk"
|
readonly KIOSK_USER="kiosk"
|
||||||
readonly CURRENT_DIR="$(pwd)"
|
readonly CURRENT_DIR="$(pwd)"
|
||||||
readonly INSTALL_LOG="/var/log/myp-install.log"
|
readonly INSTALL_LOG="/var/log/myp-install.log"
|
||||||
|
readonly ERROR_LOG="/var/log/myp-install-errors.log"
|
||||||
|
readonly WARNING_LOG="/var/log/myp-install-warnings.log"
|
||||||
|
readonly DEBUG_LOG="/var/log/myp-install-debug.log"
|
||||||
readonly HTTPS_PORT="443"
|
readonly HTTPS_PORT="443"
|
||||||
readonly HTTPS_URL="https://localhost:${HTTPS_PORT}"
|
readonly HTTPS_URL="https://localhost:${HTTPS_PORT}"
|
||||||
readonly SYSTEMD_DIR="$CURRENT_DIR/systemd"
|
readonly SYSTEMD_DIR="$CURRENT_DIR/systemd"
|
||||||
@ -42,17 +45,111 @@ readonly CYAN='\033[0;36m'
|
|||||||
readonly NC='\033[0m'
|
readonly NC='\033[0m'
|
||||||
|
|
||||||
# =========================== VERBESSERTE LOGGING-FUNKTIONEN ===========================
|
# =========================== VERBESSERTE LOGGING-FUNKTIONEN ===========================
|
||||||
|
# Globale Variablen für Fehler-Tracking
|
||||||
|
ERROR_COUNT=0
|
||||||
|
WARNING_COUNT=0
|
||||||
|
|
||||||
|
# Log-Dateien initialisieren
|
||||||
|
init_logging() {
|
||||||
|
# Erstelle Log-Verzeichnis falls nötig
|
||||||
|
mkdir -p "$(dirname "$INSTALL_LOG")" 2>/dev/null || true
|
||||||
|
|
||||||
|
# Initialisiere alle Log-Dateien
|
||||||
|
{
|
||||||
|
echo "================================================================="
|
||||||
|
echo "MYP Installation Log - $(date '+%Y-%m-%d %H:%M:%S')"
|
||||||
|
echo "Script Version: $APP_VERSION"
|
||||||
|
echo "System: $(uname -a)"
|
||||||
|
echo "================================================================="
|
||||||
|
echo ""
|
||||||
|
} > "$INSTALL_LOG"
|
||||||
|
|
||||||
|
{
|
||||||
|
echo "================================================================="
|
||||||
|
echo "MYP Installation FEHLER Log - $(date '+%Y-%m-%d %H:%M:%S')"
|
||||||
|
echo "================================================================="
|
||||||
|
echo ""
|
||||||
|
} > "$ERROR_LOG"
|
||||||
|
|
||||||
|
{
|
||||||
|
echo "================================================================="
|
||||||
|
echo "MYP Installation WARNUNGEN Log - $(date '+%Y-%m-%d %H:%M:%S')"
|
||||||
|
echo "================================================================="
|
||||||
|
echo ""
|
||||||
|
} > "$WARNING_LOG"
|
||||||
|
|
||||||
|
{
|
||||||
|
echo "================================================================="
|
||||||
|
echo "MYP Installation DEBUG Log - $(date '+%Y-%m-%d %H:%M:%S')"
|
||||||
|
echo "================================================================="
|
||||||
|
echo ""
|
||||||
|
} > "$DEBUG_LOG"
|
||||||
|
}
|
||||||
|
|
||||||
log() {
|
log() {
|
||||||
echo -e "${GREEN}[$(date '+%Y-%m-%d %H:%M:%S')] $1${NC}" | tee -a "$INSTALL_LOG"
|
local message="[$(date '+%Y-%m-%d %H:%M:%S')] $1"
|
||||||
|
echo -e "${GREEN}${message}${NC}" | tee -a "$INSTALL_LOG"
|
||||||
}
|
}
|
||||||
|
|
||||||
error() {
|
error() {
|
||||||
echo -e "${RED}[FEHLER] $1${NC}" | tee -a "$INSTALL_LOG"
|
local timestamp="$(date '+%Y-%m-%d %H:%M:%S')"
|
||||||
|
local caller="${BASH_SOURCE[1]##*/}:${BASH_LINENO[0]}"
|
||||||
|
local message="[FEHLER] $1"
|
||||||
|
|
||||||
|
# Erhöhe Fehler-Zähler
|
||||||
|
((ERROR_COUNT++))
|
||||||
|
|
||||||
|
# Ausgabe auf Konsole
|
||||||
|
echo -e "${RED}${message}${NC}" | tee -a "$INSTALL_LOG"
|
||||||
|
|
||||||
|
# Detaillierte Fehler-Information in Fehler-Log
|
||||||
|
{
|
||||||
|
echo "[$timestamp] FEHLER #$ERROR_COUNT"
|
||||||
|
echo "Quelle: $caller"
|
||||||
|
echo "Nachricht: $1"
|
||||||
|
echo "Arbeitsverzeichnis: $(pwd)"
|
||||||
|
echo "Benutzer: $(whoami)"
|
||||||
|
echo "---"
|
||||||
|
echo ""
|
||||||
|
} >> "$ERROR_LOG"
|
||||||
|
|
||||||
|
# Debug-Informationen sammeln
|
||||||
|
{
|
||||||
|
echo "[$timestamp] FEHLER AUFGETRETEN - Debug-Info:"
|
||||||
|
echo "Caller: $caller"
|
||||||
|
echo "PWD: $(pwd)"
|
||||||
|
echo "User: $(whoami)"
|
||||||
|
echo "Disk Space: $(df -h / | tail -1)"
|
||||||
|
echo "Memory: $(free -m | grep '^Mem:' | awk '{print $3"/"$2" MB"}')"
|
||||||
|
echo "Load Average: $(uptime | awk -F'load average:' '{print $2}')"
|
||||||
|
echo "Recent commands from history:"
|
||||||
|
history | tail -5 2>/dev/null || echo "History nicht verfügbar"
|
||||||
|
echo "==============================================="
|
||||||
|
echo ""
|
||||||
|
} >> "$DEBUG_LOG"
|
||||||
|
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
warning() {
|
warning() {
|
||||||
echo -e "${YELLOW}[WARNUNG] $1${NC}" | tee -a "$INSTALL_LOG"
|
local timestamp="$(date '+%Y-%m-%d %H:%M:%S')"
|
||||||
|
local caller="${BASH_SOURCE[1]##*/}:${BASH_LINENO[0]}"
|
||||||
|
local message="[WARNUNG] $1"
|
||||||
|
|
||||||
|
# Erhöhe Warnungs-Zähler
|
||||||
|
((WARNING_COUNT++))
|
||||||
|
|
||||||
|
# Ausgabe auf Konsole
|
||||||
|
echo -e "${YELLOW}${message}${NC}" | tee -a "$INSTALL_LOG"
|
||||||
|
|
||||||
|
# Detaillierte Warnungs-Information in Warnungs-Log
|
||||||
|
{
|
||||||
|
echo "[$timestamp] WARNUNG #$WARNING_COUNT"
|
||||||
|
echo "Quelle: $caller"
|
||||||
|
echo "Nachricht: $1"
|
||||||
|
echo "---"
|
||||||
|
echo ""
|
||||||
|
} >> "$WARNING_LOG"
|
||||||
}
|
}
|
||||||
|
|
||||||
info() {
|
info() {
|
||||||
@ -68,7 +165,66 @@ success() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
debug() {
|
debug() {
|
||||||
|
local timestamp="$(date '+%Y-%m-%d %H:%M:%S')"
|
||||||
|
local caller="${BASH_SOURCE[1]##*/}:${BASH_LINENO[0]}"
|
||||||
|
|
||||||
|
# Debug sowohl in normales Log als auch Debug-Log
|
||||||
echo -e "${BLUE}[DEBUG] $1${NC}" >> "$INSTALL_LOG"
|
echo -e "${BLUE}[DEBUG] $1${NC}" >> "$INSTALL_LOG"
|
||||||
|
|
||||||
|
{
|
||||||
|
echo "[$timestamp] DEBUG von $caller"
|
||||||
|
echo "$1"
|
||||||
|
echo "---"
|
||||||
|
echo ""
|
||||||
|
} >> "$DEBUG_LOG"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Fehler-Zusammenfassung anzeigen
|
||||||
|
show_error_summary() {
|
||||||
|
echo ""
|
||||||
|
echo -e "${CYAN}=================================================================${NC}"
|
||||||
|
echo -e "${CYAN} INSTALLATION ABGESCHLOSSEN - FEHLER-ZUSAMMENFASSUNG${NC}"
|
||||||
|
echo -e "${CYAN}=================================================================${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo -e "${BLUE}📊 Statistiken:${NC}"
|
||||||
|
echo -e " ${RED}❌ Fehler: $ERROR_COUNT${NC}"
|
||||||
|
echo -e " ${YELLOW}⚠️ Warnungen: $WARNING_COUNT${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo -e "${BLUE}📁 Log-Dateien:${NC}"
|
||||||
|
echo -e " 📄 Vollständiges Log: $INSTALL_LOG"
|
||||||
|
echo -e " 🚨 Fehler-Log: $ERROR_LOG"
|
||||||
|
echo -e " ⚠️ Warnungs-Log: $WARNING_LOG"
|
||||||
|
echo -e " 🔍 Debug-Log: $DEBUG_LOG"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
if [ $ERROR_COUNT -gt 0 ]; then
|
||||||
|
echo -e "${RED}⚠️ Es sind $ERROR_COUNT Fehler aufgetreten!${NC}"
|
||||||
|
echo -e "${RED} Bitte prüfen Sie: $ERROR_LOG${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Zeige die letzten 3 Fehler an
|
||||||
|
if [ -f "$ERROR_LOG" ] && [ -s "$ERROR_LOG" ]; then
|
||||||
|
echo -e "${RED}🔍 Letzte Fehler:${NC}"
|
||||||
|
tail -n 20 "$ERROR_LOG" | head -n 15
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $WARNING_COUNT -gt 0 ]; then
|
||||||
|
echo -e "${YELLOW}⚠️ Es sind $WARNING_COUNT Warnungen aufgetreten${NC}"
|
||||||
|
echo -e "${YELLOW} Bitte prüfen Sie: $WARNING_LOG${NC}"
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $ERROR_COUNT -eq 0 ] && [ $WARNING_COUNT -eq 0 ]; then
|
||||||
|
echo -e "${GREEN}✅ Installation ohne Fehler oder Warnungen abgeschlossen!${NC}"
|
||||||
|
elif [ $ERROR_COUNT -eq 0 ]; then
|
||||||
|
echo -e "${GREEN}✅ Installation erfolgreich mit $WARNING_COUNT Warnungen${NC}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "${CYAN}=================================================================${NC}"
|
||||||
}
|
}
|
||||||
|
|
||||||
# =========================== RETRY-MECHANISMEN ===========================
|
# =========================== RETRY-MECHANISMEN ===========================
|
||||||
@ -1930,6 +2086,9 @@ show_menu() {
|
|||||||
|
|
||||||
# =========================== INSTALLATIONS-MODI ===========================
|
# =========================== INSTALLATIONS-MODI ===========================
|
||||||
install_dependencies_only() {
|
install_dependencies_only() {
|
||||||
|
# Logging initialisieren
|
||||||
|
init_logging
|
||||||
|
|
||||||
log "=== MODUS: ROBUSTE ABHÄNGIGKEITEN-INSTALLATION FÜR MANUELLES TESTEN ==="
|
log "=== MODUS: ROBUSTE ABHÄNGIGKEITEN-INSTALLATION FÜR MANUELLES TESTEN ==="
|
||||||
|
|
||||||
# Grundlegende System-Validierung
|
# Grundlegende System-Validierung
|
||||||
@ -1986,9 +2145,15 @@ install_dependencies_only() {
|
|||||||
info "🚀 System bereit für manuelle Tests und Entwicklung!"
|
info "🚀 System bereit für manuelle Tests und Entwicklung!"
|
||||||
info "🌐 HTTPS-Backend sollte verfügbar sein: $HTTPS_URL"
|
info "🌐 HTTPS-Backend sollte verfügbar sein: $HTTPS_URL"
|
||||||
info "⚙️ Manuelle App-Start Alternative: cd /opt/myp && python3 app.py"
|
info "⚙️ Manuelle App-Start Alternative: cd /opt/myp && python3 app.py"
|
||||||
|
|
||||||
|
# Fehler-Zusammenfassung anzeigen
|
||||||
|
show_error_summary
|
||||||
}
|
}
|
||||||
|
|
||||||
install_full_production_system() {
|
install_full_production_system() {
|
||||||
|
# Logging initialisieren
|
||||||
|
init_logging
|
||||||
|
|
||||||
log "=== MODUS: VOLLSTÄNDIGE ROBUSTE KIOSK-INSTALLATION MIT REMOTE-ZUGANG ==="
|
log "=== MODUS: VOLLSTÄNDIGE ROBUSTE KIOSK-INSTALLATION MIT REMOTE-ZUGANG ==="
|
||||||
|
|
||||||
# Umfassende System-Validierung
|
# Umfassende System-Validierung
|
||||||
@ -2082,6 +2247,9 @@ install_full_production_system() {
|
|||||||
info ""
|
info ""
|
||||||
success "🚀 Produktionssystem vollständig einsatzbereit!"
|
success "🚀 Produktionssystem vollständig einsatzbereit!"
|
||||||
warning "⚠️ NEUSTART ERFORDERLICH für automatischen Kiosk-Start: sudo reboot"
|
warning "⚠️ NEUSTART ERFORDERLICH für automatischen Kiosk-Start: sudo reboot"
|
||||||
|
|
||||||
|
# Fehler-Zusammenfassung anzeigen
|
||||||
|
show_error_summary
|
||||||
}
|
}
|
||||||
|
|
||||||
# =========================== RDP & SSH ZUGANG ===========================
|
# =========================== RDP & SSH ZUGANG ===========================
|
||||||
@ -2849,8 +3017,8 @@ EOF
|
|||||||
|
|
||||||
# =========================== HAUPTPROGRAMM ===========================
|
# =========================== HAUPTPROGRAMM ===========================
|
||||||
main() {
|
main() {
|
||||||
# Erstelle Log-Datei
|
# Erstelle Log-Verzeichnis
|
||||||
touch "$INSTALL_LOG" || true
|
mkdir -p "$(dirname "$INSTALL_LOG")" 2>/dev/null || true
|
||||||
|
|
||||||
while true; do
|
while true; do
|
||||||
show_menu
|
show_menu
|
||||||
@ -2860,21 +3028,41 @@ main() {
|
|||||||
1)
|
1)
|
||||||
install_dependencies_only
|
install_dependencies_only
|
||||||
echo ""
|
echo ""
|
||||||
|
echo -e "${BLUE}📁 Log-Dateien zur Überprüfung:${NC}"
|
||||||
|
echo -e " 📄 Vollständiges Log: $INSTALL_LOG"
|
||||||
|
[ $ERROR_COUNT -gt 0 ] && echo -e " 🚨 Fehler-Log: $ERROR_LOG"
|
||||||
|
[ $WARNING_COUNT -gt 0 ] && echo -e " ⚠️ Warnungs-Log: $WARNING_LOG"
|
||||||
|
echo -e " 🔍 Debug-Log: $DEBUG_LOG"
|
||||||
|
echo ""
|
||||||
echo -n "Drücken Sie Enter um fortzufahren..."
|
echo -n "Drücken Sie Enter um fortzufahren..."
|
||||||
read -r
|
read -r
|
||||||
;;
|
;;
|
||||||
2)
|
2)
|
||||||
install_full_production_system
|
install_full_production_system
|
||||||
echo ""
|
echo ""
|
||||||
|
echo -e "${BLUE}📁 Log-Dateien zur Überprüfung:${NC}"
|
||||||
|
echo -e " 📄 Vollständiges Log: $INSTALL_LOG"
|
||||||
|
[ $ERROR_COUNT -gt 0 ] && echo -e " 🚨 Fehler-Log: $ERROR_LOG"
|
||||||
|
[ $WARNING_COUNT -gt 0 ] && echo -e " ⚠️ Warnungs-Log: $WARNING_LOG"
|
||||||
|
echo -e " 🔍 Debug-Log: $DEBUG_LOG"
|
||||||
|
echo ""
|
||||||
echo -n "Drücken Sie Enter um fortzufahren..."
|
echo -n "Drücken Sie Enter um fortzufahren..."
|
||||||
read -r
|
read -r
|
||||||
;;
|
;;
|
||||||
3)
|
3)
|
||||||
log "Setup-Skript beendet"
|
echo ""
|
||||||
|
echo -e "${CYAN}Setup-Skript beendet${NC}"
|
||||||
|
if [ -f "$INSTALL_LOG" ]; then
|
||||||
|
echo -e "${BLUE}📁 Verfügbare Log-Dateien:${NC}"
|
||||||
|
echo -e " 📄 Vollständiges Log: $INSTALL_LOG"
|
||||||
|
[ -f "$ERROR_LOG" ] && echo -e " 🚨 Fehler-Log: $ERROR_LOG"
|
||||||
|
[ -f "$WARNING_LOG" ] && echo -e " ⚠️ Warnungs-Log: $WARNING_LOG"
|
||||||
|
[ -f "$DEBUG_LOG" ] && echo -e " 🔍 Debug-Log: $DEBUG_LOG"
|
||||||
|
fi
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
error "Ungültige Auswahl. Bitte wählen Sie 1-3."
|
echo -e "${RED}Ungültige Auswahl. Bitte wählen Sie 1-3.${NC}"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
2
backend/static/css/tailwind.min.css
vendored
2
backend/static/css/tailwind.min.css
vendored
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user