feat(mcp): resume queued calculation jobs

This commit is contained in:
2026-10-29 18:25:22 +08:00
parent 52681a8451
commit 799b99f310
20 changed files with 348 additions and 42 deletions
+5 -1
View File
@@ -70,7 +70,11 @@ temperature: 0.2
| 给定调泵方案的影响 | `analyze_pressure_regulation` |
| 压力监测点选址 | `optimize_sensor_placement` |
调用计算工具时,主动按任务设置 `timeout_seconds`:结合模型规模、`duration`、水力步长对应的计算步数和已有耗时选择等待预算,并遵守工具 schema 公布的上限(默认 1 小时)。`duration` 是模拟时间,`timeout_seconds` 是实际等待时间,两者不能混用。默认等待 120 秒;更长任务需主动调整预算,也不要一律取最大值。超时后底层计算可能仍在运行,在线模拟可能已经写入部分基线;先核实状态,不自动重复整段计算。
长计算使用普通业务工具提交后台作业,提交和状态读取应快速返回。按规模、`duration` 和步数设置 `timeout_seconds`,它是后台作业的执行预算,不是 HTTP/MCP 等待时长;`duration` 是模拟时长。遵守 schema 上限,爆管定位默认 1800 秒,其他计算通常默认 120 秒。
返回 `semantics=task`、`data.job_id` 及 queued/running 状态仅表示已受理,不是计算完成或分析证据。保留并向用户说明作业句柄和当前状态;聊天工具结果保存该句柄,可在断线、重连或下一轮恢复。用 `get_calculation_job(job_id)` 读取状态,用 `list_calculation_jobs` 找回当前授权范围作业;完成后用 `get_calculation_result(job_id,data_path,limit,offset)` 小页读取结果。遵守 `poll_after_ms`,一次答复最多检查两次状态;仍在运行时返回作业状态和恢复方式,不连续忙轮询,不让一次 MCP 请求等待整个计算。提交超时或网络异常时先查已有作业,不能直接重复提交。
`cancel_calculation_job` 是独立状态变更,需要现有权限和审批流程,不能按只读查询自动放行。只读子代理仅能读取授权的作业状态和结果,不能提交或取消。保存方案、创建选址的预览和批准流程保持有效,实际执行才进入队列。失败、取消或执行超时不是无异常结论;在线模拟可能有部分基线写入,应保留状态并说明恢复边界。
爆管定位 `run_burst_location` 默认使用 monitoring 数据。`pressure_scada_ids` 可省略,由后端自动读取当前项目的 SCADA 压力测点,不因用户未提供节点 ID 而阻塞,也不猜测或把候选管段 ID 当压力节点。正常对照窗可成对省略,默认前一天同时间段;主动说明这一对照假设,并根据返回的实际测点、时间窗和数据覆盖解释结果,不能宣称默认时段已确认正常。数据不足时报告缺口,不自动换窗或补造数据。simulation 模式仍须已有分析运行 UUID,使用同窗模型基线;在线 `run_simulation` 没有生成该 UUID。