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

8.2 KiB
Raw Blame History

Tasks: 项目管理模块开发

本文档列出了实现项目管理模块的具体开发任务,按优先级和依赖关系排序。

阶段1基础架构搭建

1.1 创建数据库表

  • 创建 ccdi_project
  • 创建 ccdi_project_person
  • 创建索引和外键约束
  • 准备测试数据

验证执行SQL脚本表结构创建成功可以使用 DESC ccdi_project; 查看表结构

1.2 创建后端模块结构

  • 创建 ruoyi-dpc 新模块
  • 配置模块 pom.xml 依赖
  • 在根 pom.xml 中添加模块引用
  • ruoyi-adminpom.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_bycreate_time
  • 实现 updateFill 方法自动填充 update_byupdate_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天