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()
|
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})
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user