老板数字员工平台 — 统一调度与多通道对接方案

老板数字员工平台 — 统一调度与多通道对接方案

版本: 2.0 | 更新日期: 2026-05-29

核心调整: 去掉"邮箱中心"模型,邮箱只是传输中介之一,与飞书/企微/Telegram/WorkBuddy 本质等价。


一、设计原则

1.1 通道无关 (Channel-Agnostic)

老板不需要关心消息走哪条通道。所有业务事件通过统一调度层 dispatch() 分发,平台按优先级和配置自动选择通道:

业务事件 (库存预警/ECR待审/BOM变更/报表就绪)
    │
    ▼
  dispatch()  ← 统一入口,通道无关
    │
    ├── 邮件通道      (SMTP → 老板邮箱 / Coze智能体邮箱)
    ├── 飞书通道      (Webhook → 飞书群/机器人)
    ├── 企微通道      (Webhook → 企业微信群)
    ├── Telegram通道   (Bot API → 私聊/群组)
    └── WorkBuddy通道  (Webhook → AI技能执行)

关键认知:邮箱只是"文档中介"(文档传输载体),不是架构中心。Coze 智能体自带邮箱能力、WorkBuddy 可通过技能收发邮件、飞书也有邮件集成——所有通道本质上都是"把结构化消息投递给老板"。

1.2 双向交互

  • 推送(BossAgents → 老板):业务事件触发 → dispatch() 多通道并行推送
  • 指令(老板 → BossAgents):自然语言 → 任意通道接入 → 执行业务操作 → 返回结果
老板通过任意通道发指令
    │
    ▼
┌─────────────────────────────────────────────┐
│  WorkBuddy Hook   POST /api/workbuddy/hook  │  ← 自然语言→工具执行
│  Coze 回调        POST /api/coze/callback    │  ← 结构化action执行
│  飞书机器人        POST /api/feishu/webhook    │  ← 未来扩展
│  企微机器人        POST /api/wework/webhook    │  ← 未来扩展
└─────────────────────────────────────────────┘
    │
    ▼
  执行引擎 (SCSAI AML / SQLite查询 / LLM推理)
    │
    ▼
  结果 → dispatch() → 推送回老板(任意通道)

1.3 渐进接入

不需要一次配齐所有通道。配一个激活一个:

| 通道 | 状态 | 配置要求 |

|------|------|---------|

| 邮件 (SMTP) | 已配置 | .env 中 SMTP_* 已填,开箱即用 |

| WorkBuddy | 已配置 | 本地 webhook,已实现 |

| Coze 回调 | 已实现 | /api/coze/callback,可创建采购单 |

| 飞书 | 待配置 | .env 填 FEISHU_WEBHOOK |

| 企微 | 待配置 | .env 填 WEWORK_WEBHOOK |

| Telegram | 待配置 | .env 填 TELEGRAM_BOT_TOKEN + CHAT_ID |


二、核心架构

2.1 统一调度服务

文件: server/services/unified-dispatch.js

// 核心函数签名
async function dispatch(event) {
  // event = {
  //   type:      'inventory_alert' | 'bom_change' | 'report_ready' | 'task_completed' | 'ecr_pending'
  //   subject:   '库存预警:3项物料低于安全库存'
  //   text:      '纯文本内容'
  //   html:      '<h2>HTML内容</h2>'          // 邮件专用
  //   icon:      '📦'
  //   summary:   '摘要'
  //   data:      { items: [...] }             // 结构化数据
  //   channels:  ['email', 'feishu']          // 指定通道,默认全部
  //   priority:  'high' | 'normal' | 'low'
  //   metadata:  {}                            // 透传元数据
  // }
}

6 个便捷方法

| 方法 | 事件类型 | 优先级 | 典型触发 |

|------|---------|--------|---------|

| dispatchInventoryAlert(items) | inventory_alert | high | 定时巡检发现库存不足 |

| dispatchBomChange(changes) | bom_change | normal | BOM工程师修改了BOM结构 |

| dispatchEcrPending(ecrInfo) | ecr_pending | high | 新ECR提交等待审批 |

| dispatchReportReady(reportInfo) | report_ready | low | 数字员工生成了分析报告 |

| dispatchTaskComplete(taskInfo) | task_completed | normal | 数字员工执行完成一轮 |

| dispatchNotify(subject, text) | notification | normal | 任意自定义通知 |

调用示例

const dispatch = require('./server/services/unified-dispatch');

// 库存预警 → 仅推邮件
await dispatch.dispatchInventoryAlert(alertItems, {
  channels: ['email']
});

// ECR待审 → 邮件 + 飞书 + WorkBuddy 三通道
await dispatch.dispatchEcrPending(ecrData, {
  channels: ['email', 'feishu', 'workbuddy']
});

// 报表就绪 → 全通道(默认)
await dispatch.dispatchReportReady(reportInfo);

2.2 五大通道适配器

| 通道 | 适配器函数 | 底层实现 | 配置来源 |

|------|-----------|---------|---------|

| 邮件 | channelEmail() | nodemailer SMTP | .env SMTP_* + config.yaml notify.email |

| 飞书 | channelFeishu() | notify.js → 飞书Webhook | config.yaml notify.feishu |

| 企微 | channelWework() | notify.js → 企微Webhook | config.yaml notify.wework |

| Telegram | channelTelegram() | notify.js → Bot API | config.yaml notify.telegram |

| WorkBuddy | channelWorkbuddy() | HTTP POST → webhook | .env WORKBUDDY_HOOK_URL |

所有适配器执行结果统一格式:{ channel: string, ok: boolean, error?: string }

2.3 邮件通道的双子通道

邮件通道内部有两个子通道(不需要都启用):

channelEmail()
  ├── boss_agent 子通道  → 推送到 COZE 智能体邮箱 (BOSS_AGENT_EMAIL)
  │                       触发条件: channels 含 'email' 或 'boss_agent'
  │
  └── notify_email 子通道 → 推送到 notify.email.to 收件人列表
                            触发条件: channels 含 'email' 或 'notify_email'
  • boss_agent 子通道:用于让 Coze 智能体收到邮件后自动处理(创建采购单等)
  • notify_email 子通道:用于普通邮件通知(发送给老板/团队成员)

三、双向指令链路

3.1 WorkBuddy 直接对接(已实现)

路由: POST /api/workbuddy/hook

老板通过 WorkBuddy 发自然语言 → BossAgents 解析意图 → 调用工具 → 返回结果。

已注册的工具:

  • query_bom_structure — 查询BOM结构
  • check_inventory — 库存检查
  • query_vendors — 供应商查询
  • create_purchase_order — 创建采购单
  • get_dashboard — 老板看板数据

3.2 Coze 回调对接(已实现)

路由: POST /api/coze/callback

Coze 智能体收到邮件后,可回调 BossAgents 执行操作:

| Action | 说明 | 实现状态 |

|--------|------|---------|

| ping | 健康检查 | 已实现 |

| create_purchase_order | 创建采购单(写SCSAI) | 已实现 |

| get_inventory_alerts | 查询库存预警 | 已实现 |

| get_vendor_info | 查询供应商信息 | 已实现 |

| approve_ecr | 审批ECR | 待实现 |

| query_bom | 查询BOM | 待实现 |

3.3 飞书/企微对接(待实现)

未来可注册 Webhook 路由,接入飞书机器人或企微机器人,实现同样的自然语言→工具执行链路。


四、配置体系

4.1 配置优先级

环境变量 (.env)  >  config.yaml  >  代码默认值

4.2 邮件配置(已就绪)

.env 文件:

SMTP_HOST=smtp.sina.com
SMTP_PORT=465
SMTP_SECURE=true
[email protected]
SMTP_PASS=******
SMTP_FROM_NAME=WorkBuddy
[email protected]
[email protected]   # 收件人

config-loader 自动映射到 config.notify.email,并设 enabled = true

4.3 新增通道只需两步

以飞书为例:

Step 1: .env 添加

FEISHU_WEBHOOK=https://open.feishu.cn/open-apis/bot/v2/hook/xxx

Step 2: config.yaml 添加(或通过环境变量覆盖)

notify:
  feishu:
    enabled: true
    webhook_url: https://open.feishu.cn/open-apis/bot/v2/hook/xxx

统一调度层自动识别并激活,无需改代码。


五、事件触发场景

5.1 自动触发(数字员工巡检)

定时任务 (node-cron)
  │
  ├── 库存巡检 (每小时) → 发现缺料 → dispatchInventoryAlert()
  ├── ECR 扫描 (15分钟) → 待审批ECR → dispatchEcrPending()
  ├── 供应商评分 (每天) → 质量下降 → dispatchNotify()
  └── BOM 变更监听       → 结构变更 → dispatchBomChange()

5.2 手动触发(老板指令)

老板 → WorkBuddy/Coze/飞书 → 自然语言
  │
  ├── "查一下最近的库存预警"  → getInventoryAlerts → 返回数据
  ├── "帮我创建采购单给XX供应商" → createPurchaseOrder → 返回PO号
  ├── "ECR-001 通过审批"      → approveECR → 返回审批结果
  └── "把这份报告发给我"      → dispatchReportReady() → 推送到所有通道

5.3 闭环场景(推送→指令→执行→推送)

库存巡检发现缺料
  → dispatchInventoryAlert() 推送到老板邮箱
  → 老板回复 "给XX供应商创建采购单"
  → Coze/WorkBuddy 识别指令
  → POST /api/coze/callback { action: 'create_purchase_order', ... }
  → SCSAI 创建采购单
  → dispatchTaskComplete() 通知老板 "采购单 PO-XXX 已创建"

六、当前实现状态

6.1 已完成

| 模块 | 文件 | 说明 |

|------|------|------|

| 统一调度服务 | server/services/unified-dispatch.js | dispatch() + 6个便捷方法 + 5通道适配器 |

| 邮件服务 | server/services/email-service.js | nodemailer SMTP,sendToBossAgent / sendEmail |

| 通用推送 | notify.js | 飞书/企微/Telegram/邮件 4通道底层实现 |

| Coze 回调 | server/services/coze-callback-service.js | 4个action已实现 |

| WorkBuddy 对接 | server.js (路由) | hook + tools + execute 3个API |

| 推送路由 | server.js | /api/dispatch POST + /api/dispatch/history GET |

| 推送历史 | dispatch_history 表 | boss_analytics.db 记录每次推送结果 |

| 配置加载 | config-loader.js | .env → config 映射,SMTP自动启用 |

| 库存预警对接 | server/agents/inventory-alert-agent.js | 已改用 dispatch.dispatchInventoryAlert() |

6.2 待完成

模块说明优先级
ECR 数字员工对接ECR审核完成后调 dispatchEcrPending()P1
BOM变更监听对接BOM变更时调 dispatchBomChange()P1
成本优化报告对接报告生成后调 dispatchReportReady()P2
飞书 Webhook 路由POST /api/feishu/webhook 自然语言→执行P2
企微 Webhook 路由POST /api/wework/webhook 自然语言→执行P2
Coze action 扩展approve_ecr、query_bom 等P2
推送历史前端展示老板看板展示 dispatch_historyP2
通道优先级策略按优先级和时区智能选通道P3

七、与旧方案的对比

维度旧方案(邮箱中心)新方案(通道无关)
架构中心邮箱(Coze智能体邮箱)统一调度层 dispatch()
邮箱角色枢纽,所有消息经邮箱中转通道之一,与其他通道等价
新增通道需围绕邮箱改造只需添加通道适配器 + 配置
接入方式必须配邮箱任意通道可独立接入
老板体验只能看邮件飞书/企微/Telegram/邮件/WB 任选
闭环链路邮件→Coze→回调→邮件任意通道入→执行→任意通道出

八、API 速查

推送(出站)

POST /api/dispatch
Body: { type, subject, text, channels, data, priority }
Response: { success, results: [{ channel, ok }], dispatched_at }

GET /api/dispatch/history?limit=20
Response: [{ event_type, subject, channels, success_count, dispatched_at }]

指令(入站)

POST /api/workbuddy/hook
Body: { message: "自然语言指令" }
Response: { reply, data }

POST /api/coze/callback
Body: { action: "create_purchase_order", data: {...} }
Response: { success, data: { po_no } }

GET /api/workbuddy/tools
Response: [{ name, description, parameters }]
← 返回案例列表
分享:
🤖 Try Now →
🤖
🎁