Files
ccdi/openspec/changes/add-project-management/tasks.md
2026-01-30 14:15:21 +08:00

258 lines
8.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 SQLMyBatis 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天** |