diff --git a/routes_project.py b/routes_project.py index d55420b..a76929b 100644 --- a/routes_project.py +++ b/routes_project.py @@ -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})