fix: 修复Web服务监控区域状态显示问题

后端 status 字段从字符串改为结构化对象 {status, ports: {port: {running}}}
前端期望的是 p.status.status 和 p.status.ports[port].running,之前的字符串格式导致:
- 所有服务状态始终显示「未知」
- 所有端口始终显示红色(已停止)
This commit is contained in:
2026-06-01 17:08:09 +08:00
parent c960048042
commit bb19141edc

View File

@@ -20,10 +20,25 @@ def register_project_routes(app):
"""获取项目列表""" """获取项目列表"""
projects = load_projects() projects = load_projects()
# 添加状态信息 # 添加状态信息(结构化对象,前端期望 status.status 和 status.ports
for project in projects: for project in projects:
ports = project.get('ports', []) ports = project.get('ports', [])
project['status'] = 'running' if all(check_port(p) for p in ports) else 'stopped' port_statuses = {}
for p in ports:
port_statuses[str(p)] = {'running': check_port(p)}
running_count = sum(1 for ps in port_statuses.values() if ps['running'])
if running_count == len(ports) and len(ports) > 0:
overall = 'running'
elif running_count > 0:
overall = 'partial'
else:
overall = 'stopped'
project['status'] = {
'status': overall,
'ports': port_statuses
}
return jsonify({ return jsonify({
'projects': projects, 'projects': projects,
@@ -169,10 +184,25 @@ def register_project_routes(app):
data = load_projects_full() data = load_projects_full()
services = data.get('external_services', []) services = data.get('external_services', [])
# 添加状态 # 添加状态(结构化对象,前端期望 status.status 和 status.ports
for service in services: for service in services:
ports = service.get('ports', []) ports = service.get('ports', [])
service['status'] = 'running' if all(check_port(p) for p in ports) else 'stopped' port_statuses = {}
for p in ports:
port_statuses[str(p)] = {'running': check_port(p)}
running_count = sum(1 for ps in port_statuses.values() if ps['running'])
if running_count == len(ports) and len(ports) > 0:
overall = 'running'
elif running_count > 0:
overall = 'partial'
else:
overall = 'stopped'
service['status'] = {
'status': overall,
'ports': port_statuses
}
return jsonify({'services': services}) return jsonify({'services': services})