feat: add P6 frontend console integration
This commit is contained in:
220
docs/P6-前端界面集成-开发落地说明.md
Normal file
220
docs/P6-前端界面集成-开发落地说明.md
Normal file
@@ -0,0 +1,220 @@
|
||||
# P6 前端界面集成开发落地说明
|
||||
|
||||
## 概述
|
||||
|
||||
P6 已完成基于 Vue 3 + Vite + Element Plus + Pinia + Vue Router 的前端控制台落地,并接入现有 Spring Boot 工程的 `/app/` 静态资源托管链路。
|
||||
|
||||
本阶段实际交付聚焦:
|
||||
|
||||
- 独立 `frontend/` 前端工程
|
||||
- 仪表盘、任务管理、文件上传、失败文件、元数据编辑、系统配置 6 个页面
|
||||
- Axios 封装、Pinia 全局状态、前端 API 路径适配
|
||||
- Spring Boot `/app/**` SPA 托管与真实构建产物集成
|
||||
|
||||
本阶段未纳入实现:
|
||||
|
||||
- GraalVM Native Image 真正适配与交付
|
||||
- 真实登录/鉴权流程
|
||||
- 独立日志页面
|
||||
|
||||
## 实现清单
|
||||
|
||||
### 前端工程与基础设施
|
||||
|
||||
- 新增 `frontend/package.json`
|
||||
- 新增 `frontend/vite.config.ts`
|
||||
- 新增 `frontend/src/main.ts`
|
||||
- 新增 `frontend/src/router/index.ts`
|
||||
- 新增 `frontend/src/router/routes.ts`
|
||||
- 新增 `frontend/src/layouts/AppLayout.vue`
|
||||
- 新增 `frontend/src/stores/user.ts`
|
||||
- 新增 `frontend/src/stores/config.ts`
|
||||
- 新增 `frontend/src/stores/app.ts`
|
||||
- 新增 `frontend/src/api/request.ts`
|
||||
- 新增 `frontend/src/api/modules/task.ts`
|
||||
- 新增 `frontend/src/api/modules/failFile.ts`
|
||||
- 新增 `frontend/src/api/modules/config.ts`
|
||||
- 新增 `frontend/src/api/modules/log.ts`
|
||||
- 新增 `frontend/src/api/modules/upload.ts`
|
||||
|
||||
### 页面与组件
|
||||
|
||||
- 仪表盘:`frontend/src/views/DashboardView.vue`
|
||||
- 任务管理:`frontend/src/views/TaskManagementView.vue`
|
||||
- 文件上传:`frontend/src/views/FileUploadView.vue`
|
||||
- 失败文件:`frontend/src/views/FailFileView.vue`
|
||||
- 元数据编辑:`frontend/src/views/MetadataEditorView.vue`
|
||||
- 系统配置:`frontend/src/views/SystemConfigView.vue`
|
||||
|
||||
核心页面组件已落地到以下目录:
|
||||
|
||||
- `frontend/src/components/dashboard/`
|
||||
- `frontend/src/components/task/`
|
||||
- `frontend/src/components/upload/`
|
||||
- `frontend/src/components/fail-file/`
|
||||
- `frontend/src/components/metadata/`
|
||||
- `frontend/src/components/config/`
|
||||
- `frontend/src/components/common/`
|
||||
|
||||
### 后端集成
|
||||
|
||||
- 新增 `src/main/java/com/music/metadata/controller/WebAppController.java`
|
||||
- 新增 `src/test/java/com/music/metadata/controller/WebAppControllerTest.java`
|
||||
- `pom.xml` 新增 `frontend-build` profile
|
||||
- 真实前端产物复制到 `src/main/resources/static/app/`
|
||||
|
||||
## 页面说明
|
||||
|
||||
### 1. 仪表盘
|
||||
|
||||
- 展示待处理任务数、已归档文件数、失败文件数
|
||||
- 最近任务按创建时间倒序展示
|
||||
- 使用 ECharts 展示处理分布图
|
||||
- 提供到任务、上传、失败文件、系统配置的快捷入口
|
||||
|
||||
### 2. 任务管理
|
||||
|
||||
- 支持分页、状态筛选、进度展示
|
||||
- 支持暂停、继续、终止
|
||||
- 任务详情通过 Element Plus `Drawer` 展示
|
||||
- 报告查看通过 Element Plus `Dialog` 展示
|
||||
- 支持 CSV / JSON 导出
|
||||
|
||||
### 3. 文件上传
|
||||
|
||||
- 页面使用 `simple-uploader.js` 核心实例进行 Vue 3 下的分片队列接入
|
||||
- 保留 `identifier`、`chunkNumber`、`totalChunks`、`filename`、`totalSize` 上传契约
|
||||
- 支持自动创建任务开关
|
||||
- 合并返回 `sourcePath` 时自动建任务,否则保留手动创建回退
|
||||
- 自动建任务失败后保留已合并状态
|
||||
|
||||
说明:
|
||||
|
||||
- `vue-simple-uploader@0.7.6` 为 Vue 2 wrapper,无法直接接入当前 Vue 3.4
|
||||
- 最终采用其底层依赖 `simple-uploader.js` 进行 Vue 3 可运行集成
|
||||
|
||||
### 4. 失败文件
|
||||
|
||||
- 支持 keyword / failType / status 筛选
|
||||
- 支持分页
|
||||
- 支持批量重处理,前端循环调用单条提交接口
|
||||
- 可跳转到元数据编辑页,并在处理后恢复列表上下文
|
||||
|
||||
### 5. 元数据编辑
|
||||
|
||||
- 加载失败文件详情
|
||||
- 支持标题、艺术家、专辑、流派、歌词编辑
|
||||
- 支持封面上传输入与占位预览
|
||||
- 支持草稿保存和提交重处理
|
||||
- 缺少媒体 URL 时按占位状态展示
|
||||
|
||||
### 6. 系统配置
|
||||
|
||||
- 配置按分组展示
|
||||
- 敏感值默认掩码展示,可切换编辑
|
||||
- 目录型配置提供路径建议和绝对路径提示
|
||||
- 保存后刷新 Pinia 配置缓存
|
||||
|
||||
## API 映射
|
||||
|
||||
前端按真实后端路径适配,页面层不感知差异。
|
||||
|
||||
### 任务接口
|
||||
|
||||
- `POST /api/tasks/create`
|
||||
- `GET /api/tasks/list`
|
||||
- `GET /api/tasks/{taskId}`
|
||||
- `POST /api/tasks/{taskId}/pause`
|
||||
- `POST /api/tasks/{taskId}/resume`
|
||||
- `POST /api/tasks/{taskId}/terminate`
|
||||
- `GET /api/tasks/{taskId}/report`
|
||||
- `GET /api/tasks/{taskId}/report/csv`
|
||||
- `GET /api/tasks/{taskId}/report/json`
|
||||
|
||||
### 失败文件接口
|
||||
|
||||
- `GET /api/v1/fail-file/list`
|
||||
- `GET /api/v1/fail-file/{id}/detail`
|
||||
- `PUT /api/v1/fail-file/{id}/edit`
|
||||
- `POST /api/v1/fail-file/{id}/submit`
|
||||
|
||||
### 系统配置接口
|
||||
|
||||
- `GET /api/configs/list`
|
||||
- `GET /api/configs/{configKey}`
|
||||
- `PUT /api/configs/update`
|
||||
- `PUT /api/configs/batch-update`
|
||||
|
||||
### 日志接口
|
||||
|
||||
- `POST /api/logs/query`
|
||||
- `POST /api/logs/export`
|
||||
|
||||
### 上传接口
|
||||
|
||||
- `POST /api/v1/file/upload`
|
||||
- `POST /api/v1/file/upload/merge`
|
||||
|
||||
## 验证命令
|
||||
|
||||
本阶段 fresh verification 使用了以下命令:
|
||||
|
||||
### 前端基础验证
|
||||
|
||||
```bash
|
||||
cd frontend && npm install && npm run test -- --run src/tests/scaffold.spec.ts src/tests/router.spec.ts src/tests/config-store.spec.ts src/tests/request.spec.ts src/tests/task-utils.spec.ts src/tests/layout-shell.spec.ts
|
||||
```
|
||||
|
||||
结果:通过,`6` 个 test files,`19` 个 tests。
|
||||
|
||||
### 前端功能与全量验证
|
||||
|
||||
```bash
|
||||
cd frontend && npm install && npm run test -- --run
|
||||
```
|
||||
|
||||
结果:通过,`8` 个 test files,`28` 个 tests。
|
||||
|
||||
### 前端构建验证
|
||||
|
||||
```bash
|
||||
cd frontend && npm install && npm run build
|
||||
```
|
||||
|
||||
结果:通过,生成 `dist/index.html` 与 `dist/assets/*`。
|
||||
|
||||
### 后端 `/app/**` 托管验证
|
||||
|
||||
```bash
|
||||
mvn test -Dtest=WebAppControllerTest
|
||||
```
|
||||
|
||||
结果:通过,`12` 个 tests。
|
||||
|
||||
### 前端构建集成验证
|
||||
|
||||
```bash
|
||||
mvn -Pfrontend-build process-resources
|
||||
```
|
||||
|
||||
结果:通过,可将 `frontend/dist` 复制到 `src/main/resources/static/app/`。
|
||||
|
||||
## 暂缓项
|
||||
|
||||
- GraalVM Native Image 真实可运行镜像交付
|
||||
- 真实登录与 token 鉴权流程
|
||||
- 独立日志管理页面
|
||||
- 前端大包拆分优化
|
||||
- 测试 warning 清理(Vue Router warning、Testing Library `fireEvent.change` warning)
|
||||
|
||||
## 验收结论
|
||||
|
||||
P6 当前已完成前端工程、核心页面、Spring Boot 静态资源托管、前端构建接入与基础验证链路。
|
||||
|
||||
基于 fresh verification:
|
||||
|
||||
- 前端全量测试通过(`28/28`)
|
||||
- 前端构建通过
|
||||
- 后端 `/app/**` 托管测试通过(`12/12`)
|
||||
|
||||
当前剩余问题主要为 warning 与后续优化项,不影响本阶段交付范围内的实现与构建验证结果。
|
||||
Reference in New Issue
Block a user