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>
37 lines
1.6 KiB
Markdown
37 lines
1.6 KiB
Markdown
# 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)
|