From 45547a8da63d4ef9cd8d2bb2842aac947407fc0d Mon Sep 17 00:00:00 2001 From: Till Tomczak Date: Tue, 3 Jun 2025 13:23:58 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=89=20Feat/DB:=20Enhanced=20database?= =?UTF-8?q?=20logging=20&=20WAL=20management=20for=20improved=20stability?= =?UTF-8?q?=20and=20performance=20in=20backend/database/myp.db-wal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/__pycache__/app.cpython-313.pyc | Bin 388225 -> 414798 bytes backend/database/myp.db | Bin 131072 -> 131072 bytes backend/database/myp.db-wal | Bin 20632 -> 4152 bytes backend/scripts/run_screenshot_tool.ps1 | 112 ++++++++++++------------ backend/scripts/screenshot_tool.log | 0 backend/setup.sh | 82 +++++++++++++++++ 6 files changed, 138 insertions(+), 56 deletions(-) create mode 100644 backend/scripts/screenshot_tool.log diff --git a/backend/__pycache__/app.cpython-313.pyc b/backend/__pycache__/app.cpython-313.pyc index 37b918840977e650775324276194a1b947371ae8..99402d19854ccdeeb5c3df16b09ae96eb1b71d51 100644 GIT binary patch delta 72643 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
  • 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 diff --git a/backend/scripts/run_screenshot_tool.ps1 b/backend/scripts/run_screenshot_tool.ps1 index ea9af571..36cf07a1 100644 --- a/backend/scripts/run_screenshot_tool.ps1 +++ b/backend/scripts/run_screenshot_tool.ps1 @@ -1,4 +1,4 @@ -# PowerShell-Skript für automatische Screenshots +# PowerShell-Skript fuer automatische Screenshots # ============================================= param( @@ -10,72 +10,72 @@ param( ) Write-Host "===============================================" -ForegroundColor Cyan -Write-Host "🎯 AUTOMATISCHES SCREENSHOT-TOOL FÜR SCHULUNGEN" -ForegroundColor Yellow +Write-Host "AUTOMATISCHES SCREENSHOT-TOOL FUER SCHULUNGEN" -ForegroundColor Yellow Write-Host "===============================================" -ForegroundColor Cyan Write-Host "" -# Arbeitsverzeichnis zum Skript-Ordner ändern +# Arbeitsverzeichnis zum Skript-Ordner aendern $ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path Set-Location $ScriptDir -# Prüfe ob Python verfügbar ist +# Pruefe ob Python verfuegbar ist try { $pythonVersion = python --version 2>&1 - Write-Host "✅ Python gefunden: $pythonVersion" -ForegroundColor Green + Write-Host "Python gefunden: $pythonVersion" -ForegroundColor Green } catch { - Write-Host "❌ Python nicht gefunden!" -ForegroundColor Red - Write-Host "💡 Installieren Sie Python von https://python.org" -ForegroundColor Yellow + Write-Host "Python nicht gefunden!" -ForegroundColor Red + Write-Host "Installieren Sie Python von https://python.org" -ForegroundColor Yellow exit 1 } -# Prüfe ob Selenium installiert ist -$seleniumCheck = python -c "import selenium; print('✅ Selenium verfügbar')" 2>&1 +# Pruefe ob Selenium installiert ist +$seleniumCheck = python -c "import selenium; print('Selenium verfuegbar')" 2>&1 if ($LASTEXITCODE -ne 0) { - Write-Host "⚠️ Selenium nicht installiert. Installiere jetzt..." -ForegroundColor Yellow + Write-Host "Selenium nicht installiert. Installiere jetzt..." -ForegroundColor Yellow pip install selenium webdriver-manager if ($LASTEXITCODE -ne 0) { - Write-Host "❌ Selenium-Installation fehlgeschlagen!" -ForegroundColor Red + Write-Host "Selenium-Installation fehlgeschlagen!" -ForegroundColor Red exit 1 } - Write-Host "✅ Selenium erfolgreich installiert" -ForegroundColor Green + Write-Host "Selenium erfolgreich installiert" -ForegroundColor Green } else { Write-Host $seleniumCheck -ForegroundColor Green } -# Prüfe ChromeDriver -$chromeCheck = python -c "from selenium import webdriver; from selenium.webdriver.chrome.service import Service; print('✅ Chrome WebDriver verfügbar')" 2>&1 +# Pruefe ChromeDriver +$chromeCheck = python -c "exec('from selenium import webdriver'); exec('from selenium.webdriver.chrome.service import Service'); print('Chrome WebDriver verfuegbar')" 2>&1 if ($LASTEXITCODE -ne 0) { - Write-Host "⚠️ ChromeDriver nicht gefunden. Installiere webdriver-manager..." -ForegroundColor Yellow + Write-Host "ChromeDriver nicht gefunden. Installiere webdriver-manager..." -ForegroundColor Yellow pip install webdriver-manager if ($LASTEXITCODE -ne 0) { - Write-Host "❌ WebDriver-Manager-Installation fehlgeschlagen!" -ForegroundColor Red - Write-Host "💡 Manuell ChromeDriver von https://chromedriver.chromium.org/ herunterladen" -ForegroundColor Yellow + Write-Host "WebDriver-Manager-Installation fehlgeschlagen!" -ForegroundColor Red + Write-Host "Manuell ChromeDriver von https://chromedriver.chromium.org/ herunterladen" -ForegroundColor Yellow } else { - Write-Host "✅ WebDriver-Manager installiert" -ForegroundColor Green + Write-Host "WebDriver-Manager installiert" -ForegroundColor Green } } -# Flask-App verfügbarkeit prüfen +# Flask-App verfuegbarkeit pruefen Write-Host "" -Write-Host "Prüfe Flask-App..." -ForegroundColor Blue -$flaskCheck = python -c "import sys; sys.path.append('..'); exec('from app import app'); print('Flask-App verfügbar')" 2>&1 +Write-Host "Pruefe Flask-App..." -ForegroundColor Blue +$flaskCheck = python -c "import sys; sys.path.append('..'); exec('from app import app'); print('Flask-App verfuegbar')" 2>&1 if ($LASTEXITCODE -ne 0) { - Write-Host "Flask-App nicht direkt verfügbar" -ForegroundColor Yellow + Write-Host "Flask-App nicht direkt verfuegbar" -ForegroundColor Yellow Write-Host "Das Tool wird mit Standard-Routen arbeiten" -ForegroundColor Blue } else { Write-Host $flaskCheck -ForegroundColor Green } Write-Host "" -Write-Host "🚀 STARTE SCREENSHOT-TOOL" -ForegroundColor Green -Write-Host "=" * 30 -ForegroundColor Green +Write-Host "STARTE SCREENSHOT-TOOL" -ForegroundColor Green +Write-Host "==============================" -ForegroundColor Green -# Parameter für das Python-Skript vorbereiten +# Parameter fuer das Python-Skript vorbereiten $pythonArgs = @("screenshot_tool.py") if ($QuickRun) { - Write-Host "⚡ Quick-Run-Modus aktiviert" -ForegroundColor Yellow - # Setze Umgebungsvariablen für automatische Konfiguration + Write-Host "Quick-Run-Modus aktiviert" -ForegroundColor Yellow + # Setze Umgebungsvariablen fuer automatische Konfiguration $env:SCREENSHOT_AUTO_MODE = "true" $env:SCREENSHOT_HEADLESS = "true" @@ -88,13 +88,13 @@ if ($QuickRun) { } } -# Tool ausführen +# Tool ausfuehren try { if ($Interactive) { - Write-Host "🎛️ Interaktiver Modus - Folgen Sie den Anweisungen" -ForegroundColor Blue + Write-Host "Interaktiver Modus - Folgen Sie den Anweisungen" -ForegroundColor Blue python @pythonArgs } else { - Write-Host "🤖 Automatischer Modus" -ForegroundColor Blue + Write-Host "Automatischer Modus" -ForegroundColor Blue python @pythonArgs } @@ -102,17 +102,17 @@ try { if ($exitCode -eq 0) { Write-Host "" - Write-Host "🎉 SCREENSHOT-ERSTELLUNG ERFOLGREICH ABGESCHLOSSEN!" -ForegroundColor Green + Write-Host "SCREENSHOT-ERSTELLUNG ERFOLGREICH ABGESCHLOSSEN!" -ForegroundColor Green Write-Host "" # Zeige Ausgabe-Ordner an $outputPath = "docs\schulung\screenshots" if (Test-Path $outputPath) { - Write-Host "📁 Screenshots verfügbar in:" -ForegroundColor Blue + Write-Host "Screenshots verfuegbar in:" -ForegroundColor Blue Write-Host " $(Resolve-Path $outputPath)" -ForegroundColor White - # Frage ob Ordner geöffnet werden soll - $openFolder = Read-Host "📂 Möchten Sie den Screenshot-Ordner öffnen? (j/n)" + # Frage ob Ordner geoeffnet werden soll + $openFolder = Read-Host "Moechten Sie den Screenshot-Ordner oeffnen? (j/n)" if ($openFolder -eq "j" -or $openFolder -eq "ja" -or $openFolder -eq "y" -or $openFolder -eq "yes") { Start-Process "explorer.exe" -ArgumentList (Resolve-Path $outputPath) } @@ -122,10 +122,10 @@ try { $reportPath = "$outputPath\screenshot_bericht.md" if (Test-Path $reportPath) { Write-Host "" - Write-Host "📊 Detaillierter Bericht verfügbar:" -ForegroundColor Blue + Write-Host "Detaillierter Bericht verfuegbar:" -ForegroundColor Blue Write-Host " $(Resolve-Path $reportPath)" -ForegroundColor White - $openReport = Read-Host "📖 Möchten Sie den Bericht öffnen? (j/n)" + $openReport = Read-Host "Moechten Sie den Bericht oeffnen? (j/n)" if ($openReport -eq "j" -or $openReport -eq "ja" -or $openReport -eq "y" -or $openReport -eq "yes") { Start-Process "notepad.exe" -ArgumentList (Resolve-Path $reportPath) } @@ -133,37 +133,37 @@ try { } else { Write-Host "" - Write-Host "❌ FEHLER BEI DER SCREENSHOT-ERSTELLUNG" -ForegroundColor Red - Write-Host "📋 Überprüfen Sie die Logs für Details" -ForegroundColor Yellow + Write-Host "FEHLER BEI DER SCREENSHOT-ERSTELLUNG" -ForegroundColor Red + Write-Host "Ueberpruefen Sie die Logs fuer Details" -ForegroundColor Yellow } } catch { Write-Host "" - Write-Host "❌ UNERWARTETER FEHLER: $($_.Exception.Message)" -ForegroundColor Red + Write-Host "UNERWARTETER FEHLER: $($_.Exception.Message)" -ForegroundColor Red $exitCode = 1 } Write-Host "" -Write-Host "💡 VERWENDUNGSHINWEISE FÜR SCHULUNGEN:" -ForegroundColor Cyan -Write-Host "=" * 40 -ForegroundColor Cyan -Write-Host "• Admin-Screenshots: docs\schulung\screenshots\admin\" -ForegroundColor White -Write-Host "• Benutzer-Screenshots: docs\schulung\screenshots\benutzer\" -ForegroundColor White -Write-Host "• Öffentliche Screenshots: docs\schulung\screenshots\oeffentlich\" -ForegroundColor White -Write-Host "• Verschiedene Auflösungen in Unterordnern verfügbar" -ForegroundColor White -Write-Host "• Perfekt für PowerPoint-Präsentationen geeignet" -ForegroundColor White +Write-Host "VERWENDUNGSHINWEISE FUER SCHULUNGEN:" -ForegroundColor Cyan +Write-Host "========================================" -ForegroundColor Cyan +Write-Host "- Admin-Screenshots: docs\schulung\screenshots\admin\" -ForegroundColor White +Write-Host "- Benutzer-Screenshots: docs\schulung\screenshots\benutzer\" -ForegroundColor White +Write-Host "- Oeffentliche Screenshots: docs\schulung\screenshots\oeffentlich\" -ForegroundColor White +Write-Host "- Verschiedene Aufloesungen in Unterordnern verfuegbar" -ForegroundColor White +Write-Host "- Perfekt fuer PowerPoint-Praesentationen geeignet" -ForegroundColor White Write-Host "" -Write-Host "🎓 TIPPS FÜR PRÄSENTATIONEN:" -ForegroundColor Yellow -Write-Host "• Desktop-Screenshots für Hauptpräsentationen verwenden" -ForegroundColor White -Write-Host "• Mobile-Screenshots für Responsive-Design zeigen" -ForegroundColor White -Write-Host "• Admin-Ordner für Administrator-Schulungen" -ForegroundColor White -Write-Host "• Benutzer-Ordner für allgemeine Mitarbeiterschulungen" -ForegroundColor White +Write-Host "TIPPS FUER PRAESENTATIONEN:" -ForegroundColor Yellow +Write-Host "- Desktop-Screenshots fuer Hauptpraesentationen verwenden" -ForegroundColor White +Write-Host "- Mobile-Screenshots fuer Responsive-Design zeigen" -ForegroundColor White +Write-Host "- Admin-Ordner fuer Administrator-Schulungen" -ForegroundColor White +Write-Host "- Benutzer-Ordner fuer allgemeine Mitarbeiterschulungen" -ForegroundColor White Write-Host "" -Write-Host "📞 Bei Problemen:" -ForegroundColor Magenta -Write-Host "• Log-Datei prüfen: screenshot_tool.log" -ForegroundColor White -Write-Host "• Server läuft auf korrekter URL?" -ForegroundColor White -Write-Host "• Admin-Zugangsdaten korrekt?" -ForegroundColor White -Write-Host "• ChromeDriver installiert?" -ForegroundColor White +Write-Host "Bei Problemen:" -ForegroundColor Magenta +Write-Host "- Log-Datei pruefen: screenshot_tool.log" -ForegroundColor White +Write-Host "- Server laeuft auf korrekter URL?" -ForegroundColor White +Write-Host "- Admin-Zugangsdaten korrekt?" -ForegroundColor White +Write-Host "- ChromeDriver installiert?" -ForegroundColor White exit $exitCode \ No newline at end of file diff --git a/backend/scripts/screenshot_tool.log b/backend/scripts/screenshot_tool.log new file mode 100644 index 00000000..e69de29b diff --git a/backend/setup.sh b/backend/setup.sh index 7247be87..ddfd98bf 100644 --- a/backend/setup.sh +++ b/backend/setup.sh @@ -225,6 +225,65 @@ show_error_summary() { fi echo -e "${CYAN}=================================================================${NC}" + + # Erstelle automatische Log-Zusammenfassung + create_log_summary +} + +# Automatische Log-Zusammenfassung erstellen +create_log_summary() { + local summary_file="/var/log/myp-install-summary.txt" + + { + echo "=================================================================" + echo "MYP INSTALLATION ZUSAMMENFASSUNG" + echo "Erstellt: $(date '+%Y-%m-%d %H:%M:%S')" + echo "=================================================================" + echo "" + echo "STATISTIKEN:" + echo "- Fehler: $ERROR_COUNT" + echo "- Warnungen: $WARNING_COUNT" + echo "- Script Version: $APP_VERSION" + echo "- System: $(uname -a 2>/dev/null || echo 'Unbekannt')" + echo "- Hostname: $(hostname 2>/dev/null || echo 'Unbekannt')" + echo "- User: $(whoami 2>/dev/null || echo 'Unbekannt')" + echo "" + echo "SYSTEM-INFORMATIONEN:" + echo "- Festplattenspeicher: $(df -h / | tail -1 2>/dev/null || echo 'Nicht verfügbar')" + echo "- Arbeitsspeicher: $(free -m | grep '^Mem:' | awk '{print $3"/"$2" MB"}' 2>/dev/null || echo 'Nicht verfügbar')" + echo "- Python Version: $(python3 --version 2>&1 || echo 'Nicht installiert')" + echo "- Node.js Version: $(node --version 2>&1 || echo 'Nicht installiert')" + echo "" + echo "LOG-DATEIEN:" + echo "- Vollständiges Log: $INSTALL_LOG" + echo "- Fehler-Log: $ERROR_LOG" + echo "- Warnungs-Log: $WARNING_LOG" + echo "- Debug-Log: $DEBUG_LOG" + echo "" + + if [ $ERROR_COUNT -gt 0 ] && [ -f "$ERROR_LOG" ] && [ -s "$ERROR_LOG" ]; then + echo "FEHLER-ÜBERSICHT:" + echo "=================" + tail -n 50 "$ERROR_LOG" + echo "" + fi + + if [ $WARNING_COUNT -gt 0 ] && [ -f "$WARNING_LOG" ] && [ -s "$WARNING_LOG" ]; then + echo "WARNUNGS-ÜBERSICHT:" + echo "===================" + tail -n 30 "$WARNING_LOG" + echo "" + fi + + echo "INSTALLATION ABGESCHLOSSEN: $(date '+%Y-%m-%d %H:%M:%S')" + echo "=================================================================" + + } > "$summary_file" + + # Berechtigung für Zusammenfassungs-Datei setzen + chmod 644 "$summary_file" 2>/dev/null || true + + debug "Log-Zusammenfassung erstellt: $summary_file" } # =========================== RETRY-MECHANISMEN =========================== @@ -241,10 +300,30 @@ retry_command() { attempts=$((attempts + 1)) if [ $attempts -lt $MAX_RETRIES ]; then warning "$description fehlgeschlagen (Versuch $attempts/$MAX_RETRIES) - wiederhole in ${RETRY_DELAY}s..." + + # Debug-Information für jeden fehlgeschlagenen Versuch + debug "Retry-Versuch für '$description': $attempts/$MAX_RETRIES" + debug "Fehlgeschlagener Befehl: $cmd" + debug "Aktuelles Arbeitsverzeichnis: $(pwd)" + debug "Verfügbarer Speicher: $(free -m | grep '^Mem:' | awk '{print $3"/"$2" MB"}' 2>/dev/null || echo 'Unbekannt')" + debug "Exit-Code des letzten Befehls: $?" + sleep $RETRY_DELAY fi done + # Detaillierte Fehler-Information vor dem Beenden + debug "CRITICAL: Retry-Mechanismus erschöpft für '$description'" + debug "Letzter Befehl: $cmd" + debug "Versuche: $MAX_RETRIES" + debug "System-Status zum Zeitpunkt des kritischen Fehlers:" + debug " - Disk Usage: $(df -h / | tail -1 2>/dev/null || echo 'Nicht verfügbar')" + debug " - Memory Usage: $(free -m 2>/dev/null || echo 'Nicht verfügbar')" + debug " - Load Average: $(uptime 2>/dev/null | awk -F'load average:' '{print $2}' || echo 'Nicht verfügbar')" + debug " - Network Status: $(ip addr show 2>/dev/null | grep 'inet ' | grep -v '127.0.0.1' || echo 'Nicht verfügbar')" + debug " - APT Status: $(ps aux | grep -i apt | grep -v grep || echo 'Keine APT-Prozesse')" + debug " - Python Status: $(python3 --version 2>&1 || echo 'Python nicht verfügbar')" + error "$description nach $MAX_RETRIES Versuchen fehlgeschlagen!" } @@ -3033,6 +3112,7 @@ main() { [ $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 -e " 📊 Zusammenfassung: /var/log/myp-install-summary.txt" echo "" echo -n "Drücken Sie Enter um fortzufahren..." read -r @@ -3045,6 +3125,7 @@ main() { [ $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 -e " 📊 Zusammenfassung: /var/log/myp-install-summary.txt" echo "" echo -n "Drücken Sie Enter um fortzufahren..." read -r @@ -3058,6 +3139,7 @@ main() { [ -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" + [ -f "/var/log/myp-install-summary.txt" ] && echo -e " 📊 Zusammenfassung: /var/log/myp-install-summary.txt" fi exit 0 ;;