Files
wenzi/docs/plans/2026-02-10-admin-best-practices-extensions.md

154 lines
4.6 KiB
Markdown
Raw Permalink Normal View History

# Admin Best-Practice Extensions Implementation Plan
> **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task.
**Goal:** 按行业最佳实践补齐 Admin 前端未完成能力(列表统一、导出字段选择、审批/风控/奖励/用户闭环、权限矩阵)。
**Architecture:** 通过通用组件FilterPaginationBar + ListSection + ExportFieldPanel统一列表体验以 demo store 驱动闭环操作并写入审计。
**Tech Stack:** Vue 3, Pinia, Vue Router, Vite, TypeScript, Tailwind
---
## Constraints
- 不新增第三方依赖。
- 不执行 git commit如需提交请明确指示
---
### Task 1: 统一列表组件ListSection
**Files:**
- Create: `frontend/admin/src/components/ListSection.vue`
- Modify: `frontend/admin/src/views/ActivityListView.vue`
- Modify: `frontend/admin/src/views/RewardsView.vue`
- Modify: `frontend/admin/src/views/RiskView.vue`
- Modify: `frontend/admin/src/views/AuditLogView.vue`
- Modify: `frontend/admin/src/views/ApprovalCenterView.vue`
- Modify: `frontend/admin/src/views/UsersView.vue`
- Modify: `frontend/admin/src/views/NotificationsView.vue`
**Step 1: Create ListSection skeleton**
- Slots: `title`, `subtitle`, `filters`, `actions`, default list slot, `empty`, `footer`.
**Step 2: Replace per-page header wrappers**
- Use ListSection for title + filters + actions, keep FilterPaginationBar inside.
**Step 3: Verify layout parity**
- Manual check each page layout.
---
### Task 2: 导出字段选择ExportFieldPanel
**Files:**
- Create: `frontend/admin/src/components/ExportFieldPanel.vue`
- Create: `frontend/admin/src/composables/useExportFields.ts`
- Modify: `frontend/admin/src/views/ActivityDetailView.vue`
- Modify: `frontend/admin/src/views/RewardsView.vue`
- Modify: `frontend/admin/src/views/AuditLogView.vue`
- Modify: `frontend/admin/src/App.vue`
**Step 1: ExportFieldPanel**
- Props: `fields`, `selected`, `title`.
- Emits: `update:selected`, `export`.
**Step 2: useExportFields**
- Encapsulate selection state + default fields.
**Step 3: Wire to pages**
- Replace fixed导出 with字段选择面板 + 导出按钮。
---
### Task 3: 审批流补齐(规则/SLA/通知)
**Files:**
- Modify: `frontend/admin/src/views/ApprovalCenterView.vue`
- Modify: `frontend/admin/src/services/demo/DemoDataService.ts`
- Modify: `frontend/admin/src/views/NotificationsView.vue`
**Step 1: Add SLA hints**
- Display “待审批时长/超时” badges.
**Step 2: Batch reject reason**
- Add input for batch rejection reason.
**Step 3: Notify**
- Append notification entries for approval decisions.
---
### Task 4: 风控闭环(告警→处置→审计)
**Files:**
- Modify: `frontend/admin/src/views/RiskView.vue`
- Modify: `frontend/admin/src/services/demo/DemoDataService.ts`
- Modify: `frontend/admin/src/stores/audit.ts`
**Step 1: Add alert list**
- Alert status: 未处理/处理中/已关闭.
**Step 2: Add actions**
- Mark as processing/closed with audit log.
---
### Task 5: 奖励闭环(批次/重试/回滚原因)
**Files:**
- Modify: `frontend/admin/src/views/RewardsView.vue`
- Modify: `frontend/admin/src/services/demo/DemoDataService.ts`
**Step 1: Add batch info**
- Show batch id / status.
**Step 2: Add retry & rollback reason**
- Input reason and log to audit.
---
### Task 6: 用户闭环(邀请/到期/重发/历史筛选)
**Files:**
- Modify: `frontend/admin/src/views/InviteUserView.vue`
- Modify: `frontend/admin/src/views/UserDetailView.vue`
- Modify: `frontend/admin/src/stores/users.ts`
**Step 1: Invite list + resend/expire**
- Add invite list with actions and status.
**Step 2: Role history filters**
- Filter by status/time range.
---
### Task 7: 权限矩阵页
**Files:**
- Create: `frontend/admin/src/views/PermissionsView.vue`
- Modify: `frontend/admin/src/router/index.ts`
- Modify: `frontend/admin/src/App.vue`
**Step 1: Render matrix**
- Roles vs permissions grid (read-only).
---
## Manual Verification (post-implementation)
1. 每个页面列表均使用 ListSection + FilterPaginationBar。
2. 导出弹出字段选择面板并生成 CSV。
3. 审批 SLA/拒绝原因/通知可见。
4. 风控告警可处置并写审计。
5. 奖励批次/回滚原因可操作。
6. 邀请列表支持重发/到期,用户历史可筛选。
7. 权限矩阵页可访问。
---
## Execution Handoff
Plan complete and saved to `docs/plans/2026-02-10-admin-best-practices-extensions.md`. Two execution options:
1. Subagent-Driven (this session) - I dispatch fresh subagent per task, review between tasks, fast iteration
2. Parallel Session (separate) - Open new session with executing-plans, batch execution with checkpoints
Which approach?