/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 或云知识库,无法完整执行" |
十、意图路由测试(合并后统一走通风对话助手)
运行说明
# 单条测试
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"}'