🎉 Fix for JOBS_UNDEFINED and LOG_EXPORT issues, updated documentation 📚 in backend/docs.

This commit is contained in:
2025-06-01 04:04:34 +02:00
parent 45d8d46556
commit 5ee854cbc6
43 changed files with 3053 additions and 118 deletions

View File

@ -5842,6 +5842,84 @@ def api_logs():
'error': f'Fehler beim Abrufen der Log-Daten: {str(e)}'
}), 500
@app.route('/api/admin/logs/export', methods=['GET'])
@login_required
@admin_required
def export_admin_logs():
"""
Exportiert System-Logs als ZIP-Datei
Sammelt alle verfügbaren Log-Dateien und komprimiert sie in eine herunterladbare ZIP-Datei
"""
try:
import os
import zipfile
import tempfile
from datetime import datetime
# Temporäre ZIP-Datei erstellen
temp_dir = tempfile.mkdtemp()
zip_filename = f"myp_logs_{datetime.now().strftime('%Y%m%d_%H%M%S')}.zip"
zip_path = os.path.join(temp_dir, zip_filename)
log_dir = os.path.join(os.path.dirname(__file__), 'logs')
# Prüfen ob Log-Verzeichnis existiert
if not os.path.exists(log_dir):
app_logger.warning(f"Log-Verzeichnis nicht gefunden: {log_dir}")
return jsonify({
"success": False,
"message": "Log-Verzeichnis nicht gefunden"
}), 404
# ZIP-Datei erstellen und Log-Dateien hinzufügen
files_added = 0
with zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED) as zipf:
for root, dirs, files in os.walk(log_dir):
for file in files:
if file.endswith('.log'):
file_path = os.path.join(root, file)
try:
# Relativen Pfad für Archiv erstellen
arcname = os.path.relpath(file_path, log_dir)
zipf.write(file_path, arcname)
files_added += 1
app_logger.debug(f"Log-Datei hinzugefügt: {arcname}")
except Exception as file_error:
app_logger.warning(f"Fehler beim Hinzufügen der Datei {file_path}: {str(file_error)}")
continue
# Prüfen ob Dateien hinzugefügt wurden
if files_added == 0:
# Leere ZIP-Datei löschen
try:
os.remove(zip_path)
os.rmdir(temp_dir)
except:
pass
return jsonify({
"success": False,
"message": "Keine Log-Dateien zum Exportieren gefunden"
}), 404
app_logger.info(f"System-Logs exportiert: {files_added} Dateien in {zip_filename}")
# ZIP-Datei als Download senden
return send_file(
zip_path,
as_attachment=True,
download_name=zip_filename,
mimetype='application/zip'
)
except Exception as e:
app_logger.error(f"Fehler beim Exportieren der Logs: {str(e)}")
return jsonify({
"success": False,
"message": f"Fehler beim Exportieren: {str(e)}"
}), 500
# ===== FEHLENDE ADMIN API-ENDPUNKTE =====
@app.route("/api/admin/database/status", methods=['GET'])