采购工作流修复:供应商查询逻辑、Contact创建、163 IMAP禁用、编码修复

采购工作流修复:供应商查询逻辑、Contact创建、163 IMAP禁用、编码修复

修复的问题

1. 供应商查询逻辑(按产品名过滤)

文件: server/tools/procurement-workflow-v2.js

  • Step1 SCSAI 查询 AML 增加 name condition="like" 按产品名过滤:%${product}%
  • 按产品名未查到时,宽泛查询所有 Vendor(maxRecords="50",无过滤条件)
  • 宽泛查询也未找到时,才自动创建供应商

2. Contact 创建失败(绕过 Contact,直接写 Vendor.contact_email)

文件: server/tools/procurement-workflow-v2.js

  • findOrCreateVendor() 重写:跳过 Contact → Vendor → VendorContact 的三步走模式
  • 改为一步创建 Vendor 并直接写 contact_email 字段:{ name, contact_name, contact_email }
  • 错误日志现在输出完整 fault 详情

3. 供应商命名规则

文件: server/tools/procurement-workflow-v2.js

  • 自动创建的供应商名称改为 {product}供应商{序号}
  • 如购买"伺服电机",则创建 "伺服电机供应商1"、"伺服电机供应商2"
  • 方便后续按产品名搜索

4. 163邮箱全面禁用

文件: server/services/email-service.js

  • getImapConfigs() 增加 DISABLE_163_IMAP 环境变量开关
  • 默认跳过163 IMAP(DISABLE_163_IMAP 未设置或为 true 时跳过)
  • 只有明确设为 false 才启用

文件: server/tools/procurement-workflow-v2.js

  • 供应商创建列表增加 skipEmails 过滤:18601921816@163.com, tuan_zhang@sina.com
  • 第二个 fallback 入口同样过滤

5. IMAP 重复抓取

文件: server/services/email-service.js

  • fetchNewEmails() 增加 _lastProcessedSeq[label] 追踪
  • 无新邮件直接跳过(startSeq > total

6. 编码修复

  • nodemailer 已设 defaults: { charset: 'UTF-8' },邮件 Subject 自动 UTF-8 base64 编码
  • 所有 ?? 显示问题均为终端编码导致(Node.js 内存中字符串正确)

环境变量变更

  • DISABLE_163_IMAP=true - 禁用163 IMAP(已设,需在 .env 或启动时注入)
  • SKIP_EMAILS - 逗号分隔的跳过邮箱列表(默认 163/sina)
  • COZE_SUPPLIER_1/2/3 - 自定义备用供应商邮箱

触发方式

DS-PROC-001 采购助手启动后:

  1. 查 SCSAI Vendor where name LIKE '%伺服电机%'
  2. 查到→使用;没查到→全量查(无过滤)
  3. 还没找到→自动创建"伺服电机供应商1/2"(跳过163/sina邮箱)
  4. 发询价邮件(过滤自身邮箱+163/sina)
  5. 等报价(仅 QQ IMAP 监听,163 不启)
  6. 比价+报告+确认+PO

文件修改清单

  • D:\openclaw\bossagents\server\tools\procurement-workflow-v2.js:供应商查询 AML、findOrCreateVendor、fallback 供应商名、163 过滤、self-email 过滤
  • D:\openclaw\bossagents\server\services\email-service.js:163 IMAP 禁用开关、IMAP 去重追踪
← 返回案例列表
分享:
🤖 Try Now →
🤖
🎁