Files
zkxw/docs/superpowers/plans/2026-07-31-oa-app-copy.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

1.6 KiB
Raw Blame History

OA 审批应用复制 Implementation Plan

For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (- [ ]) syntax for tracking.

Goal: 在审批管理页支持一键复制审批应用(含表单/流程草稿),名称为原名+「复制」。

Architecture: 后端 POST /apps/{id}/copy 原子复制 oa_app + 一份草稿版本;前端「更多」菜单调用并刷新列表。

Tech Stack: FastAPI + SQLAlchemy;Vue 3 + Element Plus

Spec: docs/superpowers/specs/2026-07-31-oa-app-copy-design.md


Task 1: 后端 copy_app CRUD + API

Files:

  • Modify: backend/app/crud/oa_approval.py

  • Modify: backend/app/api/oa_approval.py

  • Step 1: 在 oa_approval.py CRUD 增加 copy_app:查源 app → 选草稿或最新发布 → create_app 等价新建(名称加「复制」并截断)→ 用源 JSON 写入 draft 版本(覆盖 create 时空草稿)。

  • Step 2: 增加路由 POST /apps/{app_id}/copy,返回 _app_to_dict(..., has_draft=True)。

Task 2: 前端 API + 菜单

Files:

  • Modify: web-admin/src/api/oaApproval.ts

  • Modify: web-admin/src/views/oa-approval/apps/index.vue

  • Step 1: 增加 fetchCopyOaApp

  • Step 2: 「更多」增加「复制」;handleCopy 调用后 loadData

Task 3: 验证

  • 手工:复制有草稿 / 仅已发布 / 空应用;名称与未发布状态正确
  • 更新 graph:./scripts/update-graph.sh all(或 backend + frontend)