Files
fire-safety-ymd/docs/workflows/exercise-plan-evidence.md
2026-09-06 17:57:58 +08:00

5.8 KiB
Raw Permalink Blame History

演练方案证据查询流程

目标

本流程说明 SuperAgent 如何从用户确认的地名候选或演练点坐标取得结构化事实,再组织“候选方案”。MCP 返回证据和限制,不自动选择地点或作出现场指挥决定。

sequenceDiagram
    participant U as 用户
    participant SA as SuperAgent
    participant MCP as fire-safety-ymd MCP
    participant PG as PostGIS

    U->>SA: 提供地名或演练点坐标与分析目标
    alt 只提供地名
        SA->>MCP: search_place_candidates
        MCP->>PG: 在获授权业务记录中做有界名称匹配
        PG-->>MCP: 记录点/代表点候选
        MCP-->>SA: 候选 + 匹配类型 + location_kind + warning
        SA-->>U: 展示候选并请求确认
        U->>SA: 确认一个候选坐标或改为地图选点
    else 已提供明确坐标
        SA->>SA: 校验 WGS84 坐标格式
    end
    SA->>MCP: resolve_incident_context
    MCP->>PG: 查询覆盖网格(可信数据库全范围或镇街白名单内)
    PG-->>MCP: 网格事实
    MCP-->>SA: 网格 + 数据限制
    par 候选资源
        SA->>MCP: find_nearby_water_sources
        SA->>MCP: find_command_post_candidates
        SA->>MCP: list_nearby_access_lines
    and 责任与风险
        SA->>MCP: get_responsible_units
        SA->>MCP: find_nearby_risk_areas
    end
    MCP-->>SA: 结构化候选、来源、距离、warning
    SA-->>U: 区分数据库事实、未知项和需现场确认的候选方案

对原始四类问题的支持度

问题 当前输出 结论边界
指挥部设置到哪个 检查站/瞭望哨空间候选 不能自动定点;需核验安全、上风向、通信、容量和可达性
水源地在哪里 水源地/蓄水池坐标、距离、容量和源状态(有值时) 不能宣称当前有水、可取水或道路可达
上山路线怎么规划 附近防火通道及最近接入点 当前不支持路线;缺少拓扑、坡度、宽度、路面、车辆限制、实时封路、火势和天气
各队伍在哪里集结 覆盖网格记录的责任中队名称 当前不支持实时位置或集结点;缺少正式集结点、队伍位置、战备和装备数据

Agent 回答要求

  • 明确标注“数据库事实”“基于距离的候选”“当前数据不支持”和“必须现场确认”。
  • Agent 对外统一使用“山东省烟台市牟平区森林防火平台 AI 助手小牟”的身份,能力覆盖日常咨询、授权数据查询和演练方案辅助,不是只返回数据库字段的查询机器人。数据库提供本地证据,Agent 还应基于通用专业知识补充组织分工、演练阶段、通信、供水、交通、安全、后勤和复盘建议,但不得把建议写成本地事实,也不得声称业务数据已经训练进模型或会在对话中自行学习。
  • 只有地名时先调用地名候选工具;零结果时请用户补充名称或地图选点,多结果时列出候选,禁止静默选择第一条。
  • 只要地点、水源或指挥部候选包含 location,就按“WGS84(EPSG:4326),经度在前、纬度在后”展示;防火通道展示 nearest_point 并明确称为“最近接入点坐标”。最多展示工具返回的 6 位小数,不转换为 GCJ-02 或 BD-09。
  • 责任中队和风险区结果没有可作为实时位置、正式集结点或区域中心的坐标,不得补造。需要提出集结点时,只能使用用户确认的点位或工具返回的真实设施点作为“建议候选”,并保留现场确认条件。
  • 用户要求综合演练方案且演练点已经确认时,应主动查询区域上下文、水源、指挥部候选、防火通道、责任中队和风险区域,再形成完整方案,不得只复述问题或输出空白栏目。
  • 七个工具都支持分页:limit 为 1..20,offset 为 0..10000;地名候选、水源、指挥部候选、防火通道和风险区域默认 limit=10,防火网格和责任中队默认 limit=20,首次请求默认 offset=0。
  • 工具响应的 data 始终是数组;metadata.result_count 是当前页数量,metadata.total_count 是授权范围和全部过滤完成后的总数量,has_more=true 时必须向用户说明“当前展示 N 条,共 M 条”。
  • 用户明确要求继续展示时,使用上一次响应的 metadata.next_offset 作为下一次 offset;不要自行把页码换算成偏移量,也不要从头重复查询。
  • 综合方案默认使用当前页的主要候选,不为凑齐完整清单而自动连续拉取全部页;如果总量超过当前页,先给出主要候选和总量,并提示用户可以继续查看。
  • 只有 total_count=0 且 status=no_results 才能表述为当前有效范围没有结果;total_count>0 但超出末页得到空数组时,应说明请求偏移已超过末页,不能说数据库没有记录。
  • 所有空间工具都会排除无效几何;收到 source_records_with_invalid_geometries_are_excluded 时,零结果只能表述为“有效记录中未找到”,不能断言数据库不存在相关资源或责任区域。
  • location_kind=representative_point 只帮助识别线面记录,不得未经确认直接用于后续距离分析;记录点同样应回显名称和位置供用户确认。
  • 无结果时报告 no_results,不得自行补造附近资源。
  • 工具失败、超时或权限范围外时,不使用模型常识替代数据库事实。
  • 不把联系人、电话或内部物理表名转述给普通用户。
  • 涉及真实火情时,AI 结果只作辅助,不替代报警、撤离和现场指挥。

完整 Profile 提示词和验收问题见 ../project/integrations/superagent-fire-safety-profile-prompt.md。