盈德气体 · 物料主数据预审

批量预审导入问题说明

对应反馈:批量新建传不进去 2026-09-18 已修复上线 样本:物料查询视图导出 124,566
同一份 120 行清单,跑完耗时
109
约为修复前的十分之一
修复前11分15秒
修复后1分09秒

几个问题叠在一起,前一个挡住后一个,所以看起来像“整个功能不能用”。

从物料系统直接导出的清单,表头在第 4 行,上传时被判成缺列而退回;把表头问题绕开之后,整份存量导出 12 万行又必然超时;再往下,每一行都多发了一次大模型请求,120 行要跑 11 分钟。已全部修复并上线,检查结论与修复前完全一致(通过 65 / 需修改 46 / 疑似重复 9 / 处理失败 0)。另有一处会让存量记录把自己当成重复,也一并修了,见文末。

具体是哪几件事

按测试时撞上的先后顺序

上传后立刻被退回“缺少必需的列”

已修复 影响:所有导出文件
现象
把物料系统导出的清单拖进批量预审,秒退,提示缺少物料组、物料名称、物料长描述——可这些列文件里都有。
原因
导出文件的前三行是系统标题行、英文字段代码行和一行空行,中文表头压在第 4 行。系统原来只认第一行当表头,读到的是那串英文代码,自然一列都对不上。
现在
上传时会在前几行里自动找出真正的表头,上方的标题行、代码行、空行一并跳过。导出什么样就传什么样,不用先删行
顺带:列的顺序不限,多余的列会原样留在结果表里,方便对回原清单。

整份存量导出传上去,等到超时也没结果

已修复 影响:超大清单
现象
12 万行的全量导出上传后长时间无响应,最后页面报错。
原因
批量预审是逐行做规则检查、查重和物料组核对的,一行约半秒,124,566 行要跑十几个小时,远超网关的等待上限。这份数据是存量全量,本来也不是待建清单。
现在
单次最多 500 行。超过会当场告诉你这份有多少行、上限是多少,请拆分后再传,不会再让人干等。
500 行大约 5 分钟跑完。要对整个存量库做排查,走的是重复簇复核那条路,不是批量预审。

行数不多也慢得像卡死

已修复 影响:线上所有批量
现象
120 行的清单跑了 11 分 15 秒,期间页面一直转圈,像是没反应。
原因
批量预审本该全程不调大模型(那是给单条预审用的深度复核)。开关漏了一处:物料组推荐那一步仍然每行发一次请求,一次几秒,行数一乘就成了十几分钟。这个问题只在正式环境出现,开发环境没接大模型,所以之前没暴露。
现在
批量预审全程不再调用大模型,同一份清单 1 分 09 秒跑完,三项检查的结论一字未变
单条预审不受影响,仍然保留大模型复核——那里是一条一条看,慢几秒换更准的判断是划算的。

修复前后对照

同一份 120 行清单,正式环境实测
项目修复前修复后
导出文件能否直接上传退回“缺少必需的列”直接上传
120 行耗时11分15秒1分09秒
预计 500 行耗时约 47 分钟约 5 分钟
超大清单等到超时报错当场提示拆分
检查结论(通过/需修改/疑似重复)65 / 46 / 965 / 46 / 9
处理失败行数00

请按这个方式再验一遍

正式环境已更新,直接用即可

还有一处,一并修了。

存量物料当新建来测时,系统会把它自己列成疑似重复——同一份 120 行里有 52 行命中重复候选,其中 27 行命中的就是它自己。查重本来就会把“同一个物料号”排除掉,问题出在导出清单管物料号叫「物料编码」,而导入时只认「物料号」,于是每行的物料号都是空的,这条排除规则用不上。

现在两种写法都认。同一份清单重跑:有重复候选的行 5235,命中自己 270,判为疑似重复的行 98剩下的都是真候选,值得逐条看。