格致GEZHI · GZ
2F · 书房书房

三大块:自己写的分享、AI 辅助读的导读、AI 每天找的资讯——全部按时间倒序,置顶的在最上面。

书房分享把 200 次点击变成 1 次:物料

STUDY · M-01 · AI 协作

把 200 次点击变成 1 次:物料图纸一键批量下载

胡安2026-09-16 · 今天来源 原创 · 实战复盘阅读约 4 分钟

——一个"纯本地转换"解决重复点击问题的最小改动实录

在品类管理的日常里,查物料、看图纸是高频动作。物料查询技能上线后,一句"帮我查这几个料号的图纸",机器人就能把图纸链接整整齐齐列出来——查询这一头,已经很快了。

但用户很快反馈了新痛点:一次涉及几十上百个物料时,下载那一头还是原始社会。对着消息里的链接一条一条点,点到第 30 个就记不清哪个点过、哪个没点过;稍不留神漏两三个,回头只能翻聊天记录大海捞针。

怎么把"下载 N 个图纸"从 N 次点击变成 1 次?这周的技能升级(v16.2)给了个答案:加一个批量下载页——把查询结果一键生成一个本地网页,打开点一次按钮,全部图纸自动逐个下载,漏没漏一眼看清。

一、之前:逐条点击的三个坑

把用户反馈拆开,其实是三个具体的坑:

  1. 容易漏。 链接是纯文本列表,点过的和没点过的长得一模一样,没有任何状态标记。30 个链接排在一起,人的注意力撑不到底。
  2. 容易乱。 手动点击顺序随机,文件散落在浏览器下载栏里,事后想对账"是不是每个物料都拿到了",只能靠脑子记。
  3. 容易烦。 50 个物料就是 50 次点击、50 次等待。这种纯重复劳动,本来就不该由人来做。

注意,这三个坑的公共根源是缺少状态可视化——不是查询慢,是"哪些完成了、哪些没有"这件事不可见。这个判断直接决定了后面的方案形态。

三个坑的拆解:容易漏、容易乱、容易烦,共同根源是缺少状态可视化
图 · 不是查询慢,是状态不可见

二、现在:一个页面,三样东西

升级后的下载链路变成两步:

  • 第一步照旧:查询物料、获取图纸链接。还是原来的脚本,串行执行、每个物料间隔 1 秒——这是接口限流的要求,一个字节都没动。
  • 第二步新增:当用户明确说"打包下载/一起下载/批量下载"时,把第一步已经落盘的输出,转换成一个「批量下载页」HTML 文件发给用户。

这个页面就三样东西:

  1. 状态标签。 每个物料一行,三种标签红绿分明:绿色"有图纸"、红色"无图纸"、红色"未查到"。漏没漏,从上往下扫一眼就知道——这一条直接治坑 1 和坑 2。
  2. 一键按钮。 点一次"全部下载",浏览器按 1.5 秒间隔自动逐个触发下载。间隔不是拍脑袋:太快要被文件服务器限流,太慢用户等得烦,1.5 秒是两边都舒服的平衡点。200 个物料,5 分钟内全部落盘,人可以完全走开。
  3. 明细对账。 输入料号、MDG 编码、企业项目编码、物料描述、下载链接,全在表格里。哪个物料什么状态、文件叫什么名字,事后随时可查。

之前是 N 次点击加人工对账;现在是 1 次点击加页面对账。

批量下载页剖面:状态标签红绿分明、一键按钮按 1.5 秒间隔逐个下载、明细表格事后对账
图 · 漏没漏,从上往下扫一眼就知道

三、为什么是"本地网页",而不是"打包成 zip"

设计时最先想到的方案,其实是让后端把所有图纸打成一个 zip 包。评估之后放弃了,三个原因:

  1. 后端打包链路太长。 要新写服务端逻辑:临时文件落盘、异步任务状态、超时清理。每多一环,就多一个出错面——打包到一半失败了怎么办?文件残留谁清理?
  2. 大文件中转浪费。 图纸单个几 MB,200 个物料打包就是几百 MB 在服务器上走一圈(下载到服务器、压缩、再推给用户)。而浏览器直连文件服务器下载是既有通道,早就验证过稳定,没必要让数据绕路。
  3. 改动面要最小。 最终方案是一个纯本地转换脚本:读第一步已经生成的文本输出,拼出一个 HTML,零网络请求、零新接口、零权限变化。图纸的 DRM 加密结构、下载链接的有效性,全部原样保留,不存在"转换把文件弄坏"的可能。

这是 Vibe Coding 给我的一条经验:能不动生产链路,就别动。新需求优先用"组合既有产物"的方式满足,而不是新造一条链路。这次的批量功能,生产侧零改动,风险几乎为零。

zip 打包与纯本地转换的链路对比:前者新增服务端逻辑且大文件绕路,后者零网络请求零新接口
图 · 组合既有产物,不新造链路

四、防呆:默认不开,要了才给

有个容易忽略的设计点:这个页面不会主动生成

  • 只有用户明确说了"打包下载/一起下载/批量下载/一次全下",才走第二步;普通查询绝不塞一个 HTML 文件过来。多数场景查三五个物料,逐条点反而更快、更直观——工具得分场景,不能一刀切。
  • 就算生成了批量页,消息里照样逐条输出每个物料的图纸链接。页面是附加便利,不是信息黑洞:用户想在聊天记录里直接点某一条,永远可以。
  • 单次 200 个物料的上限保持不变,超了先请用户缩减范围再发起——这个约束保护的是接口,不是功能。
批量下载页触发判定:只有用户明确说打包或批量下载才生成页面,否则照常逐条输出链接
图 · 页面是附加便利,不是信息黑洞

五、写在最后

回看这次升级:用户要的是"少点几下",但我们没有去改后端、没有加服务器、没有引入新依赖,只是把本来就存在的查询输出,多转了一层格式。

之前:N 个物料 = N 次点击 + 人工记状态;现在:1 次点击 + 红绿标签一眼对账。

升级前后对比:N 次点击加人工记状态,变成 1 次点击加红绿标签一眼对账
图 · 把那 N-1 次点击,悄悄省下来

好的工具不是把功能往上堆,而是把用户本来要多点的那 N-1 次,悄悄省下来。