🎉 Feat/DB: Enhanced database logging & WAL management for improved stability and performance in backend/database/myp.db-wal
This commit is contained in:
parent
b29219ce4c
commit
45547a8da6
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -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
|
0
backend/scripts/screenshot_tool.log
Normal file
0
backend/scripts/screenshot_tool.log
Normal file
@ -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
|
||||
;;
|
||||
|
Loading…
x
Reference in New Issue
Block a user