feat(approval): Q10 ApprovalWorkflowPage 巨型组件拆分 (705L→167L, -76%)
提取 4 个独立文件到 approval-workflow/ 子目录: - types.ts (93L): 接口+常量+工具函数 - UserSelectInline.tsx (96L): 用户多选下拉组件 - WorkflowEditorModal.tsx (272L): 工作流编辑器弹窗 - WorkflowCard.tsx (134L): 工作流卡片组件 验证: tsc -b=0, npm build✓ (16.99s), ESLint errors=0, 17/17 测试通过
This commit is contained in:
1 parent
1f8abc0bbc
commit
6ba424a8bc
7 files changed
+650
-560
No files matched your search
+33
@@ -481,6 +481,39 @@ services/api.ts (1324L)
|
||||
| Q7 | 前端巨型组件拆分(AgentCLI 814L→521L,提取工具栏+常量+空状态+滚动按钮) | P0 | **done** |
|
||||
| Q8 | 前端巨型组件拆分(SystemSettingsTab 754L→173L,提取通用/安全/LDAP 3 个子 Tab) | P0 | **done** |
|
||||
| Q9 | 前端巨型组件拆分(NamespaceResourcePage 719L→300L,提取 RESOURCE_CONFIG + PodDetailDialog) | P0 | **done** |
|
||||
| Q10 | 前端巨型组件拆分(ApprovalWorkflowPage 705L→167L,提取 types + UserSelectInline + WorkflowEditorModal + WorkflowCard) | P0 | **done** |
|
||||
|
||||
---
|
||||
|
||||
## Q10: 前端巨型组件拆分 — ApprovalWorkflowPage [done]
|
||||
|
||||
**问题**: `ApprovalWorkflowPage.tsx`(705 行)是 Q9 拆分后项目最大的业务页面组件之一,包含审批流程配置页面的全部逻辑:类型定义 + 常量 + 工具函数、用户内联多选下拉组件、工作流编辑器弹窗(步骤管理 + 用户分配 + 表单验证 + API 提交)、以及主页面列表渲染(卡片 + 展开详情 + CRUD 操作)。单文件过大导致维护困难、代码导航低效。
|
||||
|
||||
**已完成 (2026-07-07)**:
|
||||
|
||||
将类型/常量/工具、用户选择组件、编辑器弹窗、卡片组件提取为 `approval-workflow/` 子目录下的独立文件:
|
||||
|
||||
| 新文件 | 行数 | 职责 |
|
||||
|--------|------|------|
|
||||
| `types.ts` | 93 | WorkflowStep/WorkflowItem/UserItem/StepDraft 接口 + STEP_TYPE_COLORS/ICONS 常量 + parseApproverIds/resolveAdminId/buildDefaultSteps 工具函数 + EXECUTE_ELIGIBLE_ROLES 角色白名单 |
|
||||
| `UserSelectInline.tsx` | 96 | 用户内联多选下拉组件(fixed 定位 + 全选/清空 + 标签展示 + 角色徽章) |
|
||||
| `WorkflowEditorModal.tsx` | 272 | 工作流编辑器弹窗(名称/分类/描述表单 + 步骤增删移改 + 审批人分配 + 表单验证 + API 提交) |
|
||||
| `WorkflowCard.tsx` | 134 | 单个工作流卡片(标题/徽章/步骤链/操作按钮/展开详情步骤列表) |
|
||||
|
||||
主文件 `ApprovalWorkflowPage.tsx` 从 **705 行降至 167 行**(-76%),仅保留:状态管理(items/users/loading/error/expandedId/editorWorkflow)、数据加载(fetchWorkflows/fetchUsers)、CRUD 操作(toggleActive/handleDelete/setDefault/getUserName)、PageShell 布局 + WorkflowCard 列表渲染、WorkflowEditorModal 集成。
|
||||
|
||||
**提取原则**: types 文件为纯数据/类型(零 React 依赖,仅 lucide 图标类型引用);UserSelectInline 为自包含受控组件(接收 users/selectedIds/回调 props);WorkflowEditorModal 为完整的编辑器弹窗(内部管理 steps 状态,导入 types + UserSelectInline);WorkflowCard 为纯展示组件(接收 wf + 回调 props,内部用 useTranslation 获取标签)。零逻辑变更。
|
||||
|
||||
**验收标准**:
|
||||
- [x] ApprovalWorkflowPage.tsx 从 705 行降至 **167 行**(-76%)
|
||||
- [x] 4 个提取的文件全部 < 275 行(最大 WorkflowEditorModal 272 行)
|
||||
- [x] `tsc -b` 零错误
|
||||
- [x] `npm run build` 零错误(✓ built in 16.99s)
|
||||
- [x] ESLint errors 保持 **0**(approval-workflow/ 目录零 warnings)
|
||||
- [x] `go build` 零错误
|
||||
- [x] 17/17 集成回归测试通过(零回归)
|
||||
- [x] Docker 部署 healthy
|
||||
- [x] 审批工作流配置页功能不变(列表/新建/编辑/删除/启用停用/设默认/展开详情全部正常)
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in new issue
Block a user