feat: 心跳修复 + 接口测试代理命令(GET_APIS/HTTP_PROXY)
- ws_client: start() 连接改为独立线程,修复心跳线程被阻塞导致 B 端'暂无心跳数据' - dispatcher: 新增 GET_APIS(返回主程序接口清单) + HTTP_PROXY(代理调用前置机接口) - main_app_client: 新增 get_apis/http_proxy,自动按 path 加鉴权(/order→Basic, /api/admin→X-Admin-Token) - config: 新增 order_basic 配置项 - process_guard: 看门狗支持 nssm restart 拉起服务(优先于 start.cmd) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -14,6 +14,8 @@ B 端通过 WebSocket 下发 JSON 命令:{"type":"CMD_TYPE","payload":{...}}
|
||||
- GET_CONFIG 读取医院配置文件(payload: hospital)
|
||||
- SAVE_CONFIG 写回医院配置文件(payload: hospital, content)
|
||||
- UPGRADE 升级主程序
|
||||
- GET_APIS 查询主程序 /order 接口清单
|
||||
- HTTP_PROXY 代理调用前置机任意接口(穿透白名单)
|
||||
|
||||
所有命令执行结果通过 AgentClient 上行(CMD_RESULT)。
|
||||
"""
|
||||
@@ -135,6 +137,21 @@ class CommandDispatcher:
|
||||
).start()
|
||||
result = {"ok": True, "msg": "升级已开始(异步执行,结果将通过 UPGRADE_RESULT 上报)"}
|
||||
|
||||
elif msg_type == "GET_APIS":
|
||||
# 返回主程序 /order 接口清单(供 B 端接口测试工具加载)
|
||||
result = {"ok": True, "data": self.main_app_client.get_apis()}
|
||||
|
||||
elif msg_type == "HTTP_PROXY":
|
||||
# 代理调用前置机任意接口(穿透白名单,本机环回)
|
||||
p = payload or {}
|
||||
result = self.main_app_client.http_proxy(
|
||||
method=p.get("method") or "GET",
|
||||
path=p.get("path") or "/",
|
||||
query=p.get("query"),
|
||||
body=p.get("body"),
|
||||
extra_headers=p.get("headers"),
|
||||
)
|
||||
|
||||
else:
|
||||
result = {"ok": False, "msg": f"未知命令:{msg_type}"}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user