[
{
"module": "alarmMonitor",
"file": "vent/monitorManager/alarmMonitor/common.api.ts",
"lines": "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 路径"
},
{
"module": "bundleSpyTable",
"file": "vent/bundleSpy/bundleSpyTable/index.vue",
"lines": "134-147",
"title": "色谱仪报表被硬编码 mock 覆盖真实 API",
"severity": "致命",
"type": "mock_override",
"symptom": "页面恒显示写死的 10月2日假报表,真实 queryReportData 不调用",
"root_cause": "getbundleSpyInfoList 被注释,改为本地写死 res",
"repro": "打开色谱仪报表分析,网络面板无真实报表请求仍能看到固定数据",
"fix_hint": "恢复 await getbundleSpyInfoList(...),删除硬编码 res"
},
{
"module": "workingFace",
"file": "vent/deviceManager/workingFace/workingFace.api.ts",
"lines": "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 及对应导入导出路径"
},
{
"module": "gasPumpMonitor",
"file": "vent/monitorManager/gasPumpMonitor/components/gasPumpHome.vue",
"lines": "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 分支"
},
{
"module": "gasReportInspect",
"file": "vent/gas/gasReportInspect/index-time.vue",
"lines": "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 同改)"
},
{
"module": "alarmMonitor",
"file": "vent/monitorManager/alarmMonitor/warn/gasWarn.vue",
"lines": "5",
"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 同步"
},
{
"module": "alarmMonitor",
"file": "vent/monitorManager/alarmMonitor/warn/fireWarn.vue",
"lines": "4",
"title": "火灾预警返回按钮权限取反",
"severity": "严重",
"type": "inverted_permission",
"symptom": "有 fireWarn:return 看不到返回按钮",
"root_cause": "v-if=\"!hasPermission('fireWarn:return')\"",
"repro": "分配权限后打开火灾监测预警",
"fix_hint": "去掉取反"
},
{
"module": "alarmMonitor",
"file": "vent/monitorManager/alarmMonitor/warn/dustWarn.vue",
"lines": "6",
"title": "粉尘预警返回按钮权限取反",
"severity": "严重",
"type": "inverted_permission",
"symptom": "有 dustWarn:return 看不到返回",
"root_cause": "v-if=\"!hasPermission('dustWarn:return')\"",
"repro": "分配权限后打开粉尘监测预警",
"fix_hint": "改为正逻辑 hasPermission"
},
{
"module": "alarmMonitor",
"file": "vent/monitorManager/alarmMonitor/warn/ventilateWarn.vue",
"lines": "10",
"title": "通风预警返回按钮权限取反",
"severity": "严重",
"type": "inverted_permission",
"symptom": "有 ventilateWarn:return 看不到返回",
"root_cause": "v-if=\"!hasPermission('ventilateWarn:return')\"",
"repro": "分配权限后打开通风监测预警",
"fix_hint": "改为正逻辑"
},
{
"module": "alarmMonitor",
"file": "vent/monitorManager/alarmMonitor/warn/gasWarn.vue",
"lines": "193",
"title": "甲烷显示运算符优先级错误",
"severity": "严重",
"type": "wrong_operator_precedence",
"symptom": "gasC 为空时显示 \"undefined%\" 而非 '--'",
"root_cause": "el.readData.gasC + '%' || '--' 中字符串恒 truthy",
"repro": "测点 gasC 缺失时看左侧甲烷值",
"fix_hint": "(gasC!=null&&gasC!=='') ? gasC+'%' : '--'"
},
{
"module": "alarmMonitor",
"file": "vent/monitorManager/alarmMonitor/warn/gasWarn.vue",
"lines": "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"
},
{
"module": "alarmMonitor",
"file": "vent/monitorManager/alarmMonitor/warn/gasWarn.vue",
"lines": "368-377",
"title": "宝德预警监测卡片误走故障诊断轮询",
"severity": "严重",
"type": "wrong_comparison",
"symptom": "预警监测点卡片会走 bjlist,菜单被故障设备覆盖",
"root_cause": "cardClick 仅按 isflag=='1' 分支,未看 isShow/activeIndex",
"repro": "宝德→预警监测→切换工作面卡片,观察是否请求 bjlist",
"fix_hint": "yjjc→getMonitor;gzzd→getMonitor1"
},
{
"module": "alarmMonitor",
"file": "vent/monitorManager/alarmMonitor/warn/gasWarn.vue",
"lines": "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 给默认坐标"
},
{
"module": "alarmMonitor",
"file": "vent/monitorManager/alarmMonitor/warn/dustWarn.vue",
"lines": "131-143,166-176",
"title": "粉尘预测曲线每轮 push 不清理导致无限膨胀",
"severity": "严重",
"type": "timer_state_leak",
"symptom": "停留越久曲线点越多、内存升高",
"root_cause": "fillChartByIndex 每秒 echartYc.push;仅 topAreaClick 会清空",
"repro": "粉尘预警停留数分钟观察 echartYc 长度",
"fix_hint": "每次 fill 前重置 echartYc,或替换最新点"
},
{
"module": "alarmMonitor",
"file": "vent/monitorManager/alarmMonitor/warn/ventilateWarn.vue",
"lines": "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)"
},
{
"module": "alarmMonitor",
"file": "vent/monitorManager/alarmMonitor/warn/fireWarn.vue",
"lines": "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"
},
{
"module": "alarmMonitor",
"file": "vent/monitorManager/alarmMonitor/common/external-threec.vue",
"lines": "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 同步)"
},
{
"module": "alarmMonitor",
"file": "vent/monitorManager/alarmMonitor/common/external-fourc.vue",
"lines": "147-153",
"title": "四参外因温度误绑 fireval",
"severity": "严重",
"type": "wrong_field_binding",
"symptom": "温度监测显示错误/空",
"root_cause": "与 threec 相同拷贝错误 val: el.readData.fireval",
"repro": "打开外因四参温度列表",
"fix_hint": "改为 temperature"
},
{
"module": "alarmMonitor",
"file": "vent/monitorManager/alarmMonitor/alarmHistoryTable.vue",
"lines": "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"
},
{
"module": "gasAssessment",
"file": "vent/gas/gasAssessment/index.vue",
"lines": "43",
"title": "进入抽采单元页未传入 unitId",
"severity": "严重",
"type": "wrong_field_binding",
"symptom": "侧栏 list({ids}) 为空,实时数据无法对应选中单元",
"root_cause": " 未绑定 :unitId=\"activeUnitId\"",
"repro": "达标评判点选单元后看 list 请求 ids",
"fix_hint": ""
},
{
"module": "gasAssessment",
"file": "vent/gas/gasAssessment/components/gasUnit.vue",
"lines": "27,55,73-75",
"title": "单元混量/纯量图表写死 mock",
"severity": "严重",
"type": "mock_override",
"symptom": "图表恒为本地假数据,真实监测不驱动",
"root_cause": "CustomChart 绑定 mockGasUnitHlData/mockGasUnitClData",
"repro": "打开抽采单元对比接口与图表数据源",
"fix_hint": "用接口历史数据替换 mock"
},
{
"module": "gasPumpMonitor",
"file": "vent/gas/gasPumpMonitor/index.vue",
"lines": "57-68",
"title": "井下泵模型切换后被无条件覆盖为地上泵",
"severity": "严重",
"type": "copy_paste_bug",
"symptom": "选中 pump_under* 仍加载地上 gasPump 三维",
"root_cause": "if/else 设类型后末尾又 setModelType('gasPump')",
"repro": "抽采泵站监测切到井下泵站设备",
"fix_hint": "删除末尾无条件 setModelType('gasPump')"
},
{
"module": "gasPumpMonitor",
"file": "vent/gas/gasPumpMonitor/components/monitorChart.vue",
"lines": "50-65",
"title": "setInterval 用 clearTimeout 清理导致泄漏",
"severity": "严重",
"type": "timer_not_cleared",
"symptom": "离开监测图表后仍每 2s 推数据",
"root_cause": "setInterval + onUnmounted clearTimeout",
"repro": "进入监测图表后切走,观察回调是否继续",
"fix_hint": "改为 clearInterval(timer)"
},
{
"module": "gasZk",
"file": "vent/gas/gasZk/index.vue",
"lines": "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 串行轮询"
},
{
"module": "gasInspect",
"file": "vent/gas/gasInspect/index.vue",
"lines": "66-75",
"title": "早/中/晚是否巡检真假分支都渲染「是」",
"severity": "严重",
"type": "wrong_field_binding",
"symptom": "未巡检也显示「是」,状态失真",
"root_cause": "text=='1' 与 v-else 内均写「是」",
"repro": "NFC 地点管理查看未巡检班次列",
"fix_hint": "else 显示「否」;对齐 Nonfc 字段约定"
},
{
"module": "gasInspectNonfc",
"file": "vent/gas/gasInspectNonfc/components/inspectEdit.vue",
"lines": "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) 原地更新"
},
{
"module": "gasReport",
"file": "vent/gas/gasReport/index.vue",
"lines": "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"
},
{
"module": "gasReport",
"file": "vent/gas/gasReport/index.vue",
"lines": "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],...)"
},
{
"module": "gasAnalysis",
"file": "vent/gas/gasAnalysis/index.vue",
"lines": "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"
},
{
"module": "gasPipeNet",
"file": "vent/gas/gasPipeNet/index.vue",
"lines": "142-147",
"title": "管网阀门控制提交未调控制接口",
"severity": "严重",
"type": "undefined_api_call",
"symptom": "点确定只 toast 表单 JSON,阀门无动作",
"root_cause": "submitHandler 仅 message.success,无 deviceControl",
"repro": "管网管控→阀门控制→提交",
"fix_hint": "接入泵站同款控制 API"
},
{
"module": "bundleSpyTable",
"file": "vent/bundleSpy/bundleSpyTable/index.vue",
"lines": "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"
},
{
"module": "bundleSpy+bundleMonitor",
"file": "vent/bundleSpy/bundleSpyTable/index.vue; vent/bundle/bundleMonitorTable/index.vue",
"lines": "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"
},
{
"module": "bundleMonitorTable",
"file": "vent/bundle/bundleMonitorTable/index.vue",
"lines": "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"
},
{
"module": "bundleMonitorTable",
"file": "vent/bundle/bundleMonitorTable/bundle-table.data.ts",
"lines": "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"
},
{
"module": "bundleMonitorTable",
"file": "vent/bundle/bundleMonitorTable/bundle-table.data.ts",
"lines": "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'"
},
{
"module": "betKy",
"file": "vent/monitorManager/betKy/index.vue",
"lines": "112-146,148-154,258-262",
"title": "矿压轮询 push 不重置 + setTimeout/clearInterval 错用",
"severity": "严重",
"type": "timer_leak",
"symptom": "图表与行索引错位、内存增长;卸载后仍可能请求",
"root_cause": "chartData 每轮 push 不清空;timer=setTimeout 却 clearInterval;重启只置 null 不 clear",
"repro": "矿压页多次刷新后切行;快速进出页观察请求",
"fix_hint": "每轮 chartData=[];统一 clearTimeout 并先 clear 再置空"
},
{
"module": "dustMonitorTable",
"file": "vent/dust/dustMonitorTable/index.vue",
"lines": "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"
},
{
"module": "dustMonitorTable",
"file": "vent/dust/dustMonitorTable/index.vue",
"lines": "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"
},
{
"module": "workingFace",
"file": "vent/deviceManager/workingFace/CustomNormalTable.vue",
"lines": "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 作为第二参"
},
{
"module": "alarmMonitor",
"file": "vent/monitorManager/alarmMonitor/warn/dustWarn.vue",
"lines": "255",
"title": "巷道温度单位错误依赖 humidity",
"severity": "一般",
"type": "wrong_field_binding",
"symptom": "有温度无湿度时单位空白",
"root_cause": "dw: el.humidity ? '(℃)' : ''",
"repro": "temperature 有值 humidity 空时看单位",
"fix_hint": "dw: el.temperature ? '(℃)' : ''"
},
{
"module": "alarmMonitor",
"file": "vent/monitorManager/alarmMonitor/warn/ventilateWarn.vue",
"lines": "207",
"title": "warnDes 为空时 indexOf 抛错中断菜单构建",
"severity": "一般",
"type": "crash_on_mount",
"symptom": "左侧菜单空白且轮询中断",
"root_cause": "el.warnDes.indexOf('预警') 无空保护",
"repro": "sysTypeWarn 返回 warnDes 缺失条目",
"fix_hint": "(el.warnDes||'').indexOf(...)"
},
{
"module": "alarmMonitor",
"file": "vent/monitorManager/alarmMonitor/warn/gasWarn.vue",
"lines": "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||'' 再操作"
},
{
"module": "gasInspect",
"file": "vent/gas/gasInspect/index.vue",
"lines": "331-342",
"title": "筛「两次」误把 pagination.current 写成 2",
"severity": "一般",
"type": "copy_paste_bug",
"symptom": "筛选两次后分页状态错乱",
"root_cause": "case '2': pagination.current=2",
"repro": "地点管理→巡检次数筛选→两次",
"fix_hint": "两次也 current=1"
},
{
"module": "bundleMonitorTable",
"file": "vent/bundle/bundleMonitorTable/bundle-table.data.ts",
"lines": "412-435",
"title": "保德 N₂ 子列重复两个平均值缺少最小值",
"severity": "一般",
"type": "wrong_column_dataIndex",
"symptom": "N₂ 两列相同平均值;最小值无法展示",
"root_cause": "第二、三列均为 title:平均值 + n2_ave",
"repro": "保德束管日报看氮气表头",
"fix_hint": "中间列改为最小值/n2_min"
}
]