chat_test_cases.md 9.9 KB

/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"}'