Files
zkxw/docs/superpowers/specs/2026-07-31-oa-app-copy-design.md
T
zlwuandCursor 06db3bc966 feat(permission): replace OA roles with post-bound roles and assignee posts
Unify effective roles via post-role bindings, remove dedicated OA role UI, and update OA assignee resolution plus related SQL/docs.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-04 17:41:04 +08:00

2.0 KiB
Raw Blame History

OA 审批应用「复制」设计

项 内容
状态 已定稿
日期 2026-07-31
范围 审批管理页复制应用(基础信息 + 表单/流程/高级设置草稿)
页面 /#/system-manage/oa-approval/apps

1. 目标与非目标

目标

  • 在审批管理卡片「更多」中提供「复制」。
  • 一键生成与源流程内容一致的新应用;名称 = 原名称 +「复制」。
  • 内容来源:优先当前草稿;无草稿则用最新已发布版;皆无则空草稿。
  • 副本始终为未发布草稿;复制成功后留在列表并刷新。

非目标

  • 不自动发布副本。
  • 不复制历史版本、实例、任务。
  • 不跳转设计器。

2. 行为(SHALL)

  1. 入口:卡片「更多」→「复制」(位于「编辑基础」与「删除」之间)。
  2. 点击后直接执行(无二次确认);成功 Toast;刷新列表。
  3. 新名称:{appName}复制。若超过 50 字:保留后缀「复制」,前缀截断使总长 ≤ 50。
  4. 复制字段:
    • 应用:groupId、iconUrl、description、initiatorScope、initiatorUserIds、adminScope、adminUserIds、status、orderNum、remark
    • 版本草稿:formSchemaJson、flowTreeJson、advancedSettingsJson(深拷贝 JSON)
  5. 新应用仅有 version_no=1 的 draft;is_latest_published=0;列表无已发布版本标签。
  6. 租户隔离与创建应用权限一致(admin / super_admin)。

3. API

POST /web/admin/oa-approval/apps/{app_id}/copy

  • 成功:返回新应用字典(与 create 一致),message「复制成功」。
  • 源不存在:400「应用不存在」。

4. 前端

  • fetchCopyOaApp(id) in web-admin/src/api/oaApproval.ts
  • apps/index.vue:下拉项 + handleCopy;图标可用 CopyDocument

5. 自检

  • 无未决占位符
  • 与口头确认一致(草稿优先 / 未发布 / 留列表)
  • 范围仅应用复制,不涉及实例复制