--- name: dialog-interpret description: | 对煤矿"一通三防智能管控平台"的监测指标进行智能数据解读。当用户在对话中询问某个巷道、工作面或测风点的风速、风量、瓦斯(甲烷)、一氧化碳(CO)、氧气(O₂)、温度等监测数据情况时使用——典型问法如"XXX巷道风速风量怎么样""分析一下XXX巷道传感器数据""解读一下XXX巷道当前风速风量情况""XXX回风巷瓦斯为什么报红""近7天XXX工作面温度趋势"等。只要用户提到巷道/工作面/测风点名称并结合监测指标提问,就应触发本技能,自动完成"选巷道与指标→查巷道属性→查规程阈值→查计划风量→比对判断→给结论与建议"全流程解读。此外,还支持根据巷道名称查询设备列表、根据模型ID获取巷道列表等辅助功能。 --- # 智能通风数据解读技能 本技能封装"数据解读 Agent"的核心能力:依据用户自然语言提问,查询巷道属性、监测数据、规程阈值、计划风量,完成合规判断,输出结构化中文结论与系统调整建议。 **两条铁律:** 1. 规程依据统一以《煤矿安全规程》**2025 版**为准。 2. 所有数值结论必须来自工具返回的实测数据与规程阈值,不得臆造;结论中需标注依据条款与数据来源。 ## 1. 触发判断 当用户输入符合下列任一情形时触发: - 提到具体巷道/工作面/测风点名称(如"北二盘区变电所回风巷""15216 辅运起坡段"),并询问其监测数据情况; - 使用"风速/风量/瓦斯/甲烷/CO/一氧化碳/O₂/氧气/温度/传感器数据"等指标词,配合"怎么样/情况/分析/解读/是否满足/为什么报红/趋势"等询问词; - 询问某指标在**指定巷道/工作面内**的排名、对比或历史趋势(如"近7天温度趋势""该巷道风速变化"); - 询问某巷道下有哪些设备、某模型下有哪些巷道等设备/巷道列表查询需求。 - 询问"有哪些设备类型""设备分类""设备大类小类""传感器类型有哪些""strType 编码含义"等设备类型字典查询需求。 > ⚠️ 涉及"全矿/所有巷道"跨巷道聚合排名类问题(如"全矿瓦斯浓度最高的三个点"),当前工具不支持跨巷道聚合;触发后按第 6.3 节处理,告知用户暂不支持并引导改为指定巷道查询。 **缺省规则:** 用户只问巷道名未说指标 → 默认解读"风速 + 风量";未给时间范围 → 默认解读"当前(实时)"数据。 ## 2. 解读流程总览 ``` 用户提问 │ ▼ ① 解析意图与参数(巷道 / 指标 / 时间范围) │ ▼ ② 查巷道属性(类型、断面、用途、关联传感器) ← query_tun_data_by_id / query_devices_by_tunnel / query_devices_by_tunnel_id / query_tunnel_list / query_tunnels_by_model │ ▼ ③ 查计划风量 ← get_tunnel_plan_flow(可选) │ ▼ ④ 查监测数据(实时 / 历史) ← query_device_data_by_id / list_ventanaly_monitor_data_days │ ▼ ⑤ 查规程阈值(按巷道用途与指标类型) ← get_wind_limit / get_gas_limit / get_co_limit / get_o2_limit / get_temperature_limit │ ▼ ⑥ 合规比对判断(风速 / 风量 / 气体 / 温度) │ ▼ ⑦ 生成结论 + 系统调整建议(结构化中文输出) ``` > 说明:下方声明的工具为**预期接口契约**。工具尚未实现时,按契约组织查询并明确告知用户"数据接口待接入";工具就绪后即可按序调用。 ## 3. 第一步:解析意图与参数 从用户提问中提取三类参数: | 参数 | 是否必填 | 说明 | 缺省处理 | |------|---------|------|---------| | 巷道名称 | 必填 | 巷道/工作面/测风点名称 | 缺失时反问用户确认,不要猜测 | | 指标类型 | 可选 | 风速 / 风量 / 瓦斯 / CO / O₂ / 温度 / 压力 / 湿度 | 未指定默认"风速 + 风量" | | 时间范围 | 可选 | 实时 / 近 N 天 / 起止时段 | 未指定默认"当前实时" | - 巷道名称在库中匹配到多个(重名/模糊匹配)时,列出候选请用户确认。 - 涉及历史趋势("近 7 天""上个月")时,换算为起止时间调用历史数据工具。 - 当用户询问巷道下设备列表时,调用 `query_devices_by_tunnel` 或 `query_devices_by_tunnel_id`。 - 当用户需要按模型查询巷道列表时,**优先使用 `query_tunnel_list`**(model_id + tunnel_name 模糊匹配,返回精简列表仅含 modelId/tunnelId/tunnelName)。若该工具无结果,再回退使用 `query_tunnels_by_model` 获取全量列表。模型ID使用 .env 中的 `DEFAULT_MODEL_ID`。 ## 4. 第二步:调用工具查询(声明式接口契约) 以下工具为预期接口契约,按声明组织查询。 ### 4.1 巷道与设备列表查询 | 工具 | 所属服务 | 入参 | 出参 | |------|---------|------|------| | `get_tunnel_info` | tunnel-knowledge-server | 巷道名称 或 巷道ID | 巷道ID、巷道名称、用途类型(useType)、断面积、关联传感器列表 | | `get_tunnel_plan_flow` | tunnel-knowledge-server | 巷道名称 或 巷道ID | 计划风量(m³/min)、计划风速(m/s)、测风日期 | | `query_devices_by_tunnel` | tunnel-device-server | 巷道名称、设备类型(可选) | 该巷道绑定的设备列表及实时数据 | | `query_devices_by_tunnel_id` | tunnel-device-server | 巷道ID、模型ID(可选)、设备类型(可选) | 该巷道ID下绑定的设备列表 | | `get_tun_list_by_modelid` | tunnel-model-server | 模型ID | 指定模型下的巷道列表 | | `query_tunnels_by_model` | tunnel-model-server | 模型ID | 根据模型ID查询巷道列表(新接口,含名称、类型、需风量等详情) | | `query_tunnel_list` | tunnel-model-server | 模型ID + 巷道名称(模糊) | **优先使用**。按模型+名称模糊匹配巷道,仅返回 modelId/tunnelId/tunnelName | | `get_device_kind_dict` | device-dict-server | 无 | 查询设备大类(deviceKind)和小类(strType)的编码-中文名称全量映射字典 | | `get_device_list_by_kind` | device-dict-server | device_kind(必填) | 根据设备大类编码查询该类型下的全量设备列表,返回 device_id、device_name、install_pos、station_name | | `query_device_realtime_data` | data-query-server | device_id(必填) | 查询指定设备的实时监测快照,返回最新读数、单位、采集时间、在线状态、报警信息 | > **设备类型字典场景**:当用户询问"有哪些设备类型""设备分类有哪些""系统中监控哪些传感器类型""设备大类小类有哪些"、或需要将设备类型编码(如 `modelsensor_speed`)翻译为中文时,调用 `get_device_kind_dict` 获取全量字典后解答。该工具无参数,返回 deviceKind(大类)和 strType(小类)两个维度的映射表。 > > **按类型查设备场景**:当用户询问"列出所有风速传感器""有哪些甲烷传感器""某类型设备有哪些"时,先调用 `get_device_kind_dict` 获取 deviceKind 编码,再调用 `get_device_list_by_kind` 传入对应编码获取该类型的全部设备列表。参数 device_kind 为必填,需从 get_device_kind_dict 的返回结果中提取。 > > **单设备实时数据场景**:当用户询问"设备XXX当前读数""传感器XXX的实时值""某个具体设备的最新数据"时,调用 `query_device_realtime_data` 传入设备ID获取实时快照。与 `query_device_data_by_id`(含报警+分页)相比,本工具返回结构更精简、延迟更低,适合单设备快速查询场景。设备ID可从前序工具(get_device_list_by_kind、query_devices_by_tunnel 等)的返回结果中提取。 > **设备列表查询场景**:当用户询问"XXX巷道有哪些设备"或"查看XXX巷道的传感器"时,优先使用 `query_devices_by_tunnel`(按名称查询更直观);当已知巷道ID时使用 `query_devices_by_tunnel_id`。 > **模型巷道列表场景**:当用户需要按通风模型筛选巷道时,使用 `query_tunnels_by_model` 或 `get_tun_list_by_modelid` 获取模型下的巷道清单,再针对具体巷道进行数据解读。 > 计划风量来源以 `model_sensor.planM3` 或 `doc_vent_plan_wind_measurement.air_volume` 为候选;无计划风量时该步骤返回空,结论中需提示"无计划风量对比"。 **多传感器选择规则**:一条巷道可能关联多个传感器,按以下优先级取值: 1. 优先取 `bRealCal = 1`(参与实时计算)的传感器; 2. 仍多于一个时,取同指标类型中设备状态在线、数据时间最新的; 3. 仍无法判断时,列出全部候选传感器及各自读数,请用户确认以哪个为准。 ### 4.2 监测数据查询 | 工具 | 所属服务 | 入参 | 出参 | |------|---------|------|------| | `query_device_data_by_id` | data-query-server | 设备ID、page_size(可选) | 设备实时数据 + 报警数据 | | `list_ventanaly_monitor_data_days` | data-query-server | strtype(设备类型)、gdeviceids(设备ID)、ttime_begin(开始时间)、ttime_end(结束时间)、device_num(设备编号)、skip(采样间隔) | 历史时序数据(风速、风量、瓦斯、温度等趋势) | **`list_ventanaly_monitor_data_days` 参数说明**: - strtype: 设备类型,如 "fanmain_stem_wp_2" - gdeviceids: 设备ID,如 "11111004" - ttime_begin / ttime_end: 时间范围,格式 "yyyy-MM-dd HH:mm:ss" - device_num: 设备编号,如 "Fan1" - skip: 查询采样间隔,默认8,1=5秒//2=10秒//3=30秒//4=1分钟//5=5分钟//6=10分钟//7=30分钟8=1小时,如果半天内默认按10分钟查询,如果需要跨天则默认按1小时查询,其他情况请按合适的采样间隔获取,考虑数据库的压力。 > 历史趋势类问题(如"近7天温度趋势""该巷道风速变化")使用 `list_ventanaly_monitor_data_days`。 > 实时数据 + 报警查询使用 `query_device_data_by_id`。 **指标 → valueCode 映射表**(调用 `query_history_data` 时按此填 valueCode): | 指标 | valueCode | 单位 | |------|-----------|------| | 风速 | vaValue | m/s | | 风量 | m3Value | m³/min | | 瓦斯 | gasValue | % | | 一氧化碳 | coValue | % | | 氧气 | o2Value | % | | 温度 | temperatureValue | ℃ | | 粉尘 | dustval | mg/m³ | > 工具就绪前,valueCode 名称可能与上表不同;以 data-query-server 实际返回字段为准。 设备与指标的对应关系(用于定位传感器,依据 model_sensor.nSensorType): | 指标 | 传感器类型 nSensorType | strType 示例 | 实时值字段 | |------|----------------------|-------------|-----------| | 风速 | 1 / 11 | modelsensor_speed / windrect | windSpeed / vaValue | | 风量 | 11 | windrect | m3 / m3Value | | 瓦斯(CH₄) | 2 | modelsensor_ch4 | ch4 / gasValue | | 一氧化碳(CO) | 3 | modelsensor_co | co | | 氧气(O₂) | 7 | modelsensor_o2 | o2 | | 温度 | 10 / 4 | modelsensor_temperature / modelsensor_multi | temperature / temperatureValue | ### 4.3 规程阈值查询 | 工具 | 所属服务 | 入参 | 出参 | |------|---------|------|------| | `get_wind_limit` | regulation-server | 巷道用途类型 | 风速下限 vmin、风速上限 vmax、依据条款、备注 | | `get_gas_limit` | regulation-server | 设置地点类型 | 报警浓度、断电浓度、复电浓度、依据条款 | | `get_co_limit` | regulation-server | — | 最高允许浓度、依据条款 | | `get_o2_limit` | regulation-server | — | 最低浓度、依据条款 | | `get_temperature_limit` | regulation-server | 地点类型 | 一级阈值、二级阈值、依据条款 | > 各指标规程阈值结构详见 `references/regulation-thresholds.md`(背景知识,正式数值以 2025 版为准,由 regulation-server 工具返回)。 ## 5. 第三步:合规比对判断 拿到实测值与规程阈值后,按以下规则判断(均为简单数值比较,由本技能直接完成,无需额外工具): ### 5.1 风速 - 实测风速 > vmax → **超上限(风速超限)** - 实测风速 < vmin → **低于下限** - vmin ≤ 实测风速 ≤ vmax → **合规** - 注:部分巷道仅设上限(如主要进、回风巷)或仅设下限(如其他通风人行巷道),按实际返回的阈值判断。 ### 5.2 风量 - 有计划风量时:实测风量 ≥ 计划风量 → **满足**;实测风量 < 计划风量 → **不足**,缺口比例 =(计划风量 − 实测风量)/ 计划风量 × 100%。 - 无计划风量时:仅判断风速,结论提示"无计划风量对比"。 ### 5.3 瓦斯(CH₄) - 实测浓度 ≥ 该设置地点的报警浓度 → **报警**(按设置地点取报警/断电浓度)。 ### 5.4 一氧化碳(CO) - 实测浓度 ≥ 0.0024% → **超限**。 ### 5.5 氧气(O₂) - 实测浓度 < 20% → **不足**。 ### 5.6 温度 - 按地点类型取阈值:采掘工作面 26℃/30℃、机电设备硐室 30℃/34℃(一级/二级);超一级缩短作业时间,超二级须停止作业。 ### 5.7 综合风险等级 - 全部合规 → **正常**; - 任一指标超限/不足 → 至少 **一般风险预警**; - 瓦斯/CO 超限或温度达二级阈值 → **重大风险预警**。 ## 6. 第四步:生成结论与系统调整建议 ### 6.1 处理建议库(按异常类型选用) | 异常类型 | 建议措施 | |---------|---------| | 风量不足 | 检查通风阻力、风门开闭状态、局部通风机频率、风筒是否漏风 | | 风速超上限 | 调节风窗/风门、降低局部通风机频率、排查短路漏风 | | 风速过低 | 检查巷道是否堵塞、风门状态,必要时提高通风动力 | | 瓦斯超限 | 立即停止作业、切断电源、加强通风、查明瓦斯来源 | | CO 超限 | 排查自燃发火隐患、停止作业、加强通风 | | O₂ 不足 | 检查通风、停止作业、撤离人员 | | 温度超限 | 超一级缩短作业时间并给高温保健;超二级停止作业、加强降温 | 全部正常时,给出"维持当前通风配置、持续监测"等中性建议。 ### 6.2 输出格式(严格遵守) ``` **【{巷道名称}】数据解读** 📍 监测对象:{巷道名称}(巷道类型:{用途类型}) 📊 当前数据: - 风速:{值} m/s - 风量:{值} m³/min - {其他指标…} 📏 规程依据(《煤矿安全规程》2025版 {条款}): - 风速允许范围:{vmin} ~ {vmax} m/s - 计划风量:{值} m³/min 🔍 分析结论: - 风速:✅ 正常 / ❌ 超上限 / ⚠️ 低于下限 - 风量:✅ 满足计划 / ⚠️ 不足(缺口 {X}%) - 综合状态:🟢 正常 / 🟡 一般风险预警 / 🔴 重大风险预警 💡 处理建议: - {建议1} - {建议2} ``` **输出示例**(数值仅为示例): > **【北二盘区变电所及水泵房回风巷】数据解读** > > 📍 监测对象:北二盘区变电所及水泵房回风巷(巷道类型:采区回风巷) > 📊 当前数据:风速 5.62 m/s;风量 1806 m³/min > 📏 规程依据(《煤矿安全规程》2025版 风速相关条款):风速允许范围 0.25 ~ 6 m/s;计划风量 2100 m³/min > 🔍 分析结论:风速 ✅ 正常(未超限);风量 ⚠️ 不足(缺口 14.0%);综合状态 🟡 一般风险预警 > 💡 处理建议:检查通风阻力、风门开闭状态及局部通风机频率;核实计划风量设定是否合理。 历史趋势类问题,额外用平均值/最值/趋势方向描述,并使用下方趋势输出模板: ``` **【{巷道名称}】{指标} 趋势解读({时间范围})** 📊 统计指标:平均 {avg} {单位};最低 {min} {单位};最高 {max} {单位} 📈 趋势方向:↗ 上升 / ↘ 下降 / → 平稳 / 波动 🔍 分析结论:{是否超限、超限时段、合规性} 💡 处理建议:{建议} ``` ### 6.3 跨巷道聚合问题处理 当用户提问涉及"全矿/所有巷道中某指标最高/最低/排名"(如"全矿瓦斯浓度最高的三个点")时: 1. 先确认现有工具是否支持跨巷道批量查询与排序。当前声明式工具仅支持**按巷道/设备查询**,不支持跨巷道聚合。 2. **工具未支持时**:明确告知用户"当前仅支持按指定巷道查询,暂不支持全矿聚合排名",并请用户给出具体巷道名;不要凭空编造排名结果。 3. **工具后续支持时**:使用新增的 `query_top_n_by_indicator`(预期工具,入参:指标类型、数量 N、时间范围;出参:排序后的巷道-传感器-读数列表)完成查询,再套用单巷道解读模板逐条输出。 ## 7. 注意事项 1. **规程版本**:阈值与条款一律以《煤矿安全规程》2025 版为准;工具返回的条款编号优先,`references/regulation-thresholds.md` 中的数值仅作背景参考。 2. **避免幻觉**:所有实测数值、阈值、计划风量必须来自工具返回;工具未实现或缺数据时,明确告知"当前数据暂不可查",不要编造数字。 3. **数据来源与条款**:结论中标注规程依据条款与数据来源(传感器/设备ID)。 4. **无计划风量**:明确提示"无计划风量对比",仅做风速合规判断。 5. **单位统一**:风速 m/s,风量 m³/min,气体浓度 %,温度 ℃。 6. **多轮追问**:保留会话上下文,支持"那上个月呢""给出处理建议"等追问。 ## 8. 参考资料 - `references/regulation-thresholds.md`:各指标规程阈值表(背景知识,正式以 2025 版为准)