2026-09-24 · 原文发布日
n8n 工作流:自动补货下单并追踪供应商确认
该 n8n 模板每个工作日早晨审计 Google Sheets 里的库存、销售和采购订单,剔除缺货日和异常峰值计算需求,按收货历史测算供应商交期,为每个供应商生成一份建议订单,按金额走立即发送、暂缓或邮件审批三条路。发出的订单写入 Sheets 追踪,之后轮询 Gmail 供应商回复,用 OpenAI 只从最新回复中提取确认的数量、日期、价格,与订单行对账,有风险的变动升级给采购。
原文要点
原模板由 Luca 发布:每个工作日早晨定时启动,读 Google Sheets 的 Products、Stockouts、Sales、Purchase orders、Suppliers、Reorder log 六页,审计迟到交付、短收和对不上的库存记录并邮件催办;计算需求时剔除缺货日和销售尖峰,按收货历史测算供应商交期(历史不足用报价交期),按供应商各生成一份建议订单;按金额走立即发送、暂缓、邮件请采购审批三路;发出后订单行写入 Purchase orders;随后轮询 Gmail 供应商回复,用 OpenAI 只从最新回复文本抽取确认的数量、日期、价格,与未结订单行对账,确认则更新、有风险变动则升级给采购。设置含审批限额、容差、日期格式等阈值。
这次做成什么
用本站练习跑通两个最难的片段:一是从 30 天合成销售数据剔除缺货日与尖峰算日均需求并生成建议订单量;二是把一封模拟供应商回复邮件解析成确认行并与订单行对账。定时、催办、审批邮件链路练会后按原模板节点接回。
准备什么
- n8n 实例与 OpenAI API key(用于回复抽取)
- Google Sheets 测试表,含 Products、Sales、Stockouts、Purchase orders、Suppliers、Reorder log 六页
- Gmail 凭据仅在正式发单与轮询回复时需要,练习用 Set 模拟邮件
具体怎么做
准备合成数据
把材料二 CSV 导入 Sales 页(30 天日销量,含 2 天缺货和 1 天促销尖峰),Products 页写一行:sku=SKU-A、supplier_name=恒泰包装、on_hand=40、unit_cost=2.5、pack_size=50、moq=200;Suppliers 页写 quoted_lead_time=7。
清洗需求并算建议订单
Code 节点:先剔除 Stockouts 出现的日期,再对剩余销量用均值±2 倍标准差剔除尖峰,得日均需求 d;无收货历史时用 quoted_lead_time=7 天;建议量 = d*(交期+安全天数3) - on_hand,再向上取整到 pack_size 倍数且不低于 MOQ。
金额三路路由
IF 节点按 订单金额=建议量*unit_cost 分流:≤500 立即发送分支(练习用 Set 生成订单文本)、>500 且 ≤2000 走审批分支生成请购邮件草稿、>2000 暂缓到下一周期。三路的决定都写 Reorder log。本练习阈值为自设值,正式按采购政策改。
解析确认回复并对账
Set 节点放入材料三的虚构回复邮件文本,接 OpenAI 节点粘贴材料一提示词抽取 confirmed_lines JSON;Code 节点与 Purchase orders 中 line_key 匹配的行对比数量、交期、单价:单价涨幅>3% 或交期推迟>2 天标记 at_risk 升级,否则标记 confirmed 更新订单行。
可直接复制的材料
供应商确认抽取提示词
本站独立编写,对应原模板“只从最新回复抽取”的设定;正式接 Gmail 节点时取线程最新一封。
你是采购订单对账助手。只从邮件最新回复正文(忽略引用历史)抽取供应商确认信息,仅输出 JSON:{"po_id":"字符串或null","confirmed_lines":[{"line_key":"字符串","qty":数字,"unit_price":数字,"delivery_date":"YYYY-MM-DD"}],"notes":"字符串"}。未确认的字段填 null,不要猜测,不要把报价历史当确认。邮件正文:{{ $json.reply_text }}合成销售数据 CSV
本站合成节选:08-04 为缺货日(记入 Stockouts)、08-06 为促销尖峰;练习时补足 30 天同分布数据。
date,sku,qty
2026-08-01,SKU-A,12
2026-08-02,SKU-A,11
2026-08-03,SKU-A,13
2026-08-04,SKU-A,0
2026-08-05,SKU-A,12
2026-08-06,SKU-A,60
2026-08-07,SKU-A,12
2026-08-08,SKU-A,11
2026-08-09,SKU-A,13
2026-08-10,SKU-A,12虚构供应商回复邮件
本站虚构:单价 2.55 较订单 2.50 涨 2%,交期 9/22 较原定 9/20 晚 2 天,用于演示对账边界。
主题:Re: PO-2026-0915 恒泰包装
您好,PO-2026-0915 确认如下:SKU-A 数量 200 个,单价 2.55 元,9 月 22 日到货。纸箱内衬规格不变。
——
历史引用:8 月报价 2.50 元(请勿作为确认依据)输入与输出示例
本站虚构演示,阈值与均值均为练习设定,未真实发送邮件或调用模型。
输入
清洗后日均 d=12 件(剔除缺货日 08-04 与尖峰 08-06),交期 7 天、安全 3 天、on_hand=40:建议量=12*(7+3)-40=80,向上取整到 pack_size=50 的倍数得 100,再抬升至 MOQ 200,得 200 件;金额=200*2.5=500 元。对账:确认 qty=200、unit_price=2.55、delivery_date=2026-09-22。对应输出
建议订单:SKU-A 200 件,金额 500 元 → 走“立即发送”分支(≤500);Reorder log 记 decision=send_now。对账结果:{"line_key":"SKU-A","qty_match":true,"price_change_pct":2.0,"date_shift_days":2,"status":"confirmed"}(涨价 2%≤3%、晚 2 天≤2 天,未触发升级);若单价为 2.60 则 price_change_pct=4.0、status=at_risk,升级采购。做完检查这些
- 缺货日与 60 件尖峰日不参与日均计算,d 约等于 12
- 建议量 200 同时满足 pack_size 倍数与 MOQ 约束
- 金额 500 元整落入立即发送分支而非审批分支
- 回复中历史引用的 2.50 旧报价不会被当作确认价格
容易卡住的地方
- MOQ、pack size、报价交期缺失时建议量会算错,Suppliers/Products 页必须先补齐
- Gmail 轮询需按线程匹配最新回复,误读引用段会把旧价当确认价
- 审批限额、价格容差、日期格式为本练习自设,原模板阈值需在导入后核对配置节点
- 仅工作日运行的调度在节假日照常触发,需要时自行加日历判断
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Reorder inventory and track supplier confirmations with Sheets, Gmail and GPT-4 Mini
- 原作者
- Luca
- 原始发布日期
- 2026-09-24T05:41:40.573Z
- 来源
- https://n8n.io/workflows/19878