🎉 Improved log management system & added advanced settings 🚀

This commit is contained in:
2025-06-01 14:50:01 +02:00
parent 7fa7da74af
commit 61479a1c31
24 changed files with 1272 additions and 3 deletions

View File

@@ -4967,6 +4967,87 @@ def optimization_settings():
finally:
db_session.close()
@app.route('/admin/advanced-settings')
@login_required
@admin_required
def admin_advanced_settings():
"""Erweiterte Admin-Einstellungen - HTML-Seite"""
try:
app_logger.info(f"🔧 Erweiterte Einstellungen aufgerufen von Admin {current_user.username}")
db_session = get_db_session()
# Aktuelle Optimierungs-Einstellungen laden
default_settings = {
'algorithm': 'round_robin',
'consider_distance': True,
'minimize_changeover': True,
'max_batch_size': 10,
'time_window': 24,
'auto_optimization_enabled': False
}
user_settings = session.get('user_settings', {})
optimization_settings = user_settings.get('optimization', default_settings)
# System-Statistiken sammeln
stats = {
'total_users': db_session.query(User).count(),
'total_printers': db_session.query(Printer).count(),
'active_printers': db_session.query(Printer).filter(Printer.active == True).count(),
'total_jobs': db_session.query(Job).count(),
'pending_jobs': db_session.query(Job).filter(Job.status.in_(['queued', 'pending'])).count(),
'completed_jobs': db_session.query(Job).filter(Job.status == 'completed').count()
}
# Wartungs-Informationen
maintenance_info = {
'last_backup': 'Nie',
'last_optimization': 'Nie',
'cache_size': '0 MB',
'log_files_count': 0
}
# Backup-Informationen laden
try:
backup_dir = os.path.join(app.root_path, 'database', 'backups')
if os.path.exists(backup_dir):
backup_files = [f for f in os.listdir(backup_dir) if f.startswith('myp_backup_') and f.endswith('.zip')]
if backup_files:
backup_files.sort(reverse=True)
latest_backup = backup_files[0]
backup_path = os.path.join(backup_dir, latest_backup)
backup_time = datetime.fromtimestamp(os.path.getctime(backup_path))
maintenance_info['last_backup'] = backup_time.strftime('%d.%m.%Y %H:%M')
except Exception as e:
app_logger.warning(f"Fehler beim Laden der Backup-Informationen: {str(e)}")
# Log-Dateien zählen
try:
logs_dir = os.path.join(app.root_path, 'logs')
if os.path.exists(logs_dir):
log_count = 0
for root, dirs, files in os.walk(logs_dir):
log_count += len([f for f in files if f.endswith('.log')])
maintenance_info['log_files_count'] = log_count
except Exception as e:
app_logger.warning(f"Fehler beim Zählen der Log-Dateien: {str(e)}")
db_session.close()
return render_template(
'admin_advanced_settings.html',
title='Erweiterte Einstellungen',
optimization_settings=optimization_settings,
stats=stats,
maintenance_info=maintenance_info
)
except Exception as e:
app_logger.error(f"❌ Fehler beim Laden der erweiterten Einstellungen: {str(e)}")
flash('Fehler beim Laden der erweiterten Einstellungen', 'error')
return redirect(url_for('admin_page'))
# ===== OPTIMIERUNGS-ALGORITHMUS-FUNKTIONEN =====
def apply_round_robin_optimization(jobs, printers, db_session):