# Spec: 项目管理能力 ## 概述 本规范定义了项目管理模块的核心能力,包括项目的创建、查询、状态管理和归档功能。 --- ## ADDED Requirements ### Requirement: 项目列表查询 系统 MUST 允许用户查询所有项目列表,支持按项目名称进行模糊搜索。 #### Scenario: 查询所有项目 **Given** 用户已登录系统并具有项目查看权限 **When** 用户进入项目管理页面 **Then** 系统显示所有项目列表,包括项目名称、描述、创建时间、状态、目标人数、预警人数 #### Scenario: 按名称搜索项目 **Given** 用户在项目管理页面 **When** 用户在搜索框输入"Q1初核"并点击搜索 **Then** 系统显示所有包含"Q1初核"的项目 #### Scenario: 项目状态标识 **Given** 项目列表中有多个不同状态的项目 **When** 用户查看项目列表 **Then** 进行中的项目显示蓝色标签,已完成的项目显示绿色标签,已归档的项目显示灰色标签 #### Scenario: 预警人数动态更新 **Given** 存在状态为"进行中"的项目 **When** 用户刷新项目列表 **Then** 预警人数显示最新的统计值 --- ### Requirement: 创建新项目 系统 MUST 允许用户创建新的初核项目,填写项目基本信息并选择参与人员。 #### Scenario: 创建标准项目 **Given** 用户在项目管理页面 **When** 用户点击"新建项目"按钮 **Then** 系统打开新增项目弹窗,包含项目名称、项目描述、时间范围、人员选择字段 #### Scenario: 必填字段验证 **Given** 用户新增项目时未填写项目名称 **When** 用户点击"确定"按钮 **Then** 系统提示"项目名称不能为空" #### Scenario: 至少选择一名人员 **Given** 用户新增项目时未选择任何人员 **When** 用户点击"确定"按钮 **Then** 系统提示"请至少选择一名参与人员" #### Scenario: 创建成功 **Given** 用户填写了完整的项目信息 **When** 用户点击"确定"按钮 **Then** 系统创建项目并提示"新增成功",项目列表刷新显示新项目 --- ### Requirement: 导入历史项目 系统 MUST 允许用户从已完成的历史项目导入配置,快速创建新项目。 #### Scenario: 查看历史项目列表 **Given** 用户点击"导入历史项目"按钮 **When** 系统打开导入历史项目弹窗 **Then** 系统显示所有已完成状态的历史项目列表 #### Scenario: 选择历史项目 **Given** 用户在导入历史项目弹窗中 **When** 用户选择一个历史项目 **Then** 系统显示该项目的详细信息(人员范围、配置等) #### Scenario: 复制配置创建新项目 **Given** 用户选择了历史项目并填写了新项目名称 **When** 用户点击"确定"按钮 **Then** 系统创建新项目,复制原项目的人员和配置,状态为"进行中" --- ### Requirement: 项目状态管理 系统 MUST 支持项目状态的流转和管理。 #### Scenario: 进入进行中的项目 **Given** 存在状态为"进行中"的项目 **When** 用户点击"进入项目"按钮 **Then** 系统跳转到该项目的工作台页面 #### Scenario: 查看已完成项目结果 **Given** 存在状态为"已完成"的项目 **When** 用户点击"查看结果"按钮 **Then** 系统跳转到该项目的初核结果总览页面 #### Scenario: 重新分析已完成项目 **Given** 存在状态为"已完成"的项目 **When** 用户点击"重新分析"按钮 **Then** 系统基于原有数据重新运行风险模型,更新预警人数和结果 #### Scenario: 重新分析权限控制 **Given** 用户没有重新分析的权限 **When** 用户查看项目列表 **Then** 不显示"重新分析"按钮 --- ### Requirement: 项目归档 系统 MUST 允许用户将已结束的项目归档,并生成PDF归档文件。 #### Scenario: 归档已完成项目 **Given** 存在状态为"已完成"的项目 **When** 用户点击"归档"按钮 **Then** 系统生成PDF归档文件,更新项目状态为"已归档" #### Scenario: 归档状态校验 **Given** 存在状态为"进行中"的项目 **When** 用户尝试归档该项目 **Then** 系统提示"只能归档已完成的项目" #### Scenario: 归档文件下载 **Given** 存在已归档的项目 **When** 用户点击"下载归档"按钮 **Then** 系统下载该项目的PDF归档文件 #### Scenario: 归档项目不显示在默认列表 **Given** 存在已归档的项目 **When** 用户查看项目列表 **Then** 默认不显示已归档的项目 #### Scenario: 查看归档项目 **Given** 用户想查看已归档的项目 **When** 用户勾选"显示已归档"选项 **Then** 系统在列表中显示已归档的项目 --- ### Requirement: 项目数据模型 系统 MUST 使用正确的数据结构存储项目信息。 #### Scenario: 项目基础信息存储 **Given** 创建新项目 **When** 系统保存项目数据 **Then** 数据库存储:项目ID、项目名称、项目描述、创建时间、状态、目标人数、预警人数 #### Scenario: 项目人员关联存储 **Given** 项目包含多名参与人员 **When** 系统保存项目数据 **Then** 人员在关联表中存储,包含项目ID、人员ID、人员姓名(冗余) #### Scenario: 状态枚举值 **Given** 项目状态字段 **When** 系统存储项目状态 **Then** 状态值为:'0'进行中、'1'已完成、'2'已归档 --- ### Requirement: API接口规范 系统 MUST 提供符合RESTful规范的API接口。 #### Scenario: 查询项目列表API **Given** 前端需要获取项目列表 **When** 调用 `GET /dpc/project/list?projectName=xxx&pageNum=1&pageSize=10` **Then** 返回分页数据,包含total、rows、code、msg #### Scenario: 创建项目API **Given** 前端需要创建新项目 **When** 调用 `POST /dpc/project` 并传递项目数据 **Then** 返回操作结果,code为200表示成功 #### Scenario: 归档项目API **Given** 前端需要归档项目 **When** 调用 `POST /dpc/project/archive/{projectId}` **Then** 系统执行归档操作并返回结果 #### Scenario: 权限校验 **Given** 用户没有相应的权限 **When** 调用需要权限的API **Then** 返回403错误,提示无权限访问 --- ### Requirement: 前端用户体验 系统 MUST 提供友好的用户交互体验。 #### Scenario: 响应式布局 **Given** 用户使用不同分辨率的设备 **When** 用户访问项目管理页面 **Then** 页面布局自适应,所有功能可用 #### Scenario: 操作反馈 **Given** 用户执行操作 **When** 操作成功或失败 **Then** 系统显示明确的成功或错误提示消息 #### Scenario: 加载状态 **Given** 数据加载需要时间 **When** 用户请求数据 **Then** 系统显示loading加载状态 --- ## 相关能力 - **用户管理能力**:依赖用户系统获取人员信息 - **部门管理能力**:依赖部门系统进行部门范围选择 - **文件管理能力**:依赖文件上传功能处理项目附件和归档PDF - **项目工作台能力**:进入项目后跳转到工作台(后续实现) - **初核结果能力**:查看结果跳转到结果页(后续实现)