作为机械设计工程师,我们的核心价值在于创造和优化物理世界的解决方案,而不是淹没在重复的、低价值的商务流程中。一个典型的痛点就是外协加工询价:一份图纸发给十家供应商,收回十份格式迥异的报价单——Excel、PDF,甚至直接写在邮件正文里。手动整理对比,不仅耗时,还极易出错。这种“伪工作”蚕食了我们宝贵的设计时间。

今天,我将分享一个工程师的“极客”解决方案:利用低代码自动化平台 n8n 搭建一个全自动的询价-比价-决策系统,将工程师从繁琐的表格中解放出来。

核心思路:用API和逻辑流重构询价流程

我们的目标是建立一个无人值守的管道(Pipeline),自动处理从接收报价到初步决策的全过程。n8n 就像是这个系统的数字底盘,通过其可视化的节点,我们可以将邮件、AI、数据库等服务像搭乐高一样连接起来。

整个工作流(Workflow)分为四个关键阶段:

  1. 自动触发 (Trigger): 监控特定邮箱,一旦收到供应商的报价邮件,流程自动启动。
  2. 信息提取 (Extraction): 调用大语言模型(LLM),像一个不知疲倦的实习生,阅读邮件和附件,并提取关键信息。
  3. 数据聚合 (Aggregation): 将结构化的数据自动写入 Notion 或 Google Sheets,形成一个实时更新、清晰明了的比价看板。
  4. 决策与执行 (Action): 根据预设逻辑(如最低价),自动筛选并触发下一步操作,例如发送确认邮件。

n8n 工作流节点详解

1. 邮件触发器:Email Read IMAP

这是流程的起点。我们配置此节点监控指定的邮箱文件夹。为了确保精准,必须设置过滤器(Filter),例如邮件主题必须包含项目编号或“报价”字样。这样可以有效避免无关邮件干扰流程。节点会自动抓取邮件正文和附件(binary data),传递给下一步。

2. 核心处理:LLM 的威力

这是整个系统的“大脑”,也是解决非结构化数据问题的关键。传统方法(如正则表达式)在面对五花八门的报价单格式时显得力不从心,而 LLM 则能轻松应对。

我们会用到 OpenAI 或其他 LLM 节点的 Chat 模型。关键在于构建一个高质量的 Prompt

1
2
3
4
{
"system_prompt": "你是一个专业的采购助理。请从给定的文本或文件中提取以下信息,并以严格的 JSON 格式返回。如果信息不存在,对应的值应为 null。",
"user_prompt": "提取以下内容中的 '供应商名称', '零件总价 (price)', '承诺交期 (lead_time_days)'。总价必须是数字类型,交期必须是整数天数。\n\n内容: {{ $json.body }} \n附件数据: {{ $binary.data }}"
}

这个 Prompt 指示 AI 将提取的信息结构化为 JSON,例如 {"supplier": "A加工厂", "price": 1250.5, "lead_time_days": 15}。这种格式便于后续节点直接引用。

3. 数据看板:Notion / Google Sheets

拿到结构化的 JSON 数据后,事情就简单了。使用 n8n 的 NotionGoogle Sheets 节点,将提取出的供应商、价格、交期等字段直接写入一个预设的数据库或表格中。

想象一下,你发完询价邮件后,一个 Notion 页面会自动被各家供应商的报价实时填满,价格、交期一目了然,并且已经按价格自动排序。手动复制粘贴的时代彻底结束了。

4. 自动决策:IF 节点与邮件发送

当所有报价基本到齐后(可设置一个时间延迟或手动触发),流程进入决策阶段。

  • 数据拉取: 先从 Notion/Sheets 中拉取特定项目的所有报价。
  • 逻辑判断: 使用 IF 节点或 Function 节点编写简单逻辑,找到 price 字段值最低的一条记录。
  • 自动执行: 将最低价供应商的信息传递给 Send Email 节点,发送一封预设模板的邮件,例如:“[供应商名称],您好!关于 [项目编号] 的报价 [报价金额] 已收到,我方确认采纳,请准备接收正式采购订单(PO)。”

价值回归:让工程师专注创新

这个系统并非什么尖端科技,它更像是一种思维模式的转变——将软件工程中“自动化一切”的理念,应用于机械工程的日常工作中。它将数小时的手工对比统计工作压缩到几乎为零,不仅提升了效率,更重要的是保证了数据的准确性,降低了人为失误的风险。

作为工程师,我们应该成为工具的创造者和优化者,而非工具的奴隶。无论是用 Python 写一个批量改图框的脚本,还是用 n8n 搭建一个商务自动化流程,本质都是在用数字世界的齿轮与连杆,去驱动物理世界的效率变革。这,才是技术人真正的价值所在。