需求分解

This commit is contained in:
wkc
2026-01-27 17:09:32 +08:00
parent 0c00a00df0
commit 79cd4fe755
152 changed files with 14990 additions and 21 deletions

View File

@@ -0,0 +1,214 @@
# 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
- **项目工作台能力**:进入项目后跳转到工作台(后续实现)
- **初核结果能力**:查看结果跳转到结果页(后续实现)