Duaer

搭建

在 Duaer 里用任务表给员工派活

在 Duaer 里,每个项目都自带一张名为 Duaer tasks 的数据表。数字组织往里插一行,就是派一个任务、推一张要拍板的卡片或写一条笔记。员工在 Duaer 员工端点完成或选一个选项后,结果写回这一行,等待中的数字组织接着往下跑。

Duaer 自带的任务表

每个 Duaer 项目都自带一张 Duaer tasks 表,不用建,数据表列表里带内置标记。表锁定:不能删除、改名,也不能增删或改名列,只能改行。

  • assignee:员工登录用的邮箱,小写,必须完全一致
  • title:一句话写清要做什么
  • detail:可选的说明
  • due:可选的截止时间
  • status:新建时填 open;员工点完成或拍板后变成 done,点「今天先不动」变成 later
  • link:可选的相关链接,只显示 http 或 https
  • resume_url:可选,等待中的数字组织的继续地址
  • done_at:员工点完成、拍板或按下的时间,由 Duaer 填写
  • done_by:操作的人的邮箱,由 Duaer 填写
  • kind、pressure:卡片上的短标签(如「库存」)和不处理会怎样(如「周末前会断货」)
  • urgent、rank:urgent 为真排最前,其次 rank 大的在前
  • rule:越过的那条线,如「库存跌破安全线」
  • facts:JSON,最多 8 组「名称:数值」
  • change:JSON {"from", "to", "note"},变了什么,画成「原来 → 现在」,代替 facts
  • reading、basis:两三句解读,和数据来自哪里
  • actions:JSON,最多 4 个可选的下一步
  • choice:员工选中的选项 id,由 Duaer 填写
  • lane:read 或 quiet 表示笔记;任务和卡片留空

没有 actions 的行是普通任务,员工点完成;有 actions 的行是拍板卡片,员工选一个选项;lane 有值的行是笔记,只展示。

用数字组织派 Duaer 任务

  1. 在数字组织里加 Data table 节点,选 Duaer tasks,操作选 Insert。
  2. assignee 填员工邮箱,例如 {{ $json.email.toLowerCase() }};title 填要做的事;status 填 open。due、detail、link 按需填。
  3. 运行后,这条任务出现在员工 Duaer 员工端的首页,覆盖本组织所有项目,按 urgent、rank、截止时间排序,过期的标红。
[
  {
    "assignee": "li.na@acme.com",
    "title": "复核 9 月应收对账单",
    "detail": "华东区 37 张,差异合计 4,210 元",
    "due": "2026-10-08T10:00:00.000Z",
    "status": "open",
    "resume_url": "{{ $execution.resumeUrl }}"
  }
]

员工必须是本组织成员(邀请时选员工即可)。也可以直接让 Duaer 设计师来搭:说清楚派给谁、做什么、要不要等他做完。

等员工做完再继续

  1. 在 Insert 节点里把 resume_url 填成 {{ $execution.resumeUrl }}。
  2. 后面接 Wait 节点:Resume 选 On Webhook Call,HTTP Method 选 POST。有截止时间时打开 Limit Wait Time。
  3. 员工点完成后,Duaer 调用这个地址,数字组织从 Wait 节点继续。Wait 节点输出的 body 里有 taskId(任务行的 id)和 doneBy(点完成的人的邮箱)。

Duaer 只调用指向本实例等待中执行的地址,所以一定要用 {{ $execution.resumeUrl }},不要手写或填外部地址。

推一张要员工拍板的 Duaer 卡片

Duaer 员工端先开口:员工打开就看到今天要他拍板的事,以及每个选项会做什么。选项在搭流程时就定好,员工只能选,不能自己写。每一步只做一件事:

  1. Schedule Trigger:在员工上班的时间触发。
  2. 读数据:Data table、数据库或 HTTP 节点读规则要用的数。
  3. 规则:一个 Filter 或 IF 节点,只留下越过线的。没有越线就不推卡片,可以改写一条 quiet 笔记。
  4. 事实:一个 Set 节点算出卡片上要显示的数。越线的是一处变化(例如表头从「物流单号」改成「运单号」)时,改写 change。
  5. 解读:一个 AI 步骤只根据这些事实写 reading 和 basis,不做选择、不加选项。
  6. 卡片:Insert 到 Duaer tasks,填 title、kind、pressure、urgent、rule、facts、reading、basis、actions,status 填 open,resume_url 填 {{ $execution.resumeUrl }}。
  7. Wait:Resume 选 On Webhook Call,HTTP Method 选 POST,打开 Limit Wait Time。
  8. Switch:按 {{ $json.body.choice }} 分支,每个选项 id 一个输出。
  9. 每个分支只做这个选项 hint 里说的那一步,然后结束。
[
  {
    "assignee": "li.na@acme.com",
    "kind": "库存",
    "urgent": true,
    "pressure": "周末前会断货",
    "title": "西湖龙井 50g,只够卖 2.1 天",
    "rule": "库存跌破安全线",
    "facts": "{\"现库存\":\"13 盒\",\"近 14 天日均\":\"6.4 盒\",\"到货\":\"4 天\"}",
    "reading": "不是滞销。按 4 天到货,今天不补,这个周末会断。",
    "basis": "库存表 · 近 14 天订单",
    "actions": "[{\"id\":\"draft\",\"label\":\"起草补货 40 盒\",\"hint\":\"写一张采购草稿,40 盒。不发给供应商。\"},{\"id\":\"stop\",\"label\":\"卖完停补\",\"hint\":\"这个规格标成停补。卖完后不再提醒。\"}]",
    "status": "open",
    "resume_url": "{{ $execution.resumeUrl }}"
  }
]

actions 里每个选项写成 {"id", "label", "hint"}:id 给 Switch 匹配,label 是按钮上的字,hint 一句话说清这一步做什么、不碰什么,员工点之前就能看到。第一个选项画成主按钮,放最稳妥的那个。员工选定后,Duaer 写入 choice,status 变成 done,并用 {"taskId", "doneBy", "choice"} 继续那次执行;拍过的板不能撤回。点「今天先不动」只把 status 改成 later,什么都不执行,当天可以收回。也可以直接让 Duaer 设计师按这个方式来搭。

写 Duaer 笔记

笔记告诉员工数字组织看过什么、哪些没事。插一行 assignee、title,lane 填 read(昨晚查过,如「订单 · 90 天,1,284 笔」)或 quiet(一切正常,如「81 个规格够卖 7 天以上」)。笔记只在写入当天显示在 Duaer 员工端首页两侧,按写入顺序排列,没有按钮,不用填 status。

在哪里看 Duaer 任务的完成结果

  • 任务表:打开项目 › 数据表 › Duaer tasks,这一行的 status 变成 done,done_at 和 done_by 记下了时间和人,拍板卡片的 choice 记下了选了哪个选项。
  • 员工端:完成的普通任务不再显示;拍过的卡片移到「已拍板」,标「已执行」。
  • 数字组织:填了 resume_url 的任务,执行记录里那次执行会从等待中变成继续运行,Wait 节点的输出就是完成反馈。
  • 员工端:如果流程没能继续(例如那次执行已经结束或被取消),员工点完成后会看到「已标记完成,但流程没有继续」,任务仍然记为 done。

要按完成情况做后续处理,又不想让执行一直等着,可以不填 resume_url,另建一条定时运行的数字组织读取 status 为 done 的行。

常见问题

员工点完成后,Duaer 会删掉任务行吗?

不会。Duaer 只把这一行的 status 改成 done,并写入 done_at 和 done_by;行留在 Duaer tasks 表里可查。

能把 Duaer 任务派给不在组织里的人吗?

不能。Duaer 员工端只给本组织成员登录;先在 Duaer 设置 › 组织里邀请他,角色可以选员工。

员工在 Duaer 员工端拍板后能撤回吗?

不能。Duaer 收到选择就继续执行那一个分支,卡片记为已执行。只有「今天先不动」的卡片当天可以收回。

同组