fix: 修复Web服务监控区域状态显示问题
后端 status 字段从字符串改为结构化对象 {status, ports: {port: {running}}}
前端期望的是 p.status.status 和 p.status.ports[port].running,之前的字符串格式导致:
- 所有服务状态始终显示「未知」
- 所有端口始终显示红色(已停止)
This commit is contained in:
@@ -20,10 +20,25 @@ def register_project_routes(app):
|
||||
"""获取项目列表"""
|
||||
projects = load_projects()
|
||||
|
||||
# 添加状态信息
|
||||
# 添加状态信息(结构化对象,前端期望 status.status 和 status.ports)
|
||||
for project in projects:
|
||||
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({
|
||||
'projects': projects,
|
||||
@@ -169,10 +184,25 @@ def register_project_routes(app):
|
||||
data = load_projects_full()
|
||||
services = data.get('external_services', [])
|
||||
|
||||
# 添加状态
|
||||
# 添加状态(结构化对象,前端期望 status.status 和 status.ports)
|
||||
for service in services:
|
||||
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})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user