258 lines
8.2 KiB
Markdown
258 lines
8.2 KiB
Markdown
# Tasks: 项目管理模块开发
|
||
|
||
本文档列出了实现项目管理模块的具体开发任务,按优先级和依赖关系排序。
|
||
|
||
## 阶段1:基础架构搭建
|
||
|
||
### 1.1 创建数据库表
|
||
- [ ] 创建 `ccdi_project` 表
|
||
- [ ] 创建 `ccdi_project_person` 表
|
||
- [ ] 创建索引和外键约束
|
||
- [ ] 准备测试数据
|
||
|
||
**验证**:执行SQL脚本,表结构创建成功,可以使用 `DESC ccdi_project;` 查看表结构
|
||
|
||
### 1.2 创建后端模块结构
|
||
- [ ] 创建 `ruoyi-dpc` 新模块
|
||
- [ ] 配置模块 `pom.xml` 依赖
|
||
- [ ] 在根 `pom.xml` 中添加模块引用
|
||
- [ ] 在 `ruoyi-admin` 的 `pom.xml` 中添加对 `ruoyi-dpc` 的依赖
|
||
- [ ] 配置 Spring 扫描 `com.ruoyi.dpc.controller` 包
|
||
- [ ] 创建包结构:`com.ruoyi.dpc.controller`, `com.ruoyi.dpc.domain`, `com.ruoyi.dpc.mapper`, `com.ruoyi.dpc.service`
|
||
|
||
**验证**:项目可以正常编译启动
|
||
|
||
### 1.3 创建实体类和DTO
|
||
- [ ] 创建 `CcdiProject.java` 实体类(使用 `@Data` 注解,不继承 BaseEntity)
|
||
- [ ] 创建 `CcdiProjectPerson.java` 实体类(使用 `@Data` 注解)
|
||
- [ ] 创建 `CcdiProjectVO.java` 视图对象
|
||
- [ ] 创建 `CcdiProjectQueryVO.java` 查询视图对象
|
||
- [ ] 创建 `CcdiProjectDTO.java` 数据传输对象(新增/修改)
|
||
- [ ] 创建 `CcdiProjectQueryDTO.java` 查询DTO
|
||
- [ ] 创建 `CcdiProjectImportDTO.java` 导入DTO
|
||
- [ ] 为审计字段添加 `@TableField` 注解配置自动填充
|
||
|
||
**验证**:实体类和DTO编译通过,字段注解正确
|
||
|
||
### 1.4 创建DTO转换工具类
|
||
- [ ] 创建 `CcdiProjectConverter.java` 工具类
|
||
- [ ] 实现 `toEntity(CcdiProjectDTO)` 方法
|
||
- [ ] 实现 `toVO(CcdiProject)` 方法
|
||
- [ ] 实现 `toVOList(List<CcdiProject>)` 方法
|
||
|
||
**验证**:转换逻辑正确,覆盖所有字段
|
||
|
||
### 1.5 配置审计字段自动填充
|
||
- [ ] 创建 `CcdiMetaObjectHandler.java` 实现 `MetaObjectHandler` 接口
|
||
- [ ] 实现 `insertFill` 方法自动填充 `create_by` 和 `create_time`
|
||
- [ ] 实现 `updateFill` 方法自动填充 `update_by` 和 `update_time`
|
||
- [ ] 从 Spring Security 上下文获取当前登录用户
|
||
- [ ] 将处理器注册为 Spring 组件(`@Component`)
|
||
|
||
**验证**:插入和更新操作时审计字段自动填充
|
||
|
||
## 阶段2:数据访问层开发
|
||
|
||
### 2.1 创建Mapper接口
|
||
- [ ] 创建 `CcdiProjectMapper.java`(使用 MyBatis Plus)
|
||
- [ ] 创建 `CcdiProjectPersonMapper.java`(使用 MyBatis Plus)
|
||
|
||
### 2.2 创建Mapper XML
|
||
- [ ] 创建 `CcdiProjectMapper.xml`
|
||
- [ ] 创建 `CcdiProjectPersonMapper.xml`
|
||
- [ ] 定义基础CRUD SQL(MyBatis Plus 自动生成)
|
||
- [ ] 定义关联查询SQL(项目+人员)
|
||
|
||
**验证**:可以使用MyBatis Log查看SQL执行正确
|
||
|
||
## 阶段3:服务层开发
|
||
|
||
### 3.1 创建Service接口
|
||
- [ ] 创建 `ICcdiProjectService.java`
|
||
- [ ] 定义方法签名:
|
||
- `List<CcdiProject> selectProjectList(CcdiProject project)`
|
||
- `CcdiProject selectProjectById(Long projectId)`
|
||
- `int insertProject(CcdiProject project)`
|
||
- `int updateProject(CcdiProject project)`
|
||
- `int deleteProjectByIds(Long[] projectIds)`
|
||
- `boolean checkProjectNameUnique(CcdiProject project)`
|
||
- `void archiveProject(Long projectId)`
|
||
- `void reanalyzeProject(Long projectId)`
|
||
|
||
### 3.2 实现Service
|
||
- [ ] 创建 `CcdiProjectServiceImpl.java`
|
||
- [ ] 使用 `@Resource` 注入依赖
|
||
- [ ] 实现基础CRUD方法
|
||
- [ ] 实现项目名称唯一性校验
|
||
- [ ] 实现项目归档逻辑(状态检查、PDF生成)
|
||
- [ ] 实现重新分析逻辑(异步任务)
|
||
|
||
**验证**:单元测试通过,业务逻辑符合需求
|
||
|
||
## 阶段4:控制器层开发
|
||
|
||
### 4.1 创建Controller
|
||
- [ ] 创建 `CcdiProjectController.java`(位于 `ruoyi-dpc` 模块的 `com.ruoyi.dpc.controller` 包中)
|
||
- [ ] 实现列表查询接口 `GET /dpc/project/list`
|
||
- [ ] 实现详情查询接口 `GET /dpc/project/{id}`
|
||
- [ ] 实现新增接口 `POST /dpc/project`
|
||
- [ ] 实现修改接口 `PUT /dpc/project`
|
||
- [ ] 实现删除接口 `DELETE /dpc/project/{ids}`
|
||
- [ ] 实现归档接口 `POST /dpc/project/archive/{id}`
|
||
- [ ] 实现重新分析接口 `POST /dpc/project/reanalyze/{id}`
|
||
- [ ] 实现导入历史项目接口 `POST /dpc/project/import`
|
||
|
||
### 4.2 添加权限注解
|
||
- [ ] 为所有接口添加 `@PreAuthorize` 注解
|
||
- [ ] 配置权限字符串:
|
||
- `dpc:project:list`
|
||
- `dpc:project:query`
|
||
- `dpc:project:add`
|
||
- `dpc:project:edit`
|
||
- `dpc:project:remove`
|
||
- `dpc:project:archive`
|
||
- `dpc:project:reanalyze`
|
||
|
||
### 4.3 添加操作日志
|
||
- [ ] 为关键操作添加 `@Log` 注解
|
||
- [ ] 配置业务类型
|
||
|
||
**验证**:使用Postman测试所有接口,返回正确
|
||
|
||
## 阶段4.5:生成API文档
|
||
|
||
### 4.5.1 生成接口文档
|
||
- [ ] 使用 SpringDoc/Knife4j 生成 API 文档
|
||
- [ ] 在项目文件目录下导出 API 文档
|
||
|
||
**验证**:API 文档生成成功,包含所有接口
|
||
|
||
## 阶段5:前端API开发
|
||
|
||
### 5.1 创建API文件
|
||
- [ ] 创建 `ruoyi-ui/src/api/dpcProject.js`
|
||
- [ ] 封装所有API请求方法:
|
||
- `listProject(query)`
|
||
- `getProject(projectId)`
|
||
- `addProject(data)`
|
||
- `updateProject(data)`
|
||
- `delProject(projectIds)`
|
||
- `archiveProject(projectId)`
|
||
- `reanalyzeProject(projectId)`
|
||
- `importProject(data)`
|
||
|
||
**验证**:API方法可以正常调用
|
||
|
||
## 阶段6:前端页面开发
|
||
|
||
### 6.1 创建项目列表页
|
||
- [ ] 创建 `ruoyi-ui/src/views/dpcProject/index.vue`
|
||
- [ ] 实现搜索区域(项目名称输入框、搜索按钮)
|
||
- [ ] 实现操作按钮(新建、导入历史项目)
|
||
- [ ] 实现数据表格(项目信息展示)
|
||
- [ ] 实现状态标签(进行中/已完成/已归档)
|
||
- [ ] 实现操作列(进入项目、查看结果、重新分析、归档)
|
||
|
||
### 6.2 创建新增/编辑弹窗
|
||
- [ ] 创建 `ruoyi-ui/src/views/dpcProject/add-or-edit.vue`
|
||
- [ ] 实现项目基本信息表单(项目名称、描述、时间范围)
|
||
- [ ] 实现人员选择器(多选)
|
||
- [ ] 实现表单验证
|
||
|
||
### 6.3 创建导入历史项目弹窗
|
||
- [ ] 创建 `ruoyi-ui/src/views/dpcProject/import-history.vue`
|
||
- [ ] 实现历史项目列表(只显示已完成项目)
|
||
- [ ] 实现项目详情预览
|
||
- [ ] 实现新项目配置
|
||
|
||
**验证**:页面显示正常,交互流畅
|
||
|
||
## 阶段7:菜单与权限配置
|
||
|
||
### 7.1 创建系统菜单
|
||
- [ ] 在系统管理 > 菜单管理中创建"项目管理"菜单
|
||
- [ ] 配置菜单图标和路由(路径:`dpcProject`)
|
||
- [ ] 创建子菜单/按钮权限
|
||
|
||
### 7.2 配置角色权限
|
||
- [ ] 为管理员角色分配项目管理权限
|
||
- [ ] 为其他角色配置适当权限
|
||
|
||
**验证**:登录后可以看到项目管理菜单
|
||
|
||
## 阶段8:测试与优化
|
||
|
||
### 8.1 功能测试
|
||
- [ ] 测试项目创建流程
|
||
- [ ] 测试项目搜索功能
|
||
- [ ] 测试项目状态流转
|
||
- [ ] 测试项目归档功能
|
||
- [ ] 测试重新分析功能
|
||
- [ ] 测试导入历史项目功能
|
||
|
||
### 8.2 边界测试
|
||
- [ ] 测试必填字段验证
|
||
- [ ] 测试项目名称唯一性
|
||
- [ ] 测试状态权限控制
|
||
- [ ] 测试数据权限
|
||
|
||
### 8.3 性能优化
|
||
- [ ] 优化SQL查询
|
||
- [ ] 添加必要的数据库索引
|
||
- [ ] 优化大数据量列表加载
|
||
|
||
**验证**:所有测试用例通过,无明显性能问题
|
||
|
||
## 阶段9:文档与交付
|
||
|
||
### 9.1 代码注释
|
||
- [ ] 为所有公开方法添加JavaDoc注释
|
||
- [ ] 为复杂逻辑添加行内注释
|
||
|
||
### 9.2 更新系统文档
|
||
- [ ] 更新数据库设计文档
|
||
- [ ] 更新API接口文档
|
||
- [ ] 更新用户操作手册
|
||
|
||
**验证**:文档完整、准确
|
||
|
||
## 任务依赖关系
|
||
|
||
```
|
||
阶段1 (基础架构)
|
||
↓
|
||
阶段2 (数据访问层) → 阶段3 (服务层) → 阶段4 (控制器层) → 阶段4.5 (API文档)
|
||
↓
|
||
阶段5 (前端API) ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ←
|
||
↓
|
||
阶段6 (前端页面)
|
||
↓
|
||
阶段7 (菜单权限)
|
||
↓
|
||
阶段8 (测试优化)
|
||
↓
|
||
阶段9 (文档交付)
|
||
```
|
||
|
||
## 可并行开发任务
|
||
|
||
以下任务可以并行开发:
|
||
- 阶段2和阶段3(后端不同层级)
|
||
- 阶段5和阶段6的前端页面组件
|
||
- 阶段7的菜单配置可以在后端开发完成后进行
|
||
|
||
## 预计工作量
|
||
|
||
| 阶段 | 预计工时 |
|
||
|-----|---------|
|
||
| 阶段1 | 0.5天 |
|
||
| 阶段2 | 0.5天 |
|
||
| 阶段3 | 1天 |
|
||
| 阶段4 | 1天 |
|
||
| 阶段5 | 0.5天 |
|
||
| 阶段6 | 2天 |
|
||
| 阶段7 | 0.5天 |
|
||
| 阶段8 | 1天 |
|
||
| 阶段9 | 0.5天 |
|
||
| **总计** | **7.5天** |
|