| 项 | 内容 |
|---|---|
| 状态 | 已定稿;实现已落地(见 docs/superpowers/plans/2026-07-15-oa-return-copy-new-instance.md) |
| 日期 | 2026-07-15 |
| 范围 | 打回语义、复制再发、审批进度去重、「已处理」列表、废弃同实例多轮与旧单关联 |
| 权威对齐 | 钉钉:打回 / 撤销 / 拒绝均终结当前审批单;再办 = 复制表单开新实例 |
| 关联 | 废止并取代 2026-07-15-oa-approval-progress-timeline-design.md 中 §3.3 同实例多轮、§4.3 多轮轴、§5.2 P1 同单再提交与「关联旧单」;保留该文 P0 进度树序与拒绝≠打回文案约定 |
实现 P1「同实例打回再提交 + 多轮进度 + sourceInstanceId 关联」后,产品实测发现:
done 查询未含 returned)。本文件按钉钉模式修订产品语义,并作为后续实现权威来源。
目标
source_instance_id 展示跳转)。非目标
source_instance_id / current_round / oa_instance_event 列或表(可保留兼容;业务路径不再依赖多轮 resubmit)。| 动作 | 操作者 | 本单状态 | 进度终态文案(建议) | 再办 |
|---|---|---|---|---|
| 打回 | 审批人 | returned(展示:已打回) |
审批人节点「已打回」+ 意见;不追加独立终态「已打回」行 | 复制表单 → 新实例 |
| 拒绝 | 审批人 | rejected(已拒绝) |
审批人「已拒绝」+「流程结束(已拒绝)」 | 同上 |
| 撤销 | 发起人 | cancelled(已撤销) |
「已撤销」 | 同上 |
running/returned 后再 resubmit 开第二轮。returned。kind=return「打回」节点。审批人打回且意见必填时:
returned,写入意见与完成时间。pending 任务 → cancelled。returned(终态,不可再同单提交)。oa_instance_event(审计可选);进度投影不得再追加独立打回节点。{returned, cancelled, rejected} 且当前用户为发起人。appId + 表单快照(及发起页需要的选人等)进入发起流;用户确认后 POST start,得到新 instanceId。copyFromInstanceId(仅前端预填,不入新实例关联字段)。若需后端预填接口,只读返回旧单 formData,不写 source_instance_id。resubmit_instance。order_num → create_time → id。build_progress_items 中对 event_type=return 追加的独立 kind=return 项。发起人 · 已提交
抄送人 · 已结束(抄送)
审批人 · 已打回 · 意见:…
拒绝 / 撤销示意不变(单轴终态),无旧单关联提示。
| 场景 | 规则 |
|---|---|
| 已处理 | kind=done 含 approved / rejected / returned |
| 我发起的 | returned 展示「已打回」(不用「待修改」) |
| 详情状态 | 同上 |
| 能力 | 处置 |
|---|---|
POST /instances/{id}/resubmit |
移除或返回明确废弃错误;前端不再调用 |
start(..., sourceInstanceId) 写库关联 + 详情「查看原单」 |
停止写入与展示;copyFrom 仅预填 |
current_round / 任务 round_no 多轮逻辑 |
业务路径不再递增多轮;字段可保留默认 1 |
设计器 allowReturn |
保留(控制是否出现打回按钮) |
| 日期 | 决议 |
|---|---|
| 2026-07-15 | 产品确认:对齐钉钉;打回=终态;再办=复制开新单;三种终态均可复制;不做旧单关联。 |
| 2026-07-15 | 废止同实例多轮与独立打回进度节点;修复已处理未含 returned。 |