# /api/chat 对话测试用例 > 基于 dialog-interpret + needq-calc + wind-hazard-diagnosis 技能 + 已注册工具覆盖编写 > > 测试方式:`POST /api/chat`,参数 `message`(form-data) --- ## 一、巷道监测数据解读(dialog-interpret 核心) ### 1.1 默认指标解读(风速 + 风量) | 编号 | 用例 | 预期行为 | |------|------|----------| | C01 | "15216 辅运起坡段当前情况怎么样" | 触发 dialog-interpret,自动解读风速+风量,调用 query_tun_data_by_id → 输出对比报告 | | C02 | "帮我看看北二盘区回风巷" | 同上,未指定指标时默认解读风速+风量 | | C03 | "三水平主运大巷现在数据如何" | 如果 query_tunnel_list 匹配到多条,列出候选让用户继续提问 | ### 1.2 指定指标解读 | 编号 | 用例 | 预期行为 | |------|------|----------| | C04 | "15216 工作面瓦斯浓度怎么样" | 查询指定巷道瓦斯数据,对比规程阈值 | | C05 | "北二回风巷 CO 是否超限" | 查询 CO 浓度,判断是否 ≥0.0024% | | C06 | "15216 辅运起坡段温度多少" | 查询温度,按采掘面 26/30℃ 规则判断 | | C07 | "主运大巷氧气含量正常吗" | 查询 O₂,判断是否 ≥20% | ### 1.3 风量合规判断 | 编号 | 用例 | 预期行为 | |------|------|----------| | C08 | "二水平辅运大巷风量满足计划吗" | 查询实际风量 vs 计划风量,计算缺口比例 | | C09 | "15216 工作面风速是否超限" | 查询风速,对比规程允许范围 | --- ## 二、设备查询(新增工具) ### 2.1 设备类型字典 | 编号 | 用例 | 预期行为 | |------|------|----------| | C10 | "系统里有哪些设备类型" | 调用 get_device_kind_dict → 列出大类小类 | | C11 | "传感器类型都有哪些" | 同上 | | C12 | "modelsensor_speed 是什么设备" | 调用 get_device_kind_dict → 翻译编码为中文 | ### 2.2 按类型查设备列表 | 编号 | 用例 | 预期行为 | |------|------|----------| | C13 | "列出所有风速传感器" | 先 get_device_kind_dict 取编码 → get_device_list_by_kind → 输出设备清单 | | C14 | "有哪些甲烷传感器" | 同上 | | C15 | "温度传感器有哪些" | 同上 | ### 2.3 单设备实时数据 | 编号 | 用例 | 预期行为 | |------|------|----------| | C16 | "设备 FAN-001 当前读数多少" | 调用 query_device_realtime_data(device_id="FAN-001") | | C17 | "传感器 11111004 现在什么状态" | 同上,返回在线状态、读数、报警 | ### 2.4 巷道关联设备 | 编号 | 用例 | 预期行为 | |------|------|----------| | C18 | "15216 辅运起坡段绑了哪些设备" | 调用 query_devices_by_tunnel | | C19 | "北二回风巷有哪些传感器" | 同上 | --- ## 三、历史趋势查询 | 编号 | 用例 | 预期行为 | |------|------|----------| | C20 | "15216 工作面近7天风速变化趋势" | 调用 list_ventanaly_monitor_data_days → 输出趋势图描述(均值/最值/趋势方向) | | C21 | "北二回风巷上个月温度怎么样" | 换算时间范围,调用历史数据工具 | | C22 | "三水平主运大巷最近24小时风量有波动吗" | 同上 | --- ## 四、巷道/模型列表查询 | 编号 | 用例 | 预期行为 | |------|------|----------| | C23 | "帮我查一下模型下面有哪些巷道" | 调用 query_tunnels_by_model | | C24 | "搜一下名字带'辅运'的巷道" | 调用 query_tunnel_list 模糊匹配 | | C25 | "15216 这个模型下有多少条巷道" | 调用 query_tunnels_by_model | --- ## 五、规程知识库查询 | 编号 | 用例 | 预期行为 | |------|------|----------| | C26 | "煤矿安全规程对回风巷风速有什么要求" | 调用 query_knowledge_base → 返回条款原文 | | C27 | "采煤工作面瓦斯报警浓度是多少" | 同上 | | C28 | "AQ1056 风量计算方法是什么" | 同上 | --- ## 六、需风量计算(needq-calc 技能) ### 6.1 采煤工作面计算 | 编号 | 用例 | 预期行为 | |------|------|----------| | C29 | "计算一下 15216 工作面的需风量" | 触发 needq-calc,逐步引导填写参数(采高、控顶距、瓦斯涌出量等) | | C30 | "采煤面按瓦斯量算需风量,绝对涌出量 3.2,不均衡系数 1.5" | 调用 calc_face_by_gas | | C31 | "采煤面按人数算需风量,最多 40 人" | 调用 calc_face_by_workers | | C32 | "采煤面按风速验算,断面 18 平米" | 调用 calc_face_by_wind_speed | ### 6.2 掘进工作面计算 | 编号 | 用例 | 预期行为 | |------|------|----------| | C33 | "掘进面需风量怎么算" | 触发 needq-calc,引导参数 | | C34 | "掘进面炸药量 8kg,帮我算需风量" | 调用 calc_tunnel_by_explosives | | C35 | "掘进面 15 个人同时作业,需风量多少" | 调用 calc_tunnel_by_workers | ### 6.3 硐室计算 | 编号 | 用例 | 预期行为 | |------|------|----------| | C36 | "机电硐室需风量,设备功率 200kW" | 调用 calc_chamber_by_equipment | | C37 | "硐室按风速验算,断面 12 平米" | 调用 calc_chamber_by_wind_speed | ### 6.4 管控平台数据 | 编号 | 用例 | 预期行为 | |------|------|----------| | C38 | "通防管控平台上各地点需风量是多少" | 调用 get_needq_all_data → 展示所有用风地点数据 | | C39 | "管控平台的配风情况帮我看看" | 同上 | ### 6.5 汇总计算 | 编号 | 用例 | 预期行为 | |------|------|----------| | C40 | "帮我把刚才算的各地点汇总一下总需风量" | 调用 calc_total_air_volume | | C41 | "这个工作面的有效断面帮我算一下" | 调用 calc_effective_area | --- ## 七、风速风量隐患判识(wind-hazard-diagnosis 技能) ### 7.1 全量诊断触发 | 编号 | 用例 | 预期行为 | |------|------|----------| | C51 | "查询当前风速风量数据有没有问题" | 触发 wind-hazard-diagnosis,走 Step1~Step8 全流程:获取测风装置清单 → 逐台查实时数据 → 巷道类型判定 → 风速超限判定 → 需风量关联 → 重大隐患比对 → 输出分级结论 | | C52 | "帮我做一次测风数据判识" | 同上,触发完整诊断流程 | | C53 | "风速风量有没有隐患" | 同上,最后询问是否生成 md 报告 | | C54 | "全矿测风装置数据排查一下" | 获取全量清单,逐台判识,输出总览+逐台明细 | ### 7.2 生成报告 | 编号 | 用例 | 预期行为 | |------|------|----------| | C55 | "生成测风数据分析报告" | 触发技能 Step9:生成固定格式 `测风装置实时数据分析报告_YYYY-MM-DD.md`,严格按 0~八 章节输出 | | C56 | "把刚才的诊断结果写成报告" | 同上,复用前一轮已获取的数据生成报告 | | C57 | "不要报告,就告诉我结论" | 技能结束时不写文件,仅输出会话结论 | ### 7.3 重点巷道诊断 | 编号 | 用例 | 预期行为 | |------|------|----------| | C58 | "15216 工作面的测风数据有没有超限" | 触发技能,定位到该工作面关联的测风装置,逐项判识风速/风量/报警 | | C59 | "北二回风巷风速风量排查隐患" | 同上,按巷道类型(采区回风巷→0.25~6 m/s)判定 | | C60 | "总回风巷风量够不够" | 关联通风系统总需风量 qra,判定是否满足系统级需风量 | ### 7.4 模拟/离线数据场景 | 编号 | 用例 | 预期行为 | |------|------|----------| | C61 | "测风数据看起来很规律像是模拟的怎么办" | 技能 Step2 模拟数据识别:检查风量≠风速×断面×60、多台数据雷同 → 标注"模拟数据,不可用于生产判识" | | C62 | "有台测风装置离线了怎么处理" | 标记为"无实时数据/离线",在报告中归入 🔴 高风险 | ### 7.5 隐患分级与红线判定 | 编号 | 用例 | 预期行为 | |------|------|----------| | C63 | "有没有触犯重大隐患判定标准的" | 技能 Step7:系统级/用风点级供风量 < 需风量×75% → 判定是否构成重大事故隐患 | | C64 | "帮我列出所有高风险点" | 输出 🔴 高风险(离线/超速/活跃报警/风量严重不足)清单 | --- ## 八、多轮对话 | 编号 | 用例 | 预期行为 | |------|------|----------| | C65 | 第1轮:"15216 辅运起坡段风速怎么样" → 第2轮:"那风量呢" | 第2轮应记住上下文(同一巷道),无需重复巷道名 | | C66 | 第1轮:"帮我算采煤面需风量" → 第2轮:"刚才算的是按瓦斯算的吗" | 记住前一轮计算上下文 | | C67 | 第1轮:"列出所有风速传感器" → 第2轮:"第3个的实时数据" | 记住设备列表上下文,取第3个设备ID查询 | | C68 | 第1轮:"全矿风速风量排查" → 第2轮:"生成报告" | 第2轮复用前一轮已获取的诊断数据,生成 md 报告 | --- ## 九、边缘/异常场景 | 编号 | 用例 | 预期行为 | |------|------|----------| | C69 | "全矿瓦斯浓度最高的三个点在哪儿" | 触发 skill 6.3 节:告知暂不支持跨巷道聚合排序,引导用户指定巷道 | | C70 | "某某不存在的巷道风速怎么样" | query_tunnel_list 无结果,告知用户未找到,建议检查名称 | | C71 | "今天天气怎么样" | 不进通风技能,作为通用对话回复或引导回通风话题 | | C72 | 空消息 "" | 返回 422 参数校验错误 | | C73 | "帮我解读"(无巷道名) | 反问用户需要解读哪条巷道 | | C74 | "计算需风量"(无参数) | needq-calc 技能引导用户逐步提供计算参数 | | C75 | "测风数据有没有隐患"(tf_mcp 不可用) | 技能 Step 依赖检查:明确告知"缺少 tf_mcp 或云知识库,无法完整执行" | --- ## 十、意图路由测试(合并后统一走通风对话助手) --- ## 运行说明 ```bash # 单条测试 curl -X POST http://localhost:8070/api/chat \ -H "Content-Type: application/json" \ -d '{"message": "15216 辅运起坡段风速怎么样"}' # 多轮(带上轮 session_id) curl -X POST http://localhost:8070/api/chat \ -H "Content-Type: application/json" \ -d '{"message": "那风量呢", "session_id": "上轮返回的session_id"}' ```