fix: 重写routes_system.py修复API错误

完整重写系统监控API,确保:
- 正确的数据结构匹配JavaScript期待
- system.uptime/system.boot_time/system.process_count
- cpu.count/cpu.logical
- disk.free_gb
- network.sent_mb/recv_mb/sent_speed/recv_speed
- 所有异常处理和日志记录

修复500错误,现在系统监控应该正常显示
This commit is contained in:
2026-06-01 16:19:59 +08:00
parent 51f7ee9ad0
commit c960048042

View File

@@ -7,6 +7,7 @@ import os
import subprocess
import time
from datetime import datetime
from flask import jsonify, request
from utils import log_message, get_cpu_temperatures, load_alert_config
try:
@@ -46,6 +47,7 @@ def register_system_routes(app):
disk = psutil.disk_usage('/')
disk_total_gb = round(disk.total / (1024**3), 2)
disk_used_gb = round(disk.used / (1024**3), 2)
disk_free_gb = round(disk.free / (1024**3), 2)
disk_percent = disk.percent
# 网速(需要计算差值)
@@ -103,7 +105,7 @@ def register_system_routes(app):
'disk': {
'total_gb': disk_total_gb,
'used_gb': disk_used_gb,
'free_gb': round(disk.free / (1024**3), 2),
'free_gb': disk_free_gb,
'percent': disk_percent
},
'network': {
@@ -114,7 +116,8 @@ def register_system_routes(app):
}
})
except Exception as e:
return jsonify({'error': str(e)}), 500
log_message(f"系统监控API错误: {e}")
return jsonify({'error': str(e), 'available': False}), 500
@app.route('/api/system/processes')
def api_system_processes():
@@ -123,6 +126,9 @@ def register_system_routes(app):
return jsonify({'error': 'psutil未安装'}), 500
try:
limit = int(request.args.get('limit', 10))
limit = max(1, min(50, limit))
processes = []
for proc in psutil.process_iter(['pid', 'name', 'cpu_percent', 'memory_percent', 'status']):
try:
@@ -138,7 +144,7 @@ def register_system_routes(app):
# 按CPU排序
processes.sort(key=lambda x: x['cpu'], reverse=True)
processes = processes[:50] # 只返回前50个
processes = processes[:limit]
return jsonify({'processes': processes})
except Exception as e:
@@ -173,7 +179,6 @@ def register_system_routes(app):
@app.route('/api/alerts', methods=['POST'])
def api_save_alerts():
"""保存预警配置"""
from flask import request
import json
from config import ALERT_CONFIG_FILE