_agent_alarm_gas.json 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530
  1. [
  2. {
  3. "module": "alarmMonitor",
  4. "file": "vent/monitorManager/alarmMonitor/common.api.ts",
  5. "lines": "3-10,46",
  6. "title": "bjlist 引用不存在的 Api.bjlist",
  7. "severity": "致命",
  8. "type": "undefined_api_ref",
  9. "symptom": "瓦斯管道故障诊断轮询请求 url 为 undefined,列表/曲线无法加载",
  10. "root_cause": "enum Api 无 bjlist 成员,但 bjlist() 仍使用 Api.bjlist",
  11. "repro": "宝德矿打开瓦斯预警→管道故障诊断,抓包看请求 URL",
  12. "fix_hint": "恢复 bjlist='/safety/ventanalyAlarmLog/list' 或改用 warningHistoryList 路径"
  13. },
  14. {
  15. "module": "bundleSpyTable",
  16. "file": "vent/bundleSpy/bundleSpyTable/index.vue",
  17. "lines": "134-147",
  18. "title": "色谱仪报表被硬编码 mock 覆盖真实 API",
  19. "severity": "致命",
  20. "type": "mock_override",
  21. "symptom": "页面恒显示写死的 10月2日假报表,真实 queryReportData 不调用",
  22. "root_cause": "getbundleSpyInfoList 被注释,改为本地写死 res",
  23. "repro": "打开色谱仪报表分析,网络面板无真实报表请求仍能看到固定数据",
  24. "fix_hint": "恢复 await getbundleSpyInfoList(...),删除硬编码 res"
  25. },
  26. {
  27. "module": "workingFace",
  28. "file": "vent/deviceManager/workingFace/workingFace.api.ts",
  29. "lines": "18-21,79-90",
  30. "title": "智能管控批量删除/导入导出误指向 /sys/user/*",
  31. "severity": "致命",
  32. "type": "wrong_endpoint",
  33. "symptom": "批删打到用户批量删除接口,可能删错资源或失败;单删走 managesys 正确路径",
  34. "root_cause": "deleteBatch/importExcel/exportXls 从用户模块拷贝未改",
  35. "repro": "预警联动勾选多条批删,抓包确认 /sys/user/deleteBatch",
  36. "fix_hint": "改为 /safety/ventanalyManageSystem/deleteBatch 及对应导入导出路径"
  37. },
  38. {
  39. "module": "gasPumpMonitor",
  40. "file": "vent/monitorManager/gasPumpMonitor/components/gasPumpHome.vue",
  41. "lines": "159-178,355-375,329-333",
  42. "title": "就地/远程与检修控制 paramcode 对调且入参分支不匹配",
  43. "severity": "致命",
  44. "type": "inverted_control_mapping",
  45. "symptom": "点就地/远程下发 jxmsqh;点检修下发 ykjdqh;传 0 时 handlerType 不赋值仍弹密码框",
  46. "root_cause": "changeCtr 写死 jxmsqh、changeMode 写死 ykjdqh;模板传 0/1,函数判 1/2",
  47. "repro": "抽采泵站管控点就地/远程/检修开闭→确认密码→抓包 paramcode",
  48. "fix_hint": "changeCtr→ykjdqh,changeMode→jxmsqh;统一 0/1 分支"
  49. },
  50. {
  51. "module": "gasReportInspect",
  52. "file": "vent/gas/gasReportInspect/index-time.vue",
  53. "lines": "62-82",
  54. "title": "空 records 时先访问 [0] 导致挂载崩溃",
  55. "severity": "致命",
  56. "type": "crash_on_mount",
  57. "symptom": "无日报数据时 Cannot read properties of undefined,页面白屏",
  58. "root_cause": "先读 tableList[0].id/content,后才判 length;JSON.parse 无空保护",
  59. "repro": "瓦斯日报分析在 queryReportList 返回空 records 时进入页面",
  60. "fix_hint": "先判空 return;JSON.parse 包 try/catch(index-type/index-lt 同改)"
  61. },
  62. {
  63. "module": "alarmMonitor",
  64. "file": "vent/monitorManager/alarmMonitor/warn/gasWarn.vue",
  65. "lines": "5",
  66. "title": "返回按钮权限取反",
  67. "severity": "严重",
  68. "type": "inverted_permission",
  69. "symptom": "有 gasWarn:return 权限看不到返回;无权限反而显示",
  70. "root_cause": "v-if=\"!hasPermission(...)\";对照 deviceMonitorWarn 为正逻辑",
  71. "repro": "分配 gasWarn:return 后对比返回按钮显隐",
  72. "fix_hint": "改为 hasPermission;fire/dust/ventilate/device/waterLevel 同步"
  73. },
  74. {
  75. "module": "alarmMonitor",
  76. "file": "vent/monitorManager/alarmMonitor/warn/fireWarn.vue",
  77. "lines": "4",
  78. "title": "火灾预警返回按钮权限取反",
  79. "severity": "严重",
  80. "type": "inverted_permission",
  81. "symptom": "有 fireWarn:return 看不到返回按钮",
  82. "root_cause": "v-if=\"!hasPermission('fireWarn:return')\"",
  83. "repro": "分配权限后打开火灾监测预警",
  84. "fix_hint": "去掉取反"
  85. },
  86. {
  87. "module": "alarmMonitor",
  88. "file": "vent/monitorManager/alarmMonitor/warn/dustWarn.vue",
  89. "lines": "6",
  90. "title": "粉尘预警返回按钮权限取反",
  91. "severity": "严重",
  92. "type": "inverted_permission",
  93. "symptom": "有 dustWarn:return 看不到返回",
  94. "root_cause": "v-if=\"!hasPermission('dustWarn:return')\"",
  95. "repro": "分配权限后打开粉尘监测预警",
  96. "fix_hint": "改为正逻辑 hasPermission"
  97. },
  98. {
  99. "module": "alarmMonitor",
  100. "file": "vent/monitorManager/alarmMonitor/warn/ventilateWarn.vue",
  101. "lines": "10",
  102. "title": "通风预警返回按钮权限取反",
  103. "severity": "严重",
  104. "type": "inverted_permission",
  105. "symptom": "有 ventilateWarn:return 看不到返回",
  106. "root_cause": "v-if=\"!hasPermission('ventilateWarn:return')\"",
  107. "repro": "分配权限后打开通风监测预警",
  108. "fix_hint": "改为正逻辑"
  109. },
  110. {
  111. "module": "alarmMonitor",
  112. "file": "vent/monitorManager/alarmMonitor/warn/gasWarn.vue",
  113. "lines": "193",
  114. "title": "甲烷显示运算符优先级错误",
  115. "severity": "严重",
  116. "type": "wrong_operator_precedence",
  117. "symptom": "gasC 为空时显示 \"undefined%\" 而非 '--'",
  118. "root_cause": "el.readData.gasC + '%' || '--' 中字符串恒 truthy",
  119. "repro": "测点 gasC 缺失时看左侧甲烷值",
  120. "fix_hint": "(gasC!=null&&gasC!=='') ? gasC+'%' : '--'"
  121. },
  122. {
  123. "module": "alarmMonitor",
  124. "file": "vent/monitorManager/alarmMonitor/warn/gasWarn.vue",
  125. "lines": "346-365",
  126. "title": "宝德矿第三 Tab 映射到瓦斯参数而非预警指标",
  127. "severity": "严重",
  128. "type": "wrong_field_binding",
  129. "symptom": "菜单第三项「预警指标」点击却渲染 gasParamter(wscs)",
  130. "root_cause": "getMonitorComponent(宝德)=[预警监测,故障诊断,预警指标];btnClick ind===2 固定 isShow='wscs'",
  131. "repro": "sysOrgCode=sdmtjtbdmk 打开瓦斯预警点第三个类型按钮",
  132. "fix_hint": "宝德 ind===2 → yjzb;布尔台 ind===2 保持 wscs"
  133. },
  134. {
  135. "module": "alarmMonitor",
  136. "file": "vent/monitorManager/alarmMonitor/warn/gasWarn.vue",
  137. "lines": "368-377",
  138. "title": "宝德预警监测卡片误走故障诊断轮询",
  139. "severity": "严重",
  140. "type": "wrong_comparison",
  141. "symptom": "预警监测点卡片会走 bjlist,菜单被故障设备覆盖",
  142. "root_cause": "cardClick 仅按 isflag=='1' 分支,未看 isShow/activeIndex",
  143. "repro": "宝德→预警监测→切换工作面卡片,观察是否请求 bjlist",
  144. "fix_hint": "yjjc→getMonitor;gzzd→getMonitor1"
  145. },
  146. {
  147. "module": "alarmMonitor",
  148. "file": "vent/monitorManager/alarmMonitor/warn/gasWarn.vue",
  149. "lines": "311",
  150. "title": "gasGlFaultDia 无防护 JSON.parse 可抛错",
  151. "severity": "严重",
  152. "type": "crash_on_mount",
  153. "symptom": "缺/非法 gasGlFaultDia 时脚本异常,故障诊断页中断",
  154. "root_cause": "JSON.parse(data.readData.gasGlFaultDia) 无空值与 try/catch",
  155. "repro": "故障诊断选中无 gasGlFaultDia 的设备",
  156. "fix_hint": "JSON.parse(x||'{}') 并 catch 给默认坐标"
  157. },
  158. {
  159. "module": "alarmMonitor",
  160. "file": "vent/monitorManager/alarmMonitor/warn/dustWarn.vue",
  161. "lines": "131-143,166-176",
  162. "title": "粉尘预测曲线每轮 push 不清理导致无限膨胀",
  163. "severity": "严重",
  164. "type": "timer_state_leak",
  165. "symptom": "停留越久曲线点越多、内存升高",
  166. "root_cause": "fillChartByIndex 每秒 echartYc.push;仅 topAreaClick 会清空",
  167. "repro": "粉尘预警停留数分钟观察 echartYc 长度",
  168. "fix_hint": "每次 fill 前重置 echartYc,或替换最新点"
  169. },
  170. {
  171. "module": "alarmMonitor",
  172. "file": "vent/monitorManager/alarmMonitor/warn/ventilateWarn.vue",
  173. "lines": "239-250",
  174. "title": "从巷道阻力分析切回通风监测后轮询不恢复",
  175. "severity": "严重",
  176. "type": "timer_not_restarted",
  177. "symptom": "切回通风监测后顶部/测点停止自动刷新",
  178. "root_cause": "btnClick(0) 只 clearNetTimer+getMenuList,未 getMonitor(true)",
  179. "repro": "通风监测→巷道阻力→再点通风监测,等待>3s 看是否更新",
  180. "fix_hint": "ind===0 时调用 getMonitor(true)"
  181. },
  182. {
  183. "module": "alarmMonitor",
  184. "file": "vent/monitorManager/alarmMonitor/warn/fireWarn.vue",
  185. "lines": "74-83,148-157,173-185,215-217",
  186. "title": "匿名 setTimeout 未清理且 getMonitor 不先 clear",
  187. "severity": "严重",
  188. "type": "timer_leak",
  189. "symptom": "快速切换/离开后仍请求 sysTypeWarn;可能双轮询",
  190. "root_cause": "cardClick/reset 的 setTimeout 无句柄;getMonitor 赋值前不清旧 timer",
  191. "repro": "火灾预警连点内因/外因后返回首页,抓包仍见请求",
  192. "fix_hint": "保存 delay timer 并在 unmount clear;getMonitor 开头 clearPollTimer"
  193. },
  194. {
  195. "module": "alarmMonitor",
  196. "file": "vent/monitorManager/alarmMonitor/common/external-threec.vue",
  197. "lines": "118-124",
  198. "title": "温度传感器列表误绑 fireval",
  199. "severity": "严重",
  200. "type": "wrong_field_binding",
  201. "symptom": "外因火灾温度卡片显示火焰字段/空值",
  202. "root_cause": "temperature.map 使用 readData.fireval;mainWell 正确用 temperature",
  203. "repro": "外因火灾 temperature 有值、fireval 空时看温度卡",
  204. "fix_hint": "改为 el.readData.temperature(fourc:147-153 同步)"
  205. },
  206. {
  207. "module": "alarmMonitor",
  208. "file": "vent/monitorManager/alarmMonitor/common/external-fourc.vue",
  209. "lines": "147-153",
  210. "title": "四参外因温度误绑 fireval",
  211. "severity": "严重",
  212. "type": "wrong_field_binding",
  213. "symptom": "温度监测显示错误/空",
  214. "root_cause": "与 threec 相同拷贝错误 val: el.readData.fireval",
  215. "repro": "打开外因四参温度列表",
  216. "fix_hint": "改为 temperature"
  217. },
  218. {
  219. "module": "alarmMonitor",
  220. "file": "vent/monitorManager/alarmMonitor/alarmHistoryTable.vue",
  221. "lines": "166-167",
  222. "title": "未传 deviceType 时 strtype 变成 \"undefined*\"",
  223. "severity": "严重",
  224. "type": "wrong_field_binding",
  225. "symptom": "设备预警报警历史过滤错误,列表空或错数据",
  226. "root_cause": "beforeFetch: props.deviceType + '*';deviceWarn.vue:43 未传 deviceType",
  227. "repro": "设备监测预警→报警历史,检查请求 strtype",
  228. "fix_hint": "传入正确 deviceType,或空时不拼 strtype"
  229. },
  230. {
  231. "module": "gasAssessment",
  232. "file": "vent/gas/gasAssessment/index.vue",
  233. "lines": "43",
  234. "title": "进入抽采单元页未传入 unitId",
  235. "severity": "严重",
  236. "type": "wrong_field_binding",
  237. "symptom": "侧栏 list({ids}) 为空,实时数据无法对应选中单元",
  238. "root_cause": "<gasUnit/> 未绑定 :unitId=\"activeUnitId\"",
  239. "repro": "达标评判点选单元后看 list 请求 ids",
  240. "fix_hint": "<gasUnit :unitId=\"activeUnitId\" />"
  241. },
  242. {
  243. "module": "gasAssessment",
  244. "file": "vent/gas/gasAssessment/components/gasUnit.vue",
  245. "lines": "27,55,73-75",
  246. "title": "单元混量/纯量图表写死 mock",
  247. "severity": "严重",
  248. "type": "mock_override",
  249. "symptom": "图表恒为本地假数据,真实监测不驱动",
  250. "root_cause": "CustomChart 绑定 mockGasUnitHlData/mockGasUnitClData",
  251. "repro": "打开抽采单元对比接口与图表数据源",
  252. "fix_hint": "用接口历史数据替换 mock"
  253. },
  254. {
  255. "module": "gasPumpMonitor",
  256. "file": "vent/gas/gasPumpMonitor/index.vue",
  257. "lines": "57-68",
  258. "title": "井下泵模型切换后被无条件覆盖为地上泵",
  259. "severity": "严重",
  260. "type": "copy_paste_bug",
  261. "symptom": "选中 pump_under* 仍加载地上 gasPump 三维",
  262. "root_cause": "if/else 设类型后末尾又 setModelType('gasPump')",
  263. "repro": "抽采泵站监测切到井下泵站设备",
  264. "fix_hint": "删除末尾无条件 setModelType('gasPump')"
  265. },
  266. {
  267. "module": "gasPumpMonitor",
  268. "file": "vent/gas/gasPumpMonitor/components/monitorChart.vue",
  269. "lines": "50-65",
  270. "title": "setInterval 用 clearTimeout 清理导致泄漏",
  271. "severity": "严重",
  272. "type": "timer_not_cleared",
  273. "symptom": "离开监测图表后仍每 2s 推数据",
  274. "root_cause": "setInterval + onUnmounted clearTimeout",
  275. "repro": "进入监测图表后切走,观察回调是否继续",
  276. "fix_hint": "改为 clearInterval(timer)"
  277. },
  278. {
  279. "module": "gasZk",
  280. "file": "vent/gas/gasZk/index.vue",
  281. "lines": "61-79",
  282. "title": "setInterval 回调内再 startPolling 造成重叠轮询",
  283. "severity": "严重",
  284. "type": "timer_logic_bug",
  285. "symptom": "慢网时 /drill/get/status 并发堆积",
  286. "root_cause": "interval 不等待完成可再次触发;成功后又 stop+new interval",
  287. "repro": "打开钻孔监测并限速网络观察并发",
  288. "fix_hint": "改为 await 后 setTimeout 串行轮询"
  289. },
  290. {
  291. "module": "gasInspect",
  292. "file": "vent/gas/gasInspect/index.vue",
  293. "lines": "66-75",
  294. "title": "早/中/晚是否巡检真假分支都渲染「是」",
  295. "severity": "严重",
  296. "type": "wrong_field_binding",
  297. "symptom": "未巡检也显示「是」,状态失真",
  298. "root_cause": "text=='1' 与 v-else 内均写「是」",
  299. "repro": "NFC 地点管理查看未巡检班次列",
  300. "fix_hint": "else 显示「否」;对齐 Nonfc 字段约定"
  301. },
  302. {
  303. "module": "gasInspectNonfc",
  304. "file": "vent/gas/gasInspectNonfc/components/inspectEdit.vue",
  305. "lines": "12-14,79-81,71-76",
  306. "title": "区队下拉缺 value 且整对象重赋值打断响应式",
  307. "severity": "严重",
  308. "type": "nfc_nonfc_copy_paste",
  309. "symptom": "提交可能把区队名当 id;二次编辑表单不刷新",
  310. "root_cause": "option 无 :value;formStateEdit=Object.assign 重赋值丢失 reactive 绑定",
  311. "repro": "Nonfc 编辑改区队提交看 payload;连续编辑两条",
  312. "fix_hint": "补 :value=\"item.value\";Object.assign(formStateEdit, newV) 原地更新"
  313. },
  314. {
  315. "module": "gasReport",
  316. "file": "vent/gas/gasReport/index.vue",
  317. "lines": "357-440",
  318. "title": "审核/导出异常校验 else-if 导致任一气体合格即放行",
  319. "severity": "严重",
  320. "type": "inverted_validation_logic",
  321. "symptom": "O2 超限但 CO 合格仍可审核通过;多行以最后一行结果为准",
  322. "root_cause": "getTs 对 O2/CO/CO2/T/CH4 用 else-if;forEach return 不能结束函数",
  323. "repro": "仅 O2 异常其余合格→点审核通过",
  324. "fix_hint": "全部字段均在阈内才放行;任异常即 true"
  325. },
  326. {
  327. "module": "gasReport",
  328. "file": "vent/gas/gasReport/index.vue",
  329. "lines": "271-274",
  330. "title": "巡检图片 Blob 二次封装错误",
  331. "severity": "严重",
  332. "type": "wrong_blob_usage",
  333. "symptom": "查看班次图片失败或 Failed to construct 'Blob'",
  334. "root_cause": "gasServerImg 已是 blob,又 new Blob(res,...);构造需 Array",
  335. "repro": "日报管理点夜/早/中班「查看」",
  336. "fix_hint": "URL.createObjectURL(res) 或 new Blob([res],...)"
  337. },
  338. {
  339. "module": "gasAnalysis",
  340. "file": "vent/gas/gasAnalysis/index.vue",
  341. "lines": "177-182,216-219",
  342. "title": "列表成功后强制 pagination.current=1 导致分页失效",
  343. "severity": "严重",
  344. "type": "pagination_logic_bug",
  345. "symptom": "翻到第 2 页后被打回第 1 页",
  346. "root_cause": "gasReportLogLists 在有 records 时无条件 current=1",
  347. "repro": "业务分析多页数据点第 2 页",
  348. "fix_hint": "删除该赋值;仅查询/重置时置 1"
  349. },
  350. {
  351. "module": "gasPipeNet",
  352. "file": "vent/gas/gasPipeNet/index.vue",
  353. "lines": "142-147",
  354. "title": "管网阀门控制提交未调控制接口",
  355. "severity": "严重",
  356. "type": "undefined_api_call",
  357. "symptom": "点确定只 toast 表单 JSON,阀门无动作",
  358. "root_cause": "submitHandler 仅 message.success,无 deviceControl",
  359. "repro": "管网管控→阀门控制→提交",
  360. "fix_hint": "接入泵站同款控制 API"
  361. },
  362. {
  363. "module": "bundleSpyTable",
  364. "file": "vent/bundleSpy/bundleSpyTable/index.vue",
  365. "lines": "237-241,386-390",
  366. "title": "活鸡兔/寸草塔二矿图表 O₂闭内 误绑 CH₄ 数据",
  367. "severity": "严重",
  368. "type": "wrong_field_binding",
  369. "symptom": "图例 O₂闭内 柱状与 CH₄闭内完全相同",
  370. "root_cause": "name:'O₂闭内' 的 data 写成 ch4AveValues",
  371. "repro": "对应矿打开色谱仪报表对比 o2_ave 与图",
  372. "fix_hint": "改为 o2AveValues"
  373. },
  374. {
  375. "module": "bundleSpy+bundleMonitor",
  376. "file": "vent/bundleSpy/bundleSpyTable/index.vue; vent/bundle/bundleMonitorTable/index.vue",
  377. "lines": "bundleSpy:108-109; bundle:101-102",
  378. "title": "保德 sysOrgCode 大小写错误导致专用列永不命中",
  379. "severity": "严重",
  380. "type": "copy_paste_orgcode",
  381. "symptom": "保德落到 default 列配置,专用字段不显示",
  382. "root_cause": "写 case 'sdmtjtBdmk';全库其余为 'sdmtjtbdmk'",
  383. "repro": "sysOrgCode=sdmtjtbdmk 打开色谱仪/束管日报",
  384. "fix_hint": "统一改为 sdmtjtbdmk"
  385. },
  386. {
  387. "module": "bundleMonitorTable",
  388. "file": "vent/bundle/bundleMonitorTable/index.vue",
  389. "lines": "103-104,453",
  390. "title": "补连塔图表分支 orgCode 写成 sdmtjtBltmk",
  391. "severity": "严重",
  392. "type": "copy_paste_orgcode",
  393. "symptom": "表格用 Bltcolumns 正确,柱状图落入 default",
  394. "root_cause": "computedColumns 用 sdmtjtbltmk,getSeriesConfig 用 sdmtjtBltmk",
  395. "repro": "sysOrgCode=sdmtjtbltmk 对比表头与图例",
  396. "fix_hint": "图表 case 改为 sdmtjtbltmk"
  397. },
  398. {
  399. "module": "bundleMonitorTable",
  400. "file": "vent/bundle/bundleMonitorTable/bundle-table.data.ts",
  401. "lines": "595-610",
  402. "title": "保德束管 NO₂ 最小值 dataIndex 写成 no22_max",
  403. "severity": "严重",
  404. "type": "wrong_column_dataIndex",
  405. "symptom": "NO₂最小值空白或错值",
  406. "root_cause": "最小值 dataIndex:'no22_max',key/dataIndex 交叉贴错",
  407. "repro": "保德束管日报对比 no2_min/no2_max 与三列",
  408. "fix_hint": "最大值 no2_max;最小值 no2_min"
  409. },
  410. {
  411. "module": "bundleMonitorTable",
  412. "file": "vent/bundle/bundleMonitorTable/bundle-table.data.ts",
  413. "lines": "1465-1472,1848-1855",
  414. "title": "寸草塔一矿/哈拉沟 O₂最大值列绑定 o2_min",
  415. "severity": "严重",
  416. "type": "wrong_column_dataIndex",
  417. "symptom": "标题最大值实际显示最小值",
  418. "root_cause": "title:最大值 却 dataIndex:'o2_min'",
  419. "repro": "对应矿打开束管日报对比 o2_max/o2_min",
  420. "fix_hint": "改为 dataIndex:'o2_max'"
  421. },
  422. {
  423. "module": "betKy",
  424. "file": "vent/monitorManager/betKy/index.vue",
  425. "lines": "112-146,148-154,258-262",
  426. "title": "矿压轮询 push 不重置 + setTimeout/clearInterval 错用",
  427. "severity": "严重",
  428. "type": "timer_leak",
  429. "symptom": "图表与行索引错位、内存增长;卸载后仍可能请求",
  430. "root_cause": "chartData 每轮 push 不清空;timer=setTimeout 却 clearInterval;重启只置 null 不 clear",
  431. "repro": "矿压页多次刷新后切行;快速进出页观察请求",
  432. "fix_hint": "每轮 chartData=[];统一 clearTimeout 并先 clear 再置空"
  433. },
  434. {
  435. "module": "dustMonitorTable",
  436. "file": "vent/dust/dustMonitorTable/index.vue",
  437. "lines": "317-320,510-513",
  438. "title": "保德当日粉尘总体最大值误用 zcjqpj/hcjqpj",
  439. "severity": "严重",
  440. "type": "wrong_field_binding",
  441. "symptom": "当日分析最大值恒 -Infinity 或字段映射失败",
  442. "root_cause": "BdMaxValues 用 qc/hc;overallBdMaxValues 误用布尔台字段",
  443. "repro": "保德粉尘报表切「当日粉尘情况分析」",
  444. "fix_hint": "overallBdMaxValues 改为 qc/hc"
  445. },
  446. {
  447. "module": "dustMonitorTable",
  448. "file": "vent/dust/dustMonitorTable/index.vue",
  449. "lines": "269-270,429-436,472-475",
  450. "title": "哈拉沟分组键 ccdd 被最大值循环改写成 jcdd",
  451. "severity": "严重",
  452. "type": "logic_state",
  453. "symptom": "工作场所下拉变成测点名,过滤错乱",
  454. "root_cause": "分组 gzcs=ccdd,HlgMaxValues 更新时 gzcs=item.jcdd 覆盖",
  455. "repro": "哈拉沟粉尘报表看工作场所下拉与过滤",
  456. "fix_hint": "更新最大值时不要用 jcdd 覆盖 gzcs"
  457. },
  458. {
  459. "module": "workingFace",
  460. "file": "vent/deviceManager/workingFace/CustomNormalTable.vue",
  461. "lines": "250-251",
  462. "title": "批量删除未传 handleSuccess 回调",
  463. "severity": "一般",
  464. "type": "undefined_api_ref",
  465. "symptom": "确认后 handleSuccess is not a function,列表不刷新",
  466. "root_cause": "batchDeleteById(params, handleSuccess) 被调用为 batchDelete({ids})",
  467. "repro": "预警联动批删点确认看控制台",
  468. "fix_hint": "传入 reload 作为第二参"
  469. },
  470. {
  471. "module": "alarmMonitor",
  472. "file": "vent/monitorManager/alarmMonitor/warn/dustWarn.vue",
  473. "lines": "255",
  474. "title": "巷道温度单位错误依赖 humidity",
  475. "severity": "一般",
  476. "type": "wrong_field_binding",
  477. "symptom": "有温度无湿度时单位空白",
  478. "root_cause": "dw: el.humidity ? '(℃)' : ''",
  479. "repro": "temperature 有值 humidity 空时看单位",
  480. "fix_hint": "dw: el.temperature ? '(℃)' : ''"
  481. },
  482. {
  483. "module": "alarmMonitor",
  484. "file": "vent/monitorManager/alarmMonitor/warn/ventilateWarn.vue",
  485. "lines": "207",
  486. "title": "warnDes 为空时 indexOf 抛错中断菜单构建",
  487. "severity": "一般",
  488. "type": "crash_on_mount",
  489. "symptom": "左侧菜单空白且轮询中断",
  490. "root_cause": "el.warnDes.indexOf('预警') 无空保护",
  491. "repro": "sysTypeWarn 返回 warnDes 缺失条目",
  492. "fix_hint": "(el.warnDes||'').indexOf(...)"
  493. },
  494. {
  495. "module": "alarmMonitor",
  496. "file": "vent/monitorManager/alarmMonitor/warn/gasWarn.vue",
  497. "lines": "189-190",
  498. "title": "strinstallpos 为空时 indexOf 抛错",
  499. "severity": "一般",
  500. "type": "crash_on_mount",
  501. "symptom": "getDetailList 抛错,监测卡片不更新",
  502. "root_cause": "假定 strinstallpos 必为 string",
  503. "repro": "gas 明细 strinstallpos 为 null",
  504. "fix_hint": "const pos=el.strinstallpos||'' 再操作"
  505. },
  506. {
  507. "module": "gasInspect",
  508. "file": "vent/gas/gasInspect/index.vue",
  509. "lines": "331-342",
  510. "title": "筛「两次」误把 pagination.current 写成 2",
  511. "severity": "一般",
  512. "type": "copy_paste_bug",
  513. "symptom": "筛选两次后分页状态错乱",
  514. "root_cause": "case '2': pagination.current=2",
  515. "repro": "地点管理→巡检次数筛选→两次",
  516. "fix_hint": "两次也 current=1"
  517. },
  518. {
  519. "module": "bundleMonitorTable",
  520. "file": "vent/bundle/bundleMonitorTable/bundle-table.data.ts",
  521. "lines": "412-435",
  522. "title": "保德 N₂ 子列重复两个平均值缺少最小值",
  523. "severity": "一般",
  524. "type": "wrong_column_dataIndex",
  525. "symptom": "N₂ 两列相同平均值;最小值无法展示",
  526. "root_cause": "第二、三列均为 title:平均值 + n2_ave",
  527. "repro": "保德束管日报看氮气表头",
  528. "fix_hint": "中间列改为最小值/n2_min"
  529. }
  530. ]