[ { "module": "235分站监测", "file": "src/views/vent/safetyList/common/detail-235.vue:352-369,608-768,888,958-1013", "title": "235 页面误用 130 协议 API", "severity": "致命", "type": "wrong_api", "symptom": "235 分站参数下发、改名、删除等操作打到 130 接口,控制/配置失败或污染错误协议设备", "root_cause": "从 detail-130 复制后未替换:set130StationData/update130DevName/remove130Device/remove130Substation;api 中亦无对应 235 写接口", "repro": "在 235 监测详情编辑并下发任意参数,观察请求 URL 含 130 路径", "fix_hint": "补齐并改用 235 专用读写/删除 API,移除 130 引用", "id": "BUG-001", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "主风机管控", "file": "src/views/vent/monitorManager/mainFanMonitor/index.vue:1609-1662", "title": "倒机正转/反转共用同一 paramcode", "severity": "致命", "type": "control buttons sharing same paramcode", "symptom": "changeSmoke1 场景下正启动与反启动都下发 CtrlFan1ToFan2 / CtrlFan2ToFan1,无法区分正反转倒机指令", "root_cause": "同文件 changeSmoke 分支正确使用 CtrlFan1ToFan2Forward/Reverse 与 CtrlFan2ToFan1Forward/Reverse,但 changeSmoke1 分支正反转都调用无方向后缀的同一点位", "repro": "风机处于正转/反转运行态触发一键倒机(modalType=changeSmoke1)→ 对比下发 paramcode", "fix_hint": "与 changeSmoke 分支对齐,正转用 *Forward、反转用 *Reverse", "id": "BUG-002", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "喷淋监控系统", "file": "src/views/vent/monitorManager/sprayMonitor/index.vue:68-140", "title": "多路控制按钮共用同一 paramcode/value", "severity": "致命", "type": "wrong_control_payload", "symptom": "急停/补水阀/搅拌阀/组化泵/上料机/搅拌电机/上料自动/喷洒自动等按钮下发同一 paramcode,无法区分控制对象", "root_cause": "operations 全部使用 key='run_auto_sign',且多数 value='0';BasicMonitoring.deviceControl 仅按 key/value 下发", "repro": "打开喷淋监控 → 分别点击不同操作按钮 → 抓包/日志观察 paramcode 全为 run_auto_sign", "fix_hint": "为每个操作配置真实设备参数码(如急停、补水阀、搅拌阀等各自 key),并核对 value 语义", "id": "BUG-003", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "喷雾降尘监控", "file": "src/router/helper/routeHelper.ts:21-28,98-113,122-146", "title": "layouts/RouteView 组件文件缺失导致路由无法解析", "severity": "致命", "type": "missing_component", "symptom": "菜单 component 配为 layouts/RouteView 的父级打开空白/路由失败", "root_cause": "src/layouts 下无 RouteView.vue;LayoutMap 未注册;dynamicImport 只扫 views/components", "repro": "后端菜单配置 component=layouts/RouteView 后进入喷雾降尘父路由", "fix_hint": "新增 layouts/RouteView.vue 并加入 LayoutMap;菜单改为已存在布局", "id": "BUG-004", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "多灾融合预警", "file": "src/views/vent/monitorManager/alarmMonitor/common.api.ts:3-10,46", "title": "bjlist 引用不存在的 Api.bjlist", "severity": "致命", "type": "undefined_api_ref", "symptom": "瓦斯管道故障诊断轮询请求 url 为 undefined,列表/曲线无法加载", "root_cause": "enum Api 无 bjlist 成员,但 bjlist() 仍使用 Api.bjlist", "repro": "宝德矿打开瓦斯预警→管道故障诊断,抓包看请求 URL", "fix_hint": "恢复 bjlist='/safety/ventanalyAlarmLog/list' 或改用 warningHistoryList 路径", "id": "BUG-005", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "抽采泵站管控", "file": "src/views/vent/monitorManager/gasPumpMonitor/components/gasPumpHome.vue:159-178,355-375,329-333", "title": "就地/远程与检修控制 paramcode 对调且入参分支不匹配", "severity": "致命", "type": "inverted_control_mapping", "symptom": "点就地/远程下发 jxmsqh;点检修下发 ykjdqh;传 0 时 handlerType 不赋值仍弹密码框", "root_cause": "changeCtr 写死 jxmsqh、changeMode 写死 ykjdqh;模板传 0/1,函数判 1/2", "repro": "抽采泵站管控点就地/远程/检修开闭→确认密码→抓包 paramcode", "fix_hint": "changeCtr→ykjdqh,changeMode→jxmsqh;统一 0/1 分支", "id": "BUG-006", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "测风装置管控", "file": "src/views/vent/monitorManager/windrectMonitor/windrect.api.ts:59; src/views/vent/monitorManager/windrectMonitor/index.vue:769-771", "title": "测风导出函数实际请求导入接口", "severity": "致命", "type": "export calling wrong import API", "symptom": "一键测风结果导出不会调用 /safety/testwindDetail/exportXls,而是 POST /sys/user/importExcel,导出失败或误触发用户导入接口", "root_cause": "exportXls 实现写成 defHttp.post({ url: Api.importExcel }),而 index.vue 的 exportExcel 直接调用该函数(未使用正确的 getExportUrl)", "repro": "打开测风装置管控 → 触发 exportExcel(id) / 结果导出 → 抓包可见请求 importExcel", "fix_hint": "改为 defHttp.post({ url: Api.exportXls, params }),并确认 method/responseType 与导出一致", "id": "BUG-007", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "瓦斯日报分析", "file": "src/views/vent/gas/gasReportInspect/index-time.vue:62-82", "title": "空 records 时先访问 [0] 导致挂载崩溃", "severity": "致命", "type": "crash_on_mount", "symptom": "无日报数据时 Cannot read properties of undefined,页面白屏", "root_cause": "先读 tableList[0].id/content,后才判 length;JSON.parse 无空保护", "repro": "瓦斯日报分析在 queryReportList 返回空 records 时进入页面", "fix_hint": "先判空 return;JSON.parse 包 try/catch(index-type/index-lt 同改)", "id": "BUG-008", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "瓦斯监测预警", "file": "src/views/vent/monitorManager/alarmMonitor/common.api.ts:3-10,46", "title": "bjlist 引用未定义的 Api.bjlist", "severity": "致命", "type": "api", "symptom": "gasWarn 拉取报警历史时 url 为 undefined,请求失败", "root_cause": "enum Api 未声明 bjlist,但 bjlist() 使用 Api.bjlist", "repro": "进入瓦斯监测预警并触发 bjlist 调用 → 控制台/网络见 undefined URL", "fix_hint": "在 Api 中补齐报警历史路径(并与后端对齐),或改为已有正确枚举字段", "id": "BUG-009", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "色谱仪报表分析", "file": "src/views/vent/bundleSpy/bundleSpyTable/index.vue:134-147", "title": "色谱仪报表被硬编码 mock 覆盖真实 API", "severity": "致命", "type": "mock_override", "symptom": "页面恒显示写死的 10月2日假报表,真实 queryReportData 不调用", "root_cause": "getbundleSpyInfoList 被注释,改为本地写死 res 对象", "repro": "打开色谱仪报表分析首页列表 → 数据固定为 10月2日样例,与后端无关", "fix_hint": "恢复 await getbundleSpyInfoList({ type: 'bundleSpy', ...params }) 并删除硬编码", "id": "BUG-010", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "预警联动控制", "file": "src/views/vent/deviceManager/workingFace/workingFace.api.ts:18-21,79-90", "title": "智能管控批量删除/导入导出误指向 /sys/user/*", "severity": "致命", "type": "wrong_endpoint", "symptom": "批删打到用户批量删除接口,可能删错资源或失败;单删走 managesys 正确路径", "root_cause": "deleteBatch/importExcel/exportXls 从用户模块拷贝未改", "repro": "预警联动勾选多条批删,抓包确认 /sys/user/deleteBatch", "fix_hint": "改为 /safety/ventanalyManageSystem/deleteBatch 及对应导入导出路径", "id": "BUG-011", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "130分站监测", "file": "src/views/vent/safetyList/common/detail-130.vue:865-892", "title": "devInfoList 空指针(同 index/detail)", "severity": "严重", "type": "null_crash", "symptom": "130 分站无子设备时列表处理抛错", "root_cause": "el.children.forEach 未处理 null/undefined devInfoList", "repro": "打开 130 详情页并选中无设备分站", "fix_hint": "遍历前 `el.children = el.devInfoList || []`", "id": "BUG-012", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "130分站监测", "file": "src/views/vent/safetyList/safetyList.api.ts:23-25,72,76", "title": "删除130分站/传感器误调158删除接口", "severity": "严重", "type": "api", "symptom": "130 分站删除可能删错资源或后端拒绝,与 158 接口串用", "root_cause": "remove130Substation/remove130Device 分别使用 Api.remove158Substation/Api.remove158Device,尽管 enum 已定义 remove130*", "repro": "130 分站详情执行删除分站或传感器 → 查看请求 URL 是否含 remove158*", "fix_hint": "改为 Api.remove130Substation / Api.remove130Device", "id": "BUG-013", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "158分站监测", "file": "src/views/vent/safetyList/common/detail.vue:977-1002,1013-1022", "title": "devInfoList 为空时 forEach 崩溃", "severity": "严重", "type": "null_crash", "symptom": "部分分站无子设备时详细信息表加载失败", "root_cause": "el.children = el.devInfoList 后未判空直接 forEach(getStationList1/getStationListAll)", "repro": "选择无测点的分站查看详细信息", "fix_hint": "使用可选链或默认空数组后再遍历", "id": "BUG-014", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "一张表", "file": "src/views/vent/monitorManager/deviceMonitor/staticSheets/gasSheet.vue:1-151", "title": "瓦斯一张表静态硬编码 HTML,无实时数据", "severity": "严重", "type": "data", "symptom": "瓦斯参数表固定静态内容,非实时监测", "root_cause": "硬编码表格,无数据请求", "repro": "打开瓦斯一张表观察数据不更新", "fix_hint": "接入瓦斯监测/抽采接口动态填充", "id": "BUG-015", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "光纤测温监测", "file": "src/views/vent/monitorManager/deviceMonitor/components/device/modal/fiber.modal.vue:239-243", "title": "光纤弹窗 Object.keys(readData) 空指针", "severity": "严重", "type": "null deref on mount/update", "symptom": "设备无 readData 时打开弹窗直接 TypeError", "root_cause": "未判断 item.readData 即 Object.keys(item.readData)", "repro": "选中 readData 为空的光纤设备打开详情", "fix_hint": "if (!item.readData) return; 后再解析分段温度", "id": "BUG-016", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "光纤测温监测", "file": "src/views/vent/monitorManager/deviceMonitor/components/device/modal/fiber.modal.vue:49,169-188,232-257", "title": "光纤详情风险等级与预警历史写死假数据", "severity": "严重", "type": "mock hardcode replacing real API", "symptom": "风险等级恒为“低风险”,预警历史永远是测点6/318℃等假记录,不随真实报警变化", "root_cause": "模板写死低风险;warningConfig.data 硬编码数组,watch 未用真实告警填充", "repro": "打开光纤测温弹窗 → 对比真实告警与滚动板内容", "fix_hint": "绑定设备真实风险字段与告警历史接口/数据", "id": "BUG-017", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "喷淋监控系统", "file": "src/components/vent/BasicMonitoring.vue:19,193-201", "title": "操作列表 :key 冲突 + 空场景崩溃", "severity": "严重", "type": "vue_key_collision/null_crash", "symptom": "喷淋多个按钮共用 key 导致 DOM 复用异常;无场景数据时页面直接抛错白屏", "root_cause": "v-for 使用 item.key 作唯一键但喷淋键重复;getSysDataSource 无空数组守卫直接取 options[0].id", "repro": "1) 打开喷淋页观察按钮交互状态错乱;2) 后端返回空 records 时进入页面立即报错", "fix_hint": "key 使用 label 或唯一 id;取首项前判断 records.length", "id": "BUG-018", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "喷雾降尘监控", "file": "src/views/vent/home/configurable/dust.vue:87-93", "title": "服务端配置被测试数据覆盖且只用 Mock", "severity": "严重", "type": "hardcoded_override", "symptom": "粉尘首页始终展示 testConfigDust + BDDustMock,真实监测数据不刷新", "root_cause": "fetchConfigs('dust') 后强制 configs=testConfigDust,并用 Promise.resolve(BDDustMock) 代替 getHomeData", "repro": "任意环境打开粉尘可配置首页,对比接口与页面数据源", "fix_hint": "生产移除测试覆盖,恢复 getHomeData 轮询", "id": "BUG-019", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "喷雾降尘监控", "file": "src/views/vent/home/configurable/dustControl.vue:53-54", "title": "错误 pageType 拉取后再覆盖测试配置", "severity": "严重", "type": "wrong_param/hardcoded_override", "symptom": "降尘管控页配置与粉尘业务不匹配,最终仍被本地测试配置覆盖", "root_cause": "fetchConfigs('mine_fire') 后 configs.value=testConfigDustControl", "repro": "打开 dustControl 页检查 configuration 请求 pageType 与最终 configs", "fix_hint": "使用正确粉尘 pageType,并按环境决定是否使用测试配置", "id": "BUG-020", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "多灾融合预警", "file": "src/views/vent/monitorManager/alarmMonitor/warn/gasWarn.vue:311", "title": "gasGlFaultDia 无防护 JSON.parse 可抛错", "severity": "严重", "type": "crash_on_mount", "symptom": "缺/非法 gasGlFaultDia 时脚本异常,故障诊断页中断", "root_cause": "JSON.parse(data.readData.gasGlFaultDia) 无空值与 try/catch", "repro": "故障诊断选中无 gasGlFaultDia 的设备", "fix_hint": "JSON.parse(x||'{}') 并 catch 给默认坐标", "id": "BUG-021", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "多灾融合预警", "file": "src/views/vent/monitorManager/alarmMonitor/warn/ventilateWarn.vue:239-250", "title": "从巷道阻力分析切回通风监测后轮询不恢复", "severity": "严重", "type": "timer_not_restarted", "symptom": "切回通风监测后顶部/测点停止自动刷新", "root_cause": "btnClick(0) 只 clearNetTimer+getMenuList,未 getMonitor(true)", "repro": "通风监测→巷道阻力→再点通风监测,等待>3s 看是否更新", "fix_hint": "ind===0 时调用 getMonitor(true)", "id": "BUG-022", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "多灾融合预警", "file": "src/views/vent/monitorManager/alarmMonitor/warn/fireWarn.vue:74-83,148-157,173-185,215-217", "title": "匿名 setTimeout 未清理且 getMonitor 不先 clear", "severity": "严重", "type": "timer_leak", "symptom": "快速切换/离开后仍请求 sysTypeWarn;可能双轮询", "root_cause": "cardClick/reset 的 setTimeout 无句柄;getMonitor 赋值前不清旧 timer", "repro": "火灾预警连点内因/外因后返回首页,抓包仍见请求", "fix_hint": "保存 delay timer 并在 unmount clear;getMonitor 开头 clearPollTimer", "id": "BUG-023", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "多灾融合预警", "file": "src/views/vent/monitorManager/alarmMonitor/common/external-fourc.vue:147-153", "title": "四参外因温度误绑 fireval", "severity": "严重", "type": "wrong_field_binding", "symptom": "温度监测显示错误/空", "root_cause": "与 threec 相同拷贝错误 val: el.readData.fireval", "repro": "打开外因四参温度列表", "fix_hint": "改为 temperature", "id": "BUG-024", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "多灾融合预警", "file": "src/views/vent/monitorManager/alarmMonitor/warn/gasWarn.vue:346-365", "title": "宝德矿第三 Tab 映射到瓦斯参数而非预警指标", "severity": "严重", "type": "wrong_field_binding", "symptom": "菜单第三项「预警指标」点击却渲染 gasParamter(wscs)", "root_cause": "getMonitorComponent(宝德)=[预警监测,故障诊断,预警指标];btnClick ind===2 固定 isShow='wscs'", "repro": "sysOrgCode=sdmtjtbdmk 打开瓦斯预警点第三个类型按钮", "fix_hint": "宝德 ind===2 → yjzb;布尔台 ind===2 保持 wscs", "id": "BUG-025", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "多灾融合预警", "file": "src/views/vent/monitorManager/alarmMonitor/warn/gasWarn.vue:368-377", "title": "宝德预警监测卡片误走故障诊断轮询", "severity": "严重", "type": "wrong_comparison", "symptom": "预警监测点卡片会走 bjlist,菜单被故障设备覆盖", "root_cause": "cardClick 仅按 isflag=='1' 分支,未看 isShow/activeIndex", "repro": "宝德→预警监测→切换工作面卡片,观察是否请求 bjlist", "fix_hint": "yjjc→getMonitor;gzzd→getMonitor1", "id": "BUG-026", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "多灾融合预警", "file": "src/views/vent/monitorManager/alarmMonitor/alarmHistoryTable.vue:166-167", "title": "未传 deviceType 时 strtype 变成 \"undefined*\"", "severity": "严重", "type": "wrong_field_binding", "symptom": "设备预警报警历史过滤错误,列表空或错数据", "root_cause": "beforeFetch: props.deviceType + '*';deviceWarn.vue:43 未传 deviceType", "repro": "设备监测预警→报警历史,检查请求 strtype", "fix_hint": "传入正确 deviceType,或空时不拼 strtype", "id": "BUG-027", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "多灾融合预警", "file": "src/views/vent/monitorManager/alarmMonitor/common/external-threec.vue:118-124", "title": "温度传感器列表误绑 fireval", "severity": "严重", "type": "wrong_field_binding", "symptom": "外因火灾温度卡片显示火焰字段/空值", "root_cause": "temperature.map 使用 readData.fireval;mainWell 正确用 temperature", "repro": "外因火灾 temperature 有值、fireval 空时看温度卡", "fix_hint": "改为 el.readData.temperature(fourc:147-153 同步)", "id": "BUG-028", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "多灾融合预警", "file": "src/views/vent/monitorManager/alarmMonitor/warn/gasWarn.vue:193", "title": "甲烷显示运算符优先级错误", "severity": "严重", "type": "wrong_operator_precedence", "symptom": "gasC 为空时显示 \"undefined%\" 而非 '--'", "root_cause": "el.readData.gasC + '%' || '--' 中字符串恒 truthy", "repro": "测点 gasC 缺失时看左侧甲烷值", "fix_hint": "(gasC!=null&&gasC!=='') ? gasC+'%' : '--'", "id": "BUG-029", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "多灾融合预警", "file": "src/views/vent/monitorManager/alarmMonitor/warn/dustWarn.vue:131-143,166-176", "title": "粉尘预测曲线每轮 push 不清理导致无限膨胀", "severity": "严重", "type": "timer_state_leak", "symptom": "停留越久曲线点越多、内存升高", "root_cause": "fillChartByIndex 每秒 echartYc.push;仅 topAreaClick 会清空", "repro": "粉尘预警停留数分钟观察 echartYc 长度", "fix_hint": "每次 fill 前重置 echartYc,或替换最新点", "id": "BUG-030", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "多灾融合预警", "file": "src/views/vent/monitorManager/alarmMonitor/warn/ventilateWarn.vue:10", "title": "返回按钮权限取反", "severity": "严重", "type": "inverted_permission", "symptom": "有 gasWarn:return 权限看不到返回;无权限反而显示", "root_cause": "v-if=\"!hasPermission(...)\";对照 deviceMonitorWarn 为正逻辑", "repro": "分配 gasWarn:return 后对比返回按钮显隐", "fix_hint": "改为 hasPermission;fire/dust/ventilate/device/waterLevel 同步", "id": "BUG-031", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "安全监控分站管理", "file": "src/views/vent/safetyList/index.vue:234-257,408-417", "title": "卸载引用未定义 timer + children 空指针 + 分页 total 错误", "severity": "严重", "type": "reference_error/null_crash", "symptom": "离开页面报 timer is not defined;devInfoList 为空时列表渲染崩溃;分页总数异常", "root_cause": "timer 声明被注释但 onUnmounted 仍引用;el.children=el.devInfoList 后直接 forEach;res.total 在数组结果上常为 undefined", "repro": "进入页再离开;返回含 null devInfoList 的分站;观察 pagination.total", "fix_hint": "删除或恢复 timer;`(el.devInfoList||[]).forEach`;按接口实际结构取 records/total", "id": "BUG-032", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "密闭监测系统", "file": "src/views/vent/monitorManager/obfurageMonitor/index.vue:89-138", "title": "空数据崩溃且切换系统不刷新关联设备", "severity": "严重", "type": "null_crash/stale_state", "symptom": "无密闭系统/无关联设备时崩溃;切换密闭点后历史页设备 Tab 仍是旧设备", "root_cause": "直接访问 msgTxt[0]、deviceArr[0];getSelectRow 只改 optionValue,未调用 getDeviceList", "repro": "空数据进页;有多套密闭→切换后打开历史监测看设备按钮未更新", "fix_hint": "空数组守卫;getSelectRow 内调用 getDeviceList()", "id": "BUG-033", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "局部风机管控", "file": "src/views/vent/monitorManager/fanLocalMonitor/index.vue:782-791", "title": "风筒直径控制按钮重复且同 key", "severity": "严重", "type": "control buttons sharing same paramcode", "symptom": "控制区出现两个相同“风筒直径”按钮,key 均为 diameter,行为完全重复", "root_cause": "leftBtnArr 中 diameter 配置项被复制粘贴两次", "repro": "开启 fanLocal:diameter → 顶部控制按钮可见重复项", "fix_hint": "删除重复配置;若本意为主/备直径,需不同 key 与 paramcode", "id": "BUG-034", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "工作面来压预警", "file": "src/views/vent/monitorManager/betKy/index.vue:112-146,148-154,258-262", "title": "矿压监测轮询逻辑错误且特定矿用假数据", "severity": "严重", "type": "mock hardcode + setInterval/setTimeout poll without proper clear", "symptom": "A02A02 矿强制使用 ceshi.json;轮询前把 timer 置 null 未 clearTimeout,chartData 每次 push 不清理导致曲线数据膨胀错乱;卸载用 clearInterval 清 setTimeout", "root_cause": "chartData 每轮 push 不清空;timer=setTimeout 却 clearInterval;重启只置 null 不 clear", "repro": "返回含 readData=null 的 Minepressure 列表", "fix_hint": "每轮 chartData=[];统一 clearTimeout 并先 clear 再置空", "id": "BUG-035", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "报表数据映射", "file": "src/views/vent/reportManager/comment/reportMap.vue:82-119,135-145", "title": "reactive 表单被整体重赋值 + 部门树空 children 崩溃", "severity": "严重", "type": "reactivity_break/null_crash", "symptom": "新增/编辑后表单状态异常;部门节点无 children 时查询部门树直接报错", "root_cause": "handleAdd/handleEdit 执行 formState = { ... },替换了 reactive 代理", "repro": "编辑一条映射再点新增观察表单残留;部门树缺 children 的节点触发加载", "fix_hint": "用 Object.assign(formState, ...) 或重置字段;forEach 前守卫 children", "id": "BUG-036", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "报表数据映射", "file": "src/views/vent/reportManager/comment/report-modal.vue:135-151", "title": "编辑时 JSON.parse(mineCells) 在非字符串时抛错", "severity": "严重", "type": "type_error", "symptom": "编辑已有映射弹窗打开失败或控制台 TypeError", "root_cause": "watch 中无条件 JSON.parse(formStates.mineCells);接口若已反序列化为数组则解析失败;且 Object.assign 不会清除旧 id", "repro": "打开编辑,当 record.mineCells 为数组或空时复现", "fix_hint": "typeof===string 再 parse,数组则直接使用;新增时显式清空 id", "id": "BUG-037", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "抽采泵站管控", "file": "src/views/vent/gas/gasPumpMonitor/components/monitorChart.vue:50-65", "title": "setInterval 用 clearTimeout 清理导致泄漏", "severity": "严重", "type": "timer_not_cleared", "symptom": "离开监测图表后仍每 2s 推数据", "root_cause": "setInterval + onUnmounted clearTimeout", "repro": "进入监测图表后切走,观察回调是否继续", "fix_hint": "改为 clearInterval(timer)", "id": "BUG-038", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "抽采泵站管控", "file": "src/views/vent/gas/gasPumpMonitor/index.vue:57-68", "title": "井下泵模型切换后被无条件覆盖为地上泵", "severity": "严重", "type": "copy_paste_bug", "symptom": "选中 pump_under* 仍加载地上 gasPump 三维", "root_cause": "if/else 设类型后末尾又 setModelType('gasPump')", "repro": "抽采泵站监测切到井下泵站设备", "fix_hint": "删除末尾无条件 setModelType('gasPump')", "id": "BUG-039", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "抽采达标评判", "file": "src/views/vent/gas/gasAssessment/components/gasUnit.vue:27,55,73-75", "title": "单元混量/纯量图表写死 mock", "severity": "严重", "type": "mock_override", "symptom": "图表恒为本地假数据,真实监测不驱动", "root_cause": "CustomChart 绑定 mockGasUnitHlData/mockGasUnitClData", "repro": "打开抽采单元对比接口与图表数据源", "fix_hint": "用接口历史数据替换 mock", "id": "BUG-040", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "抽采达标评判", "file": "src/views/vent/gas/gasAssessment/components/gasControl.vue:32-40,88-112", "title": "调控页 getMonitor 空转且阀门无绑定", "severity": "严重", "type": "incomplete", "symptom": "测点值始终为空;阀门开度输入/控制按钮无事件与接口", "root_cause": "getMonitor 仅 setTimeout 自调用不请求数据;阀门区无 @click/API", "repro": "打开抽采达标评判-调控相关页 → 测点 '-'、按钮无响应", "fix_hint": "接入监测 list API 填充 dataSource;为阀门控制绑定下发接口", "id": "BUG-041", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "抽采达标评判", "file": "src/views/vent/gas/gasAssessment/index.vue:43", "title": "进入抽采单元页未传入 unitId", "severity": "严重", "type": "wrong_field_binding", "symptom": "侧栏 list({ids}) 为空,实时数据无法对应选中单元", "root_cause": " 未绑定 :unitId=\"activeUnitId\"", "repro": "达标评判点选单元后看 list 请求 ids", "fix_hint": "", "id": "BUG-042", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "抽采达标评判/瓦斯抽采单元", "file": "src/views/vent/gas/gasAssessment/components/{gasEcharts,gasUnit,gasPipingEcharts}.vue:gasEcharts 14-47; gasUnit 27,55; gasPipingEcharts 13-99", "title": "图表永久绑定 mock* 数据", "severity": "严重", "type": "data", "symptom": "抽采单元/管网相关图表始终显示 gasAssessment.data 中的 mock 曲线/饼图,即使列表接口已取到真实测点", "root_cause": "模板 :chart-data/:dataSource 直接绑定 mockGasUnitData/mockPieData/mockGasPiping* 等,未接入接口结果", "repro": "进入抽采达标评判相关子页 → 图表不随实时监测变化", "fix_hint": "用接口返回历史/累计数据替换 mock 绑定;gasUnit 已有 list(),应生成 chart-data", "id": "BUG-043", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "掘进面智能管控", "file": "src/views/vent/monitorManager/tunFaceMonitor/components/tunFaceHome.vue:254,262-271", "title": "掘进面首页无条件解包 warnInfo/readData", "severity": "严重", "type": "null deref on mount", "symptom": "缺 dustS/fireS/gasS/synthesizeS/ventS、缺 surface_history、或缺 location.readData 时页面直接崩溃", "root_cause": "无守卫直接访问 res['warnInfo'][x]['devices']、res['surface_history'][0]、data['readData']['flen']", "repro": "接口缺任一 warn 分组或 location.readData → 打开掘进面主页", "fix_hint": "逐层可选链;缺省赋空数组/空对象", "id": "BUG-044", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "文件共享中心", "file": "src/views/vent/performance/fileDetail/index.vue:292-314,367-377,387", "title": "空树上标崩溃 + 可空文件上传 + nodeParam 丢失响应式", "severity": "严重", "type": "null_crash/invalid_upload", "symptom": "无目录时白屏;未选文件仍可点确定上传;树节点切换后表格参数可能异常", "root_cause": "listArr[0] 无守卫;handleOk 不校验 fileList;nodeParam=node 重赋放弃 reactive", "repro": "空目录数据进页;打开上传不选文件点确定;切换目录观察列表 parentId", "fix_hint": "空树提示;上传前校验 fileList.length;Object.assign(nodeParam, node)", "id": "BUG-045", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "智能注氮系统", "file": "src/views/vent/monitorManager/compressor/components/nitrogenHome_ln.vue:341-349", "title": "监测数据忽略选中系统ID", "severity": "严重", "type": "wrong_data_binding", "symptom": "切换注氮系统后仍展示 msgTxt[0] 数据,监控内容与下拉选择不一致", "root_cause": "getDataSource(systemID) 入参未用于请求,固定取 res.msgTxt[0].datalist", "repro": "配置≥2套注氮系统→切换下拉→数据不随 systemId 变化", "fix_hint": "按 systemID/deviceId 过滤或带参请求对应系统数据", "id": "BUG-046", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "智能注氮系统", "file": "src/views/vent/monitorManager/compressor/index.vue:93-126", "title": "空列表崩溃且 modalType 未随系统类型切换", "severity": "严重", "type": "null_crash/stale_config", "symptom": "无注氮系统时白屏;依赖 modalType 的矿端组件始终按 nitrogenUnderground 建模", "root_cause": "options.value[0]['id'] 无空判断;changeModalType 中 modalType 赋值被注释,仅改了 moduleTypeName", "repro": "空数据进页崩溃;潞宁等使用 modalType 的矿切换空压机/制氮机后模型类型不变", "fix_hint": "空 records 提前 return;恢复按 strsystype 设置 modalType", "id": "BUG-047", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "智能注浆系统", "file": "src/views/vent/monitorManager/groutMonitor/index.vue:110-119,67,86", "title": "空数据崩溃且 currentDeviceType 永不赋值", "severity": "严重", "type": "null_crash/dead_state", "symptom": "无注浆系统时白屏;传给 groutHome 的 device-type 恒为空字符串", "root_cause": "options.value[0]['id'] 无守卫;deviceChange 只写 deviceType,从未写入 currentDeviceType", "repro": "空列表进页崩溃;有数据时检查 groutHome props.deviceType 为空", "fix_hint": "空 records 保护;deviceChange/getSelectRow 同步 currentDeviceType", "id": "BUG-048", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "机电硐室管控", "file": "src/views/vent/home/configurable/electroChamber.vue:86-99,29-50", "title": "拉取配置后强制覆盖为本地测试配置且历史无设备ID", "severity": "严重", "type": "hardcoded_override/missing_param", "symptom": "线上始终使用 testConfigElectro;切历史 Tab 时 deviceId 常为空导致查询无效", "root_cause": "fetchConfigs 成功后 configs.value=testConfigElectro;optionValue 仅来自路由 query,无设备选择赋值", "repro": "非 A02A02 环境打开页面看配置是否被测试数据覆盖;无 query.id 切历史记录", "fix_hint": "生产去掉测试覆盖;补充硐室/系统选择并写入 optionValue", "id": "BUG-049", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "束管日报分析", "file": "src/views/vent/bundleSpy/bundleSpyTable/index.vue; vent/bundle/bundleMonitorTable/index.vue:bundleSpy:108-109; bundle:101-102", "title": "保德 sysOrgCode 大小写错误导致专用列永不命中", "severity": "严重", "type": "copy_paste_orgcode", "symptom": "保德落到 default 列配置,专用字段不显示", "root_cause": "写 case 'sdmtjtBdmk';全库其余为 'sdmtjtbdmk'", "repro": "sysOrgCode=sdmtjtbdmk 打开色谱仪/束管日报", "fix_hint": "统一改为 sdmtjtbdmk", "id": "BUG-050", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "束管日报分析", "file": "src/views/vent/bundle/bundleMonitorTable/bundle-table.data.ts:595-610", "title": "保德束管 NO₂ 最小值 dataIndex 写成 no22_max", "severity": "严重", "type": "wrong_column_dataIndex", "symptom": "NO₂最小值空白或错值", "root_cause": "最小值 dataIndex:'no22_max',key/dataIndex 交叉贴错", "repro": "保德束管日报对比 no2_min/no2_max 与三列", "fix_hint": "最大值 no2_max;最小值 no2_min", "id": "BUG-051", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "束管日报分析", "file": "src/views/vent/bundle/bundleMonitorTable/bundle-table.data.ts:1465-1472,1848-1855", "title": "寸草塔一矿/哈拉沟 O₂最大值列绑定 o2_min", "severity": "严重", "type": "wrong_column_dataIndex", "symptom": "标题最大值实际显示最小值", "root_cause": "title:最大值 却 dataIndex:'o2_min'", "repro": "对应矿打开束管日报对比 o2_max/o2_min", "fix_hint": "改为 dataIndex:'o2_max'", "id": "BUG-052", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "束管日报分析", "file": "src/views/vent/bundle/bundleMonitorTable/index.vue:103-104,453", "title": "补连塔图表分支 orgCode 写成 sdmtjtBltmk", "severity": "严重", "type": "copy_paste_orgcode", "symptom": "表格用 Bltcolumns 正确,柱状图落入 default", "root_cause": "computedColumns 用 sdmtjtbltmk,getSeriesConfig 用 sdmtjtBltmk", "repro": "sysOrgCode=sdmtjtbltmk 对比表头与图例", "fix_hint": "图表 case 改为 sdmtjtbltmk", "id": "BUG-053", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "火灾监测预警", "file": "src/views/vent/monitorManager/alarmMonitor/warn/fireWarn.vue:4", "title": "返回按钮权限判断取反(!hasPermission('fireWarn:return'))", "severity": "严重", "type": "权限逻辑错误", "symptom": "有 *:return 权限的用户看不到返回;无权限用户反而可见(与 deviceMonitorWarn 正确写法相反)", "root_cause": "使用 v-if=\"!hasPermission('xxx:return')\";对照 deviceMonitorWarn 应为正向 hasPermission", "repro": "分别用有/无 gasWarn:return 等权限账号打开预警页,观察返回按钮显隐", "fix_hint": "去掉 !,改为 v-if=\"hasPermission('...:return')\"", "id": "BUG-054", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "灾变应急控制", "file": "src/views/vent/monitorManager/deviceMonitor/components/emergency/index.vue:196-226", "title": "工作面详情多项共用同一数据 code", "severity": "严重", "type": "wrong field mapping / logic bug", "symptom": "工作面编号/采区/煤层都显示 dTotalArea;长度/走向/采高都显示 totallength", "root_cause": "analysisDetailDataList 多项复用相同 code,未映射独立字段", "repro": "打开灾变应急分析详情区 → 观察多行数值是否雷同", "fix_hint": "为每项配置正确业务字段 code,并在 pageData 中补齐对应值", "id": "BUG-055", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "灾变应急控制", "file": "src/views/vent/monitorManager/deviceMonitor/components/emergency/index.vue:273-275", "title": "应急解算局部阻力同样误绑 dHNature", "severity": "严重", "type": "wrong field mapping / logic bug", "symptom": "灾变应急巷道阻力表局部阻力错误", "root_cause": "与 network 相同的复制错误:dHLocal: item['dHNature']", "repro": "进入灾变应急页加载解算结果 → 查看巷道阻力列", "fix_hint": "改为 item['dHLocal']", "id": "BUG-056", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "灾变应急控制", "file": "src/views/vent/monitorManager/deviceMonitor/components/emergency/index.vue:314-321", "title": "应急页传感器 readData 空指针", "severity": "严重", "type": "null deref on mount/update", "symptom": "同网络页,缺 readData 时应急页崩溃", "root_cause": "item['readData']['va'] 无空判断", "repro": "推送缺 readData 的 monitors → 打开应急页", "fix_hint": "对 readData 做空对象兜底", "id": "BUG-057", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "瓦斯人工巡检业务分析", "file": "src/views/vent/gas/gasAnalysis/index.vue:177-182,216-219", "title": "列表成功后强制 pagination.current=1 导致分页失效", "severity": "严重", "type": "pagination_logic_bug", "symptom": "翻到第 2 页后被打回第 1 页", "root_cause": "gasReportLogLists 在有 records 时无条件 current=1", "repro": "业务分析多页数据点第 2 页", "fix_hint": "删除该赋值;仅查询/重置时置 1", "id": "BUG-058", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "瓦斯人工巡检地点管理", "file": "src/views/vent/gas/gasInspectNonfc/components/inspectEdit.vue:12-14,79-81,71-76", "title": "区队下拉缺 value 且整对象重赋值打断响应式", "severity": "严重", "type": "nfc_nonfc_copy_paste", "symptom": "提交可能把区队名当 id;二次编辑表单不刷新", "root_cause": "option 无 :value;formStateEdit=Object.assign 重赋值丢失 reactive 绑定", "repro": "Nonfc 编辑改区队提交看 payload;连续编辑两条", "fix_hint": "补 :value=\"item.value\";Object.assign(formStateEdit, newV) 原地更新", "id": "BUG-059", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "瓦斯人工巡检地点管理(NFC)", "file": "src/views/vent/gas/gasInspect/index.vue:66-75", "title": "早/中/晚是否巡检真假分支都渲染「是」", "severity": "严重", "type": "wrong_field_binding", "symptom": "未巡检也显示「是」,状态失真", "root_cause": "text=='1' 与 v-else 内均写「是」", "repro": "NFC 地点管理查看未巡检班次列", "fix_hint": "else 显示「否」;对齐 Nonfc 字段约定", "id": "BUG-060", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "瓦斯人工巡检报表管理", "file": "src/views/vent/gas/gasReport/index.vue:357-440", "title": "审核/导出异常校验 else-if 导致任一气体合格即放行", "severity": "严重", "type": "inverted_validation_logic", "symptom": "O2 超限但 CO 合格仍可审核通过;多行以最后一行结果为准", "root_cause": "getTs 对 O2/CO/CO2/T/CH4 用 else-if;forEach return 不能结束函数", "repro": "仅 O2 异常其余合格→点审核通过", "fix_hint": "全部字段均在阈内才放行;任异常即 true", "id": "BUG-061", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "瓦斯人工巡检报表管理", "file": "src/views/vent/gas/gasReport/index.vue:271-274", "title": "巡检图片 Blob 二次封装错误", "severity": "严重", "type": "wrong_blob_usage", "symptom": "查看班次图片失败或 Failed to construct 'Blob'", "root_cause": "gasServerImg 已是 blob,又 new Blob(res,...);构造需 Array", "repro": "日报管理点夜/早/中班「查看」", "fix_hint": "URL.createObjectURL(res) 或 new Blob([res],...)", "id": "BUG-062", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "瓦斯监测预警", "file": "src/views/vent/monitorManager/alarmMonitor/warn/gasWarn.vue:5", "title": "返回按钮权限判断取反(!hasPermission('gasWarn:return'))", "severity": "严重", "type": "权限逻辑错误", "symptom": "有 *:return 权限的用户看不到返回;无权限用户反而可见(与 deviceMonitorWarn 正确写法相反)", "root_cause": "使用 v-if=\"!hasPermission('xxx:return')\";对照 deviceMonitorWarn 应为正向 hasPermission", "repro": "分别用有/无 gasWarn:return 等权限账号打开预警页,观察返回按钮显隐", "fix_hint": "去掉 !,改为 v-if=\"hasPermission('...:return')\"", "id": "BUG-063", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "瓦斯管网管控", "file": "src/views/vent/gas/gasPipeNet/index.vue:142-147", "title": "管网阀门控制提交未调控制接口", "severity": "严重", "type": "undefined_api_call", "symptom": "点确定只 toast 表单 JSON,阀门无动作", "root_cause": "submitHandler 仅 message.success,无 deviceControl", "repro": "管网管控→阀门控制→提交", "fix_hint": "接入泵站同款控制 API", "id": "BUG-064", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "瓦斯钻孔监测", "file": "src/views/vent/gas/gasZk/index.vue:61-79", "title": "setInterval 回调内再 startPolling 造成重叠轮询", "severity": "严重", "type": "timer_logic_bug", "symptom": "慢网时 /drill/get/status 并发堆积", "root_cause": "interval 不等待完成可再次触发;成功后又 stop+new interval", "repro": "打开钻孔监测并限速网络观察并发", "fix_hint": "改为 await 后 setTimeout 串行轮询", "id": "BUG-065", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "用户日志管理", "file": "src/views/monitor/log/index.vue:2,56-84", "title": "v-modal 拼写错误 + 登录统计破坏 searchInfo 响应式", "severity": "严重", "type": "typo/reactivity_break", "symptom": "Tab 无法双向绑定;切到“登录统计”后查询条件失效、列表参数丢失 logType", "root_cause": "模板写 v-modal 而非 v-model;case '4' 执行 searchInfo={} 丢掉 reactive 代理", "repro": "打开日志页切换 Tab;切到登录统计后再查询", "fix_hint": "改为 v-model;用 Object.keys 清空或重置字段,禁止重赋 searchInfo", "id": "BUG-066", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "皮带巷管控系统", "file": "src/views/vent/monitorManager/beltTunMonitor/components/beltTunHome.vue:260-268", "title": "皮带巷首页 warnInfo/sysInfo 无空保护", "severity": "严重", "type": "null deref on mount", "symptom": "sysInfo 或某类 warn 分组缺失时页面加载失败", "root_cause": "直接 Object.assign(res['sysInfo'], res['sysInfo']['readData']) 与 warnInfo.*.devices", "repro": "返回不完整 beltTun 监测包 → 打开皮带巷主页", "fix_hint": "增加空判断与默认值", "id": "BUG-067", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "粉尘参数一张表", "file": "src/views/vent/monitorManager/deviceMonitor/staticSheets/dustSheet.vue:1-103", "title": "粉尘参数一张表静态硬编码 HTML,无实时数据", "severity": "严重", "type": "data", "symptom": "粉尘参数表固定静态内容,非实时监测", "root_cause": "硬编码表格,无数据请求", "repro": "打开粉尘参数一张表观察数据不更新", "fix_hint": "接入粉尘监测接口动态填充", "id": "BUG-068", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "粉尘报表分析", "file": "src/views/vent/dust/dustMonitorTable/index.vue:317-320,510-513", "title": "保德当日粉尘总体最大值误用 zcjqpj/hcjqpj", "severity": "严重", "type": "wrong_field_binding", "symptom": "当日分析最大值恒 -Infinity 或字段映射失败", "root_cause": "BdMaxValues 用 qc/hc;overallBdMaxValues 误用布尔台字段", "repro": "保德粉尘报表切「当日粉尘情况分析」", "fix_hint": "overallBdMaxValues 改为 qc/hc", "id": "BUG-069", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "粉尘报表分析", "file": "src/views/vent/dust/dustMonitorTable/index.vue:269-270,429-436,472-475", "title": "哈拉沟分组键 ccdd 被最大值循环改写成 jcdd", "severity": "严重", "type": "logic_state", "symptom": "工作场所下拉变成测点名,过滤错乱", "root_cause": "分组 gzcs=ccdd,HlgMaxValues 更新时 gzcs=item.jcdd 覆盖", "repro": "哈拉沟粉尘报表看工作场所下拉与过滤", "fix_hint": "更新最大值时不要用 jcdd 覆盖 gzcs", "id": "BUG-070", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "粉尘监测预警", "file": "src/views/vent/monitorManager/alarmMonitor/warn/dustWarn.vue:6", "title": "返回按钮权限判断取反(!hasPermission('dustWarn:return'))", "severity": "严重", "type": "权限逻辑错误", "symptom": "有 *:return 权限的用户看不到返回;无权限用户反而可见(与 deviceMonitorWarn 正确写法相反)", "root_cause": "使用 v-if=\"!hasPermission('xxx:return')\";对照 deviceMonitorWarn 应为正向 hasPermission", "repro": "分别用有/无 gasWarn:return 等权限账号打开预警页,观察返回按钮显隐", "fix_hint": "去掉 !,改为 v-if=\"hasPermission('...:return')\"", "id": "BUG-071", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "综采面智能管控", "file": "src/views/vent/monitorManager/workFaceMonitor/components/workFaceHome.vue:251-254", "title": "定位列表读取 readData.flen 空指针", "severity": "严重", "type": "null deref on mount/update", "symptom": "location 设备无 readData 时过滤阶段抛错,后续监控数据不完整", "root_cause": "locationData.push 中直接 data['readData']['flen']", "repro": "location.datalist 含 readData=null 的项", "fix_hint": "使用 data?.readData?.flen ?? '-'", "id": "BUG-072", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "综采面智能管控", "file": "src/views/vent/monitorManager/workFaceMonitor/components/workFaceHome.vue:262-276", "title": "综合预警判断键错误且可能空指针", "severity": "严重", "type": "null deref / wrong field mapping", "symptom": "用 warnInfo.warnInfo 判断却读取 synthesizeS;键不匹配时综合预警不更新,或 synthesizeS 缺失时崩溃;surface_history/sysInfo 亦缺保护", "root_cause": "条件写成 res['warnInfo']['warnInfo'];并对 surface_history[0]、sysInfo.readData 无空保护", "repro": "返回缺 synthesizeS 或 surface_history 为空的综采面数据", "fix_hint": "条件改为 synthesizeS;对各嵌套字段做空判断", "id": "BUG-073", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "色谱仪报表分析", "file": "src/views/vent/bundleSpy/bundleSpyTable/index.vue:237-241,386-390", "title": "活鸡兔/寸草塔二矿图表 O₂闭内 误绑 CH₄ 数据", "severity": "严重", "type": "wrong_field_binding", "symptom": "图例 O₂闭内 柱状与 CH₄闭内完全相同", "root_cause": "name:'O₂闭内' 的 data 写成 ch4AveValues", "repro": "对应矿打开色谱仪报表对比 o2_ave 与图", "fix_hint": "改为 o2AveValues", "id": "BUG-074", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "视频墙", "file": "src/views/vent/monitorManager/camera/index.vue:100-128,172-178", "title": "设备树加载与分页 paramKind 计算脆弱", "severity": "严重", "type": "null_crash/wrong_param", "symptom": "itemValue 无 '&' 或 msgTxt 结构异常时树展开/翻页失败或请求错误类型", "root_cause": "假定 msgTxt[0].datalist 存在;分页用 searchParam.devKind.indexOf('&') 对 nodeData.itemValue 做 substring,缺 '&' 得空串", "repro": "点击 itemValue 不含 '&' 的分类再翻页;或返回空 datalist 的节点", "fix_hint": "安全解析 itemValue;访问 datalist 前判空;分页直接用 nodeData.itemValue", "id": "BUG-075", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "设备监测预警", "file": "src/views/vent/monitorManager/alarmMonitor/warn/deviceWarn.vue:5", "title": "返回按钮权限判断取反(!hasPermission('deviceWarn:return'))", "severity": "严重", "type": "权限逻辑错误", "symptom": "有 *:return 权限的用户看不到返回;无权限用户反而可见(与 deviceMonitorWarn 正确写法相反)", "root_cause": "使用 v-if=\"!hasPermission('xxx:return')\";对照 deviceMonitorWarn 应为正向 hasPermission", "repro": "分别用有/无 gasWarn:return 等权限账号打开预警页,观察返回按钮显隐", "fix_hint": "去掉 !,改为 v-if=\"hasPermission('...:return')\"", "id": "BUG-076", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "通风参数一张表", "file": "src/views/vent/monitorManager/deviceMonitor/staticSheets/ventilateSheet.vue:1-263", "title": "通风参数一张表为静态硬编码 HTML,无实时数据", "severity": "严重", "type": "data", "symptom": "页面展示固定矿井参数表(如明安木独等),不刷新监测值", "root_cause": "纯静态 table;script 仅注释转换工具,无 API/绑定", "repro": "打开通风参数一张表 → 任意时刻数据不变、与监测无关", "fix_hint": "改为接口驱动渲染;若仅为示意文档页需在需求中降级为非监测页", "id": "BUG-077", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "通风监测预警", "file": "src/views/vent/monitorManager/alarmMonitor/warn/ventilateWarn.vue:10", "title": "返回按钮权限判断取反(!hasPermission('ventilateWarn:return'))", "severity": "严重", "type": "权限逻辑错误", "symptom": "有 *:return 权限的用户看不到返回;无权限用户反而可见(与 deviceMonitorWarn 正确写法相反)", "root_cause": "使用 v-if=\"!hasPermission('xxx:return')\";对照 deviceMonitorWarn 应为正向 hasPermission", "repro": "分别用有/无 gasWarn:return 等权限账号打开预警页,观察返回按钮显隐", "fix_hint": "去掉 !,改为 v-if=\"hasPermission('...:return')\"", "id": "BUG-078", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "通风网络解算", "file": "src/views/vent/monitorManager/deviceMonitor/components/network/index.vue:447-454", "title": "传感器列表未判空直接读 readData", "severity": "严重", "type": "null deref on mount/update", "symptom": "monitors 中某条缺少 readData 时 analyzePageResult 抛错,页面解算结果渲染中断", "root_cause": "直接访问 item['readData']['va']/['m3'],无空保护", "repro": "构造 monitors 项 readData=null 的解算推送 → 打开网络页", "fix_hint": "先取 const rd=item.readData||{} 再读字段", "id": "BUG-079", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "通风网络解算", "file": "src/views/vent/monitorManager/deviceMonitor/components/network/index.vue:403-405", "title": "局部阻力字段误读自然风压", "severity": "严重", "type": "wrong field mapping / logic bug", "symptom": "巷道表“局部阻力”与“自然风压”显示相同值,局部阻力失真", "root_cause": "dHLocal 赋值使用 item['dHNature'],与 dHNature 同源", "repro": "打开网络解算结果表 → 对比局部阻力与自然风压列", "fix_hint": "改为读取 item['dHLocal'](或后端真实局部阻力字段)", "id": "BUG-080", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "防尘系统监测", "file": "src/views/vent/monitorManager/deviceMonitor/components/device/modal/dust.modal.vue:216-238", "title": "粉尘弹窗测点状态/预警历史硬编码", "severity": "严重", "type": "mock hardcode replacing real API", "symptom": "测点状态 customRender 永远返回“正常”;预警滚动板为固定假数据", "root_cause": "columns.state 写死正常;warningConfig.data 硬编码", "repro": "打开粉尘监测详情弹窗观察状态与预警列表", "fix_hint": "状态取真实字段;预警列表接真实告警数据", "id": "BUG-081", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "需风量分析系统", "file": "src/components/vent/micro/createSubApp.vue:15-37", "title": "非 micro-* 路径组件恒为 null", "severity": "严重", "type": "shell_mount_failure", "symptom": "菜单若未挂在 micro-need-air/micro-vent-doc 前缀下则壳空白", "root_cause": "resetComponent 仅识别有限 appType", "repro": "用非 micro 路径打开需风量/核定", "fix_hint": "按实际菜单 path 扩展映射", "id": "BUG-082", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "风窗管控", "file": "src/views/vent/monitorManager/windowMonitor/index.vue:37-41", "title": "后门控制按钮文案错写成前门", "severity": "严重", "type": "control buttons sharing same paramcode / mislabeled control", "symptom": "界面显示“打开前门/关闭前门”,实际下发 rearGateOpen_S/rearGateClose_S,操作员会误控后门", "root_cause": "按钮展示文案复制前门未改,第二参数标题已是后门,UI 文本与指令不一致", "repro": "具备 window:gateControl 且 ndoorcount==2 → 看后两颗按钮文案与 setControl 参数", "fix_hint": "将后两颗按钮文案改为“打开后门/关闭后门”", "id": "BUG-083", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "风窗管控", "file": "src/views/vent/monitorManager/windowMonitor/index.vue:11-14,623-651", "title": "窗面积与窗角度控制共用 paramcode 1/2", "severity": "严重", "type": "control buttons sharing same paramcode", "symptom": "窗1/窗2 面积设定与角度设定最终都下发 paramcode='1'/'2',后端无法区分面积/角度", "root_cause": "twoAreaControl 与 twoAngleControl 都 setControl('1'|'2'),handleOK else 分支直接 data.paramcode=handlerState", "repro": "同时开启 window:twoAreaControl 与 window:twoAngleControl → 分别设定面积/角度 → 抓包对比 paramcode", "fix_hint": "角度使用独立点位(如 frontSetAngle1),或在 value/附加字段中区分控制类型", "id": "BUG-084", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "风窗管控", "file": "src/views/vent/monitorManager/windowMonitor/index.vue:31-33,504-520", "title": "设定风窗面积误走角度弹窗流程", "severity": "严重", "type": "control buttons sharing same paramcode", "symptom": "权限 window:showAngleArea 的“设定风窗面积”调用 setAngle(1),弹窗标题按角度生成,但点位仍 frontSetValue", "root_cause": "面积按钮错误绑定 setAngle 而非 setArea", "repro": "开启 window:showAngleArea → 点击“设定风窗面积” → 观察 modalTitle 与下发参数", "fix_hint": "改为 setArea(1),或单独实现面积设定入口", "id": "BUG-085", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "风门集中同控", "file": "src/views/vent/monitorManager/airDoor/components/tipModal.vue:28-54", "title": "倒计时弹窗 setTimeout 递归不清理", "severity": "严重", "type": "setInterval/setTimeout poll without clear on unmount", "symptom": "提示弹窗显示后每秒递归创建定时器;关闭/卸载后仍继续;timeout<=0 时先 timer=undefined 再 clearTimeout(undefined) 无效,且仍调用 getMonitor()", "root_cause": "getMonitor 无论 timeout 是否归零都递归调用;clearTimeout 写在 timer=undefined 之后;无取消句柄、watchEffect 可见时重复启动", "repro": "触发 visibleTs30=true → 关闭弹窗或离开页面 → 观察仍有定时回调", "fix_hint": "timeout<=0 时 return 不再递归;保存并 clearTimeout;Visible=false 时清理;避免 watchEffect 重复启动", "id": "BUG-086", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "风门集中同控", "file": "src/views/vent/monitorManager/airDoor/index.vue:44-51", "title": "风门同控菜单拉取未判空 msgTxt[0]", "severity": "严重", "type": "null deref on mount", "symptom": "接口返回空/异常结构时 getMenuList 抛错,左侧菜单无法加载", "root_cause": "直接访问 res.msgTxt[0].datalist.length", "repro": "mock /monitor/device 返回无 msgTxt 或空数组 → 打开风门集中同控", "fix_hint": "使用可选链与默认 []:res?.msgTxt?.[0]?.datalist || []", "id": "BUG-087", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "主风机管控", "file": "src/views/vent/monitorManager/mainFanMonitor/hooks/useAreaSetSimulation.ts:37-109; useMainFanSimulation.ts:25-72", "title": "天窗/闸板面积模拟 setInterval 卸载未清理", "severity": "一般", "type": "setInterval/setTimeout poll without clear on unmount", "symptom": "开启 fanSwitchoverSimulation 后设定面积过程中离开页面,interval 仍改 selectData,可能写已销毁状态", "root_cause": "useAreaSetSimulation 仅在过程结束 clear;无 onUnmounted 遍历 activeProcesses 清理(对比 useFanSwitchoverSimulation 有 stopTick)", "repro": "开启模拟 → 设定天窗面积 → 过渡未完成即路由离开", "fix_hint": "在 composable 增加 dispose/onUnmounted,清理 Map 内全部 interval", "id": "BUG-088", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "多灾融合预警", "file": "src/views/vent/monitorManager/alarmMonitor/warn/gasWarn.vue:189-190", "title": "strinstallpos 为空时 indexOf 抛错", "severity": "一般", "type": "crash_on_mount", "symptom": "getDetailList 抛错,监测卡片不更新", "root_cause": "假定 strinstallpos 必为 string", "repro": "gas 明细 strinstallpos 为 null", "fix_hint": "const pos=el.strinstallpos||'' 再操作", "id": "BUG-089", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "多灾融合预警", "file": "src/views/vent/monitorManager/alarmMonitor/warn/ventilateWarn.vue:207", "title": "warnDes 为空时 indexOf 抛错中断菜单构建", "severity": "一般", "type": "crash_on_mount", "symptom": "左侧菜单空白且轮询中断", "root_cause": "el.warnDes.indexOf('预警') 无空保护", "repro": "sysTypeWarn 返回 warnDes 缺失条目", "fix_hint": "(el.warnDes||'').indexOf(...)", "id": "BUG-090", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "多灾融合预警", "file": "src/views/vent/monitorManager/alarmMonitor/warn/dustWarn.vue:255", "title": "巷道温度单位错误依赖 humidity", "severity": "一般", "type": "wrong_field_binding", "symptom": "有温度无湿度时单位空白", "root_cause": "dw: el.humidity ? '(℃)' : ''", "repro": "temperature 有值 humidity 空时看单位", "fix_hint": "dw: el.temperature ? '(℃)' : ''", "id": "BUG-091", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "多灾融合预警", "file": "src/views/vent/monitorManager/alarmMonitor/alarm.data.ts:483-780", "title": "散点图动画 setInterval/resize 监听未清理", "severity": "一般", "type": "resource-leak", "symptom": "调用 setScatterEcharts 后即使销毁图表,30ms 动画与 window resize 监听仍存活", "root_cause": "setInterval(... ,30) 与 addEventListener('resize') 无返回清理函数", "repro": "进入使用 setScatterEcharts 的预警可视化 → 离开页面后 interval 仍跑", "fix_hint": "返回 { dispose }:clearInterval + removeEventListener + wwbzl.dispose()", "id": "BUG-092", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "安全监控分站管理", "file": "src/views/vent/safetyList/index.vue:144-146,71-76", "title": "调试风向取值与展示映射不一致", "severity": "一般", "type": "value_mismatch", "symptom": "调试选“反向”写入 '0',列表展示逻辑把反风映射为 '2',显示异常", "root_cause": "derictList 反向 value='0',而 valueJc 渲染把 '2' 当作反风", "repro": "调试设备选反向并确认,查看列表风向展示", "fix_hint": "统一风向枚举(建议 1 正/2 反)并同步调试与展示", "id": "BUG-093", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "密闭监测系统", "file": "src/views/vent/monitorManager/obfurageMonitor/index.vue:107-113", "title": "forEach 内 data=Object.assign 未回写", "severity": "一般", "type": "dead_assignment", "symptom": "readData 字段未合并进列表项,监测展示缺字段", "root_cause": "dataSource.forEach 中 `data = Object.assign(data, readData)` 只改局部绑定,未写回数组元素", "repro": "对比接口 readData 与页面 options 字段是否缺失", "fix_hint": "改为 Object.assign(data, readData) 不重绑,或显式写回", "id": "BUG-094", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "局部风机管控", "file": "src/views/vent/monitorManager/{fanLocalMonitor,gateMonitor,windowMonitor,mainFanMonitor,balancePressMonitor,compressor,windrectMonitor}/**; src/views/vent/gas/gasAssessment/threejs/gasAssessmen.threejs.ts:多处 active debugger", "title": "生产路径残留 debugger 断点", "severity": "一般", "type": "debug-leftover", "symptom": "DevTools 打开时模型切换/动画初始化/工况辅助计算会暂停页面", "root_cause": "遗留未注释 debugger;(如 fanLocal.threejs.Two.ts:40-42, gate.threejs.two.ssl.ts:190, dandaoFcBd3.threejs.ts:170, mainWind.xj.threejs.ts:768/795, balancePress.threejs.ts:60, nitrogenHome_dtyj.vue:326, windrect.threejs.ts:366, gasAssessmen.threejs.ts:69, conditionAssistance.vue:207, fanLocal/index.vue:1549 等)", "repro": "打开 DevTools → 进入对应三维监控页触发模型加载/动画", "fix_hint": "删除全部 active debugger,或统一用开发开关包裹", "id": "BUG-095", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "报表数据映射", "file": "src/views/vent/reportManager/comment/report-modal.vue:135-138", "title": "formStates 被重新赋值为 Object.assign 返回值", "severity": "一般", "type": "reactivity", "symptom": "极端情况下表单代理引用混乱;与父级 reportMap 的 formState 断裂叠加更易丢字段", "root_cause": "formStates = Object.assign(formStates, newV) 不必要地重绑定 let", "repro": "编辑映射记录时反复打开弹窗观察字段回填", "fix_hint": "仅 Object.assign(formStates, newV) 或 for..in 赋值,不要重赋值 let", "id": "BUG-096", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "报表管理", "file": "src/views/vent/reportManager/index.vue:89-106", "title": "三类根节点重复挂载同一套子树", "severity": "一般", "type": "wrong_tree_build", "symptom": "系统/手动/模板三类下出现完全相同的业务分类,筛选易混淆", "root_cause": "getTreeList 对 listArr 每个根节点都 push 完整 res 树,未按业务类型分流", "repro": "打开报表管理对比三个根节点的 children", "fix_hint": "按返回字段或接口分类型填充到对应根节点", "id": "BUG-097", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "抽采泵站监测", "file": "src/views/vent/gas/gasPumpMonitor/components/monitorChart.vue:49-66", "title": "setInterval 用 clearTimeout 清理", "severity": "一般", "type": "resource-leak", "symptom": "离开页面后图表轮询可能继续,造成多余计算/内存占用", "root_cause": "timer=setInterval(...),onUnmounted 调用 clearTimeout(timer)", "repro": "打开含 monitorChart 的泵站页 → 离开路由 → 断点/日志可见 interval 仍触发", "fix_hint": "改为 clearInterval(timer)", "id": "BUG-098", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "文件共享中心", "file": "src/views/vent/performance/fileDetail/index.vue:240-260,465-469", "title": "setInterval 用 clearTimeout 清理", "severity": "一般", "type": "resource_leak", "symptom": "关闭汇总弹窗或卸载后轮询未必停止,持续请求 queryVentMonReportJd", "root_cause": "timer=setInterval 但 handleCancelHz/onUnmounted 使用 clearTimeout", "repro": "打开汇总报表后关闭弹窗,观察是否仍持续请求 queryVentMonReportJd", "fix_hint": "统一使用 clearInterval(timer)", "id": "BUG-099", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "智能注浆系统", "file": "src/views/vent/monitorManager/groutMonitor/index.vue:1-35", "title": "2D 模型与 groutHome 同时渲染可能叠层", "severity": "一般", "type": "ui_logic", "symptom": "is2DModel 为 true 时流程图与监控壳同时存在,交互/遮罩异常", "root_cause": "v-if is2DModel 渲染 modelComponent,同时 activeKey==monitor 仍挂载 groutHome", "repro": "开启全局 is2DModel 进入注浆监控页", "fix_hint": "2D 时由单一容器负责模型,或让 groutHome 在 2D 模式跳过三维初始化", "id": "BUG-100", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "机电硐室管控", "file": "src/views/vent/home/configurable/configurable.data.ts:6164,6217", "title": "electro-champer / electro-chamber pageType 拼写分裂", "severity": "一般", "type": "config_typo", "symptom": "部分配置按错误 pageType 入库后,fetchConfigs('electro-champer') 只能拿到半套模块", "root_cause": "同一业务存在 champer/chamber 两种 pageType 字面量", "repro": "在配置表按两种 pageType 各查一次 records 数量", "fix_hint": "统一为一种拼写并做数据迁移", "id": "BUG-101", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "束管日报分析", "file": "src/views/vent/bundle/bundleMonitorTable/bundle-table.data.ts:412-435", "title": "保德 N₂ 子列重复两个平均值缺少最小值", "severity": "一般", "type": "wrong_column_dataIndex", "symptom": "N₂ 两列相同平均值;最小值无法展示", "root_cause": "第二、三列均为 title:平均值 + n2_ave", "repro": "保德束管日报看氮气表头", "fix_hint": "中间列改为最小值/n2_min", "id": "BUG-102", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "瓦斯人工巡检地点管理(NFC)", "file": "src/views/vent/gas/gasInspect/index.vue:331-342", "title": "筛「两次」误把 pagination.current 写成 2", "severity": "一般", "type": "copy_paste_bug", "symptom": "筛选两次后分页状态错乱", "root_cause": "case '2': pagination.current=2", "repro": "地点管理→巡检次数筛选→两次", "fix_hint": "两次也 current=1", "id": "BUG-103", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "用户日志管理", "file": "src/views/monitor/log/index.vue:34,61-66", "title": "初始 fieldMapToTime 格式与切换后不一致", "severity": "一般", "type": "config_mismatch", "symptom": "首次进入登录日志时时间范围映射可能无效,切 Tab 后才正常", "root_cause": "paramTime 初始为扁平数组,tabChange 才设为 [[field,[begin,end],fmt]] 结构", "repro": "首次进入不切 Tab,使用时间筛选对比切 Tab 后行为", "fix_hint": "初始化即使用与 case '1' 相同的 fieldMapToTime 结构", "id": "BUG-104", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "色谱仪报表分析", "file": "src/views/vent/bundleSpy/bundleSpyTable/index.vue; src/views/vent/monitorManager/comment/bundleSpyMonitorTable.vue:bundleSpyTable 175-195; bundleSpyMonitorTable 93-95", "title": "发火阶段筛选项文案不一致", "severity": "一般", "type": "logic", "symptom": "阶段统计为 0 或与报警字典不一致;同数据在不同组件统计结果不同", "root_cause": "bundleSpyTable 过滤 '加速氧化升温阶段'(与 warnFire-brt 一致),comment/bundleSpyMonitorTable 过滤 '加速氧化阶段(自热期)';历史计算注释仍写 '加速氧化阶段'", "repro": "同一份含阶段字段的报表分别在两处打开,对比进度条计数", "fix_hint": "统一与后端/告警字典的阶段枚举(建议 '加速氧化升温阶段')", "id": "BUG-105", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "防尘系统监测", "file": "src/views/vent/monitorManager/deviceMonitor/components/device/modal/atomizing.modal.vue:33-42", "title": "主机位置字段错误附加 ℃ 单位", "severity": "一般", "type": "logic/display bug", "symptom": "位置类字段后显示温度单位,信息误导", "root_cause": "holderLocation 展示模板误加 ℃", "repro": "打开喷雾监测详情查看“主机位置”", "fix_hint": "去掉 ℃,位置字段无需单位", "id": "BUG-106", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "防火门智能管控", "file": "src/views/vent/home/configurable/firedoor/fireDoorMonitor.vue:76-99", "title": "场景列表为空仍继续后续逻辑且配置增强未启用", "severity": "一般", "type": "incomplete_init", "symptom": "无防火门场景时下拉为空、模块无有效数据;服务端配置未走 updateEnhancedConfigs", "root_cause": "records 为空时仍调用 loadFireGateData;updateEnhancedConfigs 被注释", "repro": "manageFireList 返回空→页面无场景可选且面板无数据", "fix_hint": "无 records 时提示并 return;恢复 updateEnhancedConfigs(configs)", "id": "BUG-107", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "防灭火系统监测", "file": "src/views/vent/monitorManager/deviceMonitor/components/device/modal/firemon.modal.vue:63-65", "title": "智慧球温度值单位误标为 %", "severity": "一般", "type": "logic/display bug", "symptom": "温度值旁显示 % 而非 ℃,监控读数语义错误", "root_cause": "模板单位复制错误", "repro": "打开 firemon 详情查看温度项单位", "fix_hint": "将单位改为 ℃", "id": "BUG-108", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "预警联动控制", "file": "src/views/vent/deviceManager/workingFace/CustomNormalTable.vue:250-251", "title": "批量删除未传 handleSuccess 回调", "severity": "一般", "type": "undefined_api_ref", "symptom": "确认后 handleSuccess is not a function,列表不刷新", "root_cause": "batchDeleteById(params, handleSuccess) 被调用为 batchDelete({ids})", "repro": "预警联动批删点确认看控制台", "fix_hint": "传入 reload 作为第二参", "id": "BUG-109", "status": "新建", "date": "2026-11-02", "method": "静态审查" }, { "module": "预警联动控制", "file": "src/views/vent/deviceManager/workingFace/index.vue:1-92", "title": "预警联动控制落到通用智能管控 CRUD,无联动逻辑", "severity": "一般", "type": "incomplete", "symptom": "范围名为预警联动控制,实际仅为 managesys 列表增删改,无预警联动控制流程", "root_cause": "页面复用 CustomNormalTable + managesys_list;onMounted 空实现,无联动策略/告警动作 UI", "repro": "按菜单进入预警联动控制 → 仅见设备/系统管理表", "fix_hint": "补齐联动规则配置与执行界面,或修正菜单路由到正确页面", "id": "BUG-110", "status": "新建", "date": "2026-11-02", "method": "静态审查" } ]