feat: add node coverage and improve investigation presentation
This commit is contained in:
@@ -77,6 +77,38 @@ Server 校验当前 run、绑定会话、有效租约和幂等身份,记录 `o
|
||||
没有坐标的地址、空数据、非法几何、模型自绘区域均不能生成覆盖层。该接口不做地址解析、
|
||||
范围推算或污染传播计算。展示事件总大小上限为 512 KiB,超限返回 422。
|
||||
|
||||
`generate_node_coverage` 是独立的节点空间覆盖工具,适用于普通项目聊天和后台调查,
|
||||
不绑定爆管、阀门隔离或固定执行顺序。调用者提供需要比较的节点分组,Server 从当前项目
|
||||
`gis.node_geometries` 读取真实位置。监测设备、投诉、地址等须先关联模型节点,
|
||||
不接受模型自由生成的坐标。具体适用范围和参数见[节点覆盖工具](node-coverage-tool.md)。
|
||||
|
||||
计算先投影到局部米制坐标,取凹包(默认 ratio=0.25)、加展示缓冲(默认 25 m),
|
||||
再以 2 m 容差简化并转回 WGS84;凹包比例与缓冲距离可在有界参数内选择。
|
||||
默认展示各组的地理包络,不判断连接关系;需要时可按模型连接拆分,额外指定视为断开的连接。
|
||||
少量点、重合点和共线点同样通过缓冲形成面。多组结果一起保存在 `result.map_payload`,
|
||||
避免连续 `set_overlay` 覆盖前一组;`result.coverage` 保存来源节点、映射完整性及算法参数。
|
||||
该面不推断故障、污染、实际停水、水力影响或用户服务边界,缓冲距离也不是供水服务半径。
|
||||
缺失几何时标记 `partial`,没有可用位置时不生成面。输入最多 8 组、合计 10000 个不同节点;
|
||||
几何输出遵守覆盖层顶点和大小限制,超限要求缩小范围,不静默抽样或改变原分析结果。
|
||||
|
||||
MCP 保存完整查询响应作为不可变证据,展示解析器同时支持响应信封中的
|
||||
`data.result.map_payload`。Agent 使用 `set_overlay` 引用本次 `evidence_id` 并省略 `data`。
|
||||
超过内联返回预算时,响应的 `data.presentation.command` 仍保留可发布的展示命令,
|
||||
`data.presentation.groups` 保留覆盖完整性计数,
|
||||
完整几何留在证据中,不能把缩略返回误认为没有空间成果。调查按实际步骤同步发布展示:
|
||||
地址得到明确坐标后缩放定位,取得候选资产后定位候选,检查影响节点后生成并展示覆盖示意,
|
||||
形成或调整关阀方案后定位阀门,读取监测对照后展示点位及序列。
|
||||
图表同样随结果返回发布:监测趋势与事件对照用折线图,可比候选评价或方案用柱状图,
|
||||
水力及污染传播等模拟按实际返回的时刻、对象和指标画图。压力、流量、浓度等不同单位分图,
|
||||
注明来源、范围与实测或模型属性;没有同口径基准时不计算或绘制改善量,缺测不补零。
|
||||
过程图表通过 `open_chart` 提供 `chart_id/chart/evidence_refs`,每图最多100个横轴值、8组序列,
|
||||
超限时分图或明确说明抽样、聚合范围;单值或无可比数据用文字或表格。
|
||||
关键趋势与比较结论保留到报告中,最终报告的图表不替代过程发布。
|
||||
业务 Skill 说明本步骤应展示什么,调查指令统一说明发布方法、非空几何检查、去重和失败处理。
|
||||
同一阶段批量展示,数据或方案没有变化时不重复请求;不为地图动作增加无关业务分析。
|
||||
报告的 `map_targets` 仅为手动定位入口。关键步骤的数据缺失或展示失败需记录具体限制,
|
||||
没有浏览器连接也不阻止分析或报告收尾。
|
||||
|
||||
`GET /api/v1/operational-tasks/{task_id}/presentation-cursor` 在同一事务中读取
|
||||
`task_id/execution_generation/active_run/event_cursor`,其中活跃 run 仅返回 `run_id/generation/status`。
|
||||
浏览器打开 Dev 联动、切换任务或断线重连时,以此建立新基线,只消费之后的展示事件。
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
# 节点空间覆盖工具
|
||||
|
||||
`generate_node_coverage` 增加 Agent 可选择的空间表达能力,将已取得的模型节点集合转为
|
||||
可解释、可复核的覆盖示意。它可以在项目聊天、任务协作和后台调查中使用,
|
||||
不要求爆管任务、隔离成功或特定报告。生成、发布展示和业务分析是三个独立操作。
|
||||
|
||||
## 适用范围
|
||||
|
||||
| 问题 | 输入依据 | 输出含义 |
|
||||
| --- | --- | --- |
|
||||
| 候选对象分布在哪里 | 已核实的候选模型节点 | 候选节点空间包络 |
|
||||
| 两组监测点覆盖有何不同 | 已核对的设备到模型节点映射 | 已接入节点分布比较,不证明监测可观测性 |
|
||||
| 区域成员分布在哪里 | 已查询的区域成员节点 | 成员节点包络,不替代已有行政区或 DMA 边界 |
|
||||
| 哪些节点属于模型影响集合 | 已有拓扑或模拟结果中的节点集合 | 结果节点的空间示意,不重新计算影响 |
|
||||
| 投诉关联的节点如何分布 | 已解析并核对的投诉到模型节点关联 | 已关联节点分布,不证明投诉或污染真实边界 |
|
||||
|
||||
只有地址或未关联设备时,先查询位置和资产关联;已有权威区域几何时优先展示原始边界。
|
||||
本工具不接收任意坐标、HTML、SQL、脚本或调用者指定的项目身份,不执行关阀、模拟或方案保存。
|
||||
|
||||
## 参数和结果
|
||||
|
||||
- `groups`:最多 8 组,每组提供唯一 `group_id`、`title` 和 `node_ids`;组之间可重叠,
|
||||
合计最多 10000 个不同节点。不按组名自动赋予隔离、污染或服务覆盖语义。
|
||||
- `concave_ratio`:0–1,默认 0.25;越接近 1 越接近凸包。分散的点取单一包络可能包含较大空白,
|
||||
应按实际比较目标分组,并明确示意含义。
|
||||
- `buffer_m`:大于 0、最多 1000 m,默认 25 m,仅是展示缓冲。
|
||||
- `split_by_connectivity`:默认 false。true 时按所选节点的模型连接拆分,并排除初始 CLOSED 连接。
|
||||
`excluded_link_ids` 可额外指定最多 200 个断开连接,适用于已有关阀建议等有依据的绘图情景。
|
||||
这不会修改模型,也不能替代完整拓扑分析。
|
||||
|
||||
`result.map_payload` 是多组共存的 GeoJSON;`result.coverage` 记录算法参数、节点 ID、
|
||||
已映射数量、缺失几何节点、分组数量和 `display_only` 边界。缺少部分位置时返回 `partial`,
|
||||
不补造坐标。单点、重合点或共线点通过米制缓冲生成可绘制面。
|
||||
|
||||
## 与展示工具配合
|
||||
|
||||
生成工具不会移动地图。项目聊天可用 `present_view` 展示本次返回的几何;后台调查用
|
||||
`publish_task_presentation` 的 `set_overlay`,引用生成结果自己的 `evidence_id` 并省略 `data`,
|
||||
Server 从不可变证据解析完整几何。大结果内联缩略时,`data.presentation.command` 保留可发布命令。
|
||||
`recorded` 仍只表示请求已记录,浏览器显示和后台调查完成各自独立。
|
||||
|
||||
本次爆管报告只是一个验证样例:可将 24 个直接隔离节点、295 个供水影响节点作为两组,
|
||||
按已有三阀建议设置连通分组;不将这种调用固定进 `analyze_valve_isolation`。
|
||||
Reference in New Issue
Block a user