部分废止(2026-07-15)
打回「同实例多轮再提交」、进度「第 N 轮」、撤销/再提「关联旧单」等语义已改对齐钉钉:打回=本单终态;再办=复制表单开新实例(拒绝/撤销同)。
权威修订见:docs/superpowers/specs/2026-07-15-oa-return-copy-new-instance-design.md。
本文仍有效:P0 进度树序、拒绝≠打回文案、抄送排序、终态不展示未到达。
| 项 | 内容 |
|---|---|
| 状态 | 部分废止;树序进度仍有效(见上) |
| 日期 | 2026-07-15 |
| 范围 | web-admin 审批详情「审批进度」;拒绝 / 撤销 / 打回 的实例语义 |
| 权威对齐 | 钉钉 OA 审批详情(tasks + operation_records 思路) |
| 关联 | 2026-07-14-oa-approval-dingtalk-design.md(本文件修订其中「驳回 = 整单结束、V1 不做回退」——拆成「拒绝」与「打回」) |
产品与研发对齐过程中发现两处易混:
create_time 排序导致抄送/审批颠倒。本文件固定:实例怎么活 + 进度怎么画,并与钉钉主流体感对齐。
非目标(本文件不展开实现细节到接口字段级,留给实现计划):
| 动作 | 操作者 | 本单命运 | 再次进入审批 | 钉钉类比 |
|---|---|---|---|---|
| 拒绝 | 审批人 | 结束(结果:已拒绝) | 只能新开实例 | 任务 REFUSE + 实例完结 |
| 撤销 | 发起人(受高级设置约束) | 终止(已撤销) | 新实例再提(可关联旧单) | TERMINATE;重提常带 biz_action=REVOKE / 附属实例 |
| 打回(退回) | 审批人 | 不结束 | 同一实例改表单后再次提交 | REDIRECT_PROCESS |
实例 #1:… → 发起人撤销 → 状态终态「已撤销」
实例 #2:重新发起(新 instanceId)→ 可选关联 #1
同一实例:
第 1 轮提交 → … → 审批人打回(附意见)
→ 发起人改表单 → 第 2 轮提交 → 按退回策略重走节点 …
对齐钉钉:对外一条时间轴,对内区分「流程快照感」与「操作/轮次事件」。
| 层级 | 规则 |
|---|---|
| 轮次(大序) | 同一实例内按「提交轮 / 打回事件」分段或打标(第 1 轮、打回、第 2 轮…) |
| 轮内(小序) | 严格按该版本流程树设计节点顺序(抄送在审批前则展示在审批前) |
| 同节点多人 | 会签 / 或签 / 加签:一人一条结果,不合并成一条含糊节点 |
| 未到达 | 仅当前轮且实例 running 时可灰显「未到达」;终态(通过 / 拒绝 / 撤销)后不再挂未达节点 |
| 抄送 | 不阻断;创建即记入进度(知会),排序仍服从设计序 |
| 结束 | 通过 →「流程结束」;拒绝 →「流程结束(已拒绝)」;撤销 →「已撤销」(可不展示虚假「流程正常结束」) |
发起人 · 张三 · 已提交 · t0
抄送人 · … · 已抄送 · t1 ← 设计在审批前则在上
审批人 · … · 待处理 / 已同意 · t2
(可选)后续节点 · 未到达
(全部通过后)流程结束
—— 第 1 轮 ——
发起人 · 已提交
审批人甲 · 已同意
审批人乙 · 打回(意见:请补充附件)
—— 第 2 轮 ——
发起人 · 再次提交
审批人甲 · 待处理 / …
…
【实例 #1 详情】
… → 已撤销
【实例 #2 详情】
提示:本单由「实例 #1」撤销后重提
发起人 · 已提交
…
node_key 在 flow tree 先序/路径序中的位置)→ 同节点内 order_num → create_time → id。create_time 作为唯一排序键(会导致抄送/审批颠倒)。order_num,便于同节点加签等场景稳定排序。operation_records(或等价事件表),与钉钉 operation_records 对齐;在引入前,允许由「实例事件 + oa_task」投影生成时间轴,但语义须符合本章。2026-07-15-oa-start-flow-preview-design.md):提交前的预期链。order_num=0 同秒数据)。oa_relation 或实例字段 prev_instance_id / biz_action=revoke_resubmit),双方详情可跳转。2026-07-14-oa-approval-dingtalk-design.md §5.2 原文:
结束:实例
completed/rejected(驳回策略:整单结束,V1 不做复杂回退多版本)
修订为:
instanceId,可从新单跳到旧单。| 日期 | 决议 |
|---|---|
| 2026-07-15 | 按钉钉思路:拒绝结束本单;撤销后再提 = 新实例;打回 = 同实例再提交;进度 = 轮次时间轴 + 轮内设计序。 |
| 2026-07-15 | 未到达节点:进行中可展示;终态不展示(在混合模型中确认)。 |
| 2026-07-15 | 修订:打回改为终态 + 复制开新单;废止同实例多轮与旧单关联。见 2026-07-15-oa-return-copy-new-instance-design.md。 |
returned(待发起人修改再提交)。oa_instance_event(对齐钉钉 operation_records)。