839 lines
17 KiB
Markdown
839 lines
17 KiB
Markdown
# 后端API文档
|
|
|
|
## 文档信息
|
|
- **文档版本**: V1.0
|
|
- **创建日期**: 2026-01-26
|
|
- **文档类型**: 后端API文档
|
|
|
|
---
|
|
|
|
## 1. API概述
|
|
|
|
### 1.1 基础信息
|
|
|
|
- **API前缀**: `/api`
|
|
- **API文档地址**: `/docs`
|
|
- **认证方式**: JWT Token (Bearer Token)
|
|
- **响应格式**: JSON
|
|
- **错误处理**: 统一错误响应格式
|
|
|
|
### 1.2 响应格式
|
|
|
|
#### 成功响应
|
|
```json
|
|
{
|
|
"code": 200,
|
|
"message": "操作成功",
|
|
"data": {...}
|
|
}
|
|
```
|
|
|
|
#### 错误响应
|
|
```json
|
|
{
|
|
"code": 错误码,
|
|
"message": "错误信息"
|
|
}
|
|
```
|
|
|
|
### 1.3 错误码
|
|
|
|
| 错误码 | 说明 |
|
|
|--------|------|
|
|
| 400 | 请求参数错误 |
|
|
| 401 | 未授权 |
|
|
| 403 | 禁止访问 |
|
|
| 404 | 资源不存在 |
|
|
| 500 | 服务器内部错误 |
|
|
| 1001 | 用户名或密码错误 |
|
|
| 1002 | 用户不存在 |
|
|
| 1003 | 用户名已存在 |
|
|
| 1004 | 密码不一致 |
|
|
| 2001 | 项目不存在 |
|
|
| 2002 | 无权限操作 |
|
|
|
|
---
|
|
|
|
## 2. 认证API
|
|
|
|
### 2.1 登录
|
|
|
|
**接口地址**: `/api/auth/login`
|
|
|
|
**请求方法**: `POST`
|
|
|
|
**请求参数**:
|
|
|
|
| 参数名 | 类型 | 位置 | 必填 | 说明 |
|
|
|--------|------|------|------|------|
|
|
| username | string | body | 是 | 用户名 |
|
|
| password | string | body | 是 | 密码 |
|
|
|
|
**请求示例**:
|
|
```json
|
|
{
|
|
"username": "admin",
|
|
"password": "123456"
|
|
}
|
|
```
|
|
|
|
**响应示例**:
|
|
```json
|
|
{
|
|
"code": 200,
|
|
"message": "登录成功",
|
|
"data": {
|
|
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
|
|
"userInfo": {
|
|
"userId": "admin001",
|
|
"username": "admin",
|
|
"realName": "系统管理员",
|
|
"department": "ADMIN",
|
|
"role": "ADMIN"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### 2.2 退出登录
|
|
|
|
**接口地址**: `/api/auth/logout`
|
|
|
|
**请求方法**: `POST`
|
|
|
|
**请求参数**: 无
|
|
|
|
**响应示例**:
|
|
```json
|
|
{
|
|
"code": 200,
|
|
"message": "退出成功"
|
|
}
|
|
```
|
|
|
|
### 2.3 获取用户信息
|
|
|
|
**接口地址**: `/api/auth/userInfo`
|
|
|
|
**请求方法**: `GET`
|
|
|
|
**请求参数**: 无
|
|
|
|
**响应示例**:
|
|
```json
|
|
{
|
|
"code": 200,
|
|
"message": "查询成功",
|
|
"data": {
|
|
"userId": "admin001",
|
|
"username": "admin",
|
|
"realName": "系统管理员",
|
|
"department": "ADMIN",
|
|
"role": "ADMIN"
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 3. 用户API
|
|
|
|
### 3.1 创建用户
|
|
|
|
**接口地址**: `/api/user`
|
|
|
|
**请求方法**: `POST`
|
|
|
|
**请求参数**:
|
|
|
|
| 参数名 | 类型 | 位置 | 必填 | 说明 |
|
|
|--------|------|------|------|------|
|
|
| username | string | body | 是 | 用户名 |
|
|
| password | string | body | 是 | 密码 |
|
|
| realName | string | body | 是 | 真实姓名 |
|
|
| department | string | body | 是 | 部门 |
|
|
| phone | string | body | 否 | 联系电话 |
|
|
| email | string | body | 否 | 邮箱 |
|
|
| role | string | body | 是 | 角色 |
|
|
|
|
**请求示例**:
|
|
```json
|
|
{
|
|
"username": "test",
|
|
"password": "123456",
|
|
"realName": "测试用户",
|
|
"department": "技术部",
|
|
"phone": "13800138000",
|
|
"email": "test@example.com",
|
|
"role": "OTHER"
|
|
}
|
|
```
|
|
|
|
**响应示例**:
|
|
```json
|
|
{
|
|
"code": 200,
|
|
"message": "创建成功"
|
|
}
|
|
```
|
|
|
|
### 3.2 更新用户
|
|
|
|
**接口地址**: `/api/user/{id}`
|
|
|
|
**请求方法**: `PUT`
|
|
|
|
**请求参数**:
|
|
|
|
| 参数名 | 类型 | 位置 | 必填 | 说明 |
|
|
|--------|------|------|------|------|
|
|
| id | string | path | 是 | 用户ID |
|
|
| realName | string | body | 否 | 真实姓名 |
|
|
| department | string | body | 否 | 部门 |
|
|
| phone | string | body | 否 | 联系电话 |
|
|
| email | string | body | 否 | 邮箱 |
|
|
| role | string | body | 否 | 角色 |
|
|
|
|
**请求示例**:
|
|
```json
|
|
{
|
|
"realName": "测试用户1",
|
|
"department": "市场部",
|
|
"role": "MARKETING"
|
|
}
|
|
```
|
|
|
|
**响应示例**:
|
|
```json
|
|
{
|
|
"code": 200,
|
|
"message": "更新成功"
|
|
}
|
|
```
|
|
|
|
### 3.3 删除用户
|
|
|
|
**接口地址**: `/api/user/{id}`
|
|
|
|
**请求方法**: `DELETE`
|
|
|
|
**请求参数**:
|
|
|
|
| 参数名 | 类型 | 位置 | 必填 | 说明 |
|
|
|--------|------|------|------|------|
|
|
| id | string | path | 是 | 用户ID |
|
|
|
|
**响应示例**:
|
|
```json
|
|
{
|
|
"code": 200,
|
|
"message": "删除成功"
|
|
}
|
|
```
|
|
|
|
### 3.4 获取用户列表
|
|
|
|
**接口地址**: `/api/user`
|
|
|
|
**请求方法**: `GET`
|
|
|
|
**请求参数**:
|
|
|
|
| 参数名 | 类型 | 位置 | 必填 | 说明 |
|
|
|--------|------|------|------|------|
|
|
| page | integer | query | 否 | 页码,默认1 |
|
|
| size | integer | query | 否 | 每页数量,默认10 |
|
|
| username | string | query | 否 | 用户名(模糊查询) |
|
|
| department | string | query | 否 | 部门 |
|
|
| role | string | query | 否 | 角色 |
|
|
|
|
**响应示例**:
|
|
```json
|
|
{
|
|
"code": 200,
|
|
"message": "查询成功",
|
|
"data": [
|
|
{
|
|
"userId": "admin001",
|
|
"username": "admin",
|
|
"realName": "系统管理员",
|
|
"department": "ADMIN",
|
|
"role": "ADMIN",
|
|
"status": 1,
|
|
"createTime": "2025-01-01 00:00:00",
|
|
"lastLoginTime": "2025-01-15 10:00:00"
|
|
}
|
|
],
|
|
"total": 1
|
|
}
|
|
```
|
|
|
|
### 3.5 重置密码
|
|
|
|
**接口地址**: `/api/user/resetPassword/{id}`
|
|
|
|
**请求方法**: `PUT`
|
|
|
|
**请求参数**:
|
|
|
|
| 参数名 | 类型 | 位置 | 必填 | 说明 |
|
|
|--------|------|------|------|------|
|
|
| id | string | path | 是 | 用户ID |
|
|
| password | string | body | 是 | 新密码 |
|
|
|
|
**请求示例**:
|
|
```json
|
|
{
|
|
"password": "123456"
|
|
}
|
|
```
|
|
|
|
**响应示例**:
|
|
```json
|
|
{
|
|
"code": 200,
|
|
"message": "密码重置成功"
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 4. 项目API
|
|
|
|
### 4.1 创建项目
|
|
|
|
**接口地址**: `/api/project`
|
|
|
|
**请求方法**: `POST`
|
|
|
|
**请求参数**:
|
|
|
|
| 参数名 | 类型 | 位置 | 必填 | 说明 |
|
|
|--------|------|------|------|------|
|
|
| projectName | string | body | 是 | 项目名称 |
|
|
| status | string | body | 是 | 项目状态 |
|
|
| leader | string | body | 是 | 负责人 |
|
|
| phone | string | body | 否 | 联系电话 |
|
|
| email | string | body | 否 | 邮箱 |
|
|
| background | string | body | 否 | 项目背景 |
|
|
| goal | string | body | 否 | 项目目标 |
|
|
| scope | string | body | 否 | 项目范围 |
|
|
| startDate | string | body | 是 | 开始日期 |
|
|
| plannedEndDate | string | body | 是 | 预计结束日期 |
|
|
| actualEndDate | string | body | 否 | 实际结束日期 |
|
|
| totalBudget | number | body | 是 | 总预算 |
|
|
| usedBudget | number | body | 否 | 已使用预算 |
|
|
| members | array | body | 否 | 项目成员 |
|
|
| milestones | array | body | 否 | 项目里程碑 |
|
|
| risks | array | body | 否 | 项目风险 |
|
|
| remarks | string | body | 否 | 备注 |
|
|
|
|
**请求示例**:
|
|
```json
|
|
{
|
|
"projectName": "测试项目",
|
|
"status": "NOT_STARTED",
|
|
"leader": "张三",
|
|
"phone": "13800138000",
|
|
"email": "zhangsan@example.com",
|
|
"background": "为了提升企业运营效率",
|
|
"goal": "完成企业内部管理系统的全面数字化改造",
|
|
"scope": "包括人力资源、财务管理、供应链管理等模块",
|
|
"startDate": "2025-01-15",
|
|
"plannedEndDate": "2025-06-30",
|
|
"totalBudget": 500000,
|
|
"usedBudget": 0,
|
|
"members": [
|
|
{
|
|
"name": "张三",
|
|
"role": "项目经理",
|
|
"department": "市场部"
|
|
},
|
|
{
|
|
"name": "李四",
|
|
"role": "技术负责人",
|
|
"department": "技术部"
|
|
}
|
|
],
|
|
"milestones": [
|
|
{
|
|
"name": "需求分析完成",
|
|
"plannedDate": "2025-02-15",
|
|
"status": "NOT_STARTED"
|
|
},
|
|
{
|
|
"name": "系统设计完成",
|
|
"plannedDate": "2025-03-15",
|
|
"status": "NOT_STARTED"
|
|
}
|
|
],
|
|
"risks": [
|
|
{
|
|
"description": "技术难度较高,可能影响进度",
|
|
"level": "HIGH",
|
|
"measure": "增加技术团队人员投入"
|
|
}
|
|
],
|
|
"remarks": "项目需要与现有系统进行数据对接"
|
|
}
|
|
```
|
|
|
|
**响应示例**:
|
|
```json
|
|
{
|
|
"code": 200,
|
|
"message": "创建成功",
|
|
"data": {
|
|
"projectId": "PRJ2025001"
|
|
}
|
|
}
|
|
```
|
|
|
|
### 4.2 更新项目
|
|
|
|
**接口地址**: `/api/project/{id}`
|
|
|
|
**请求方法**: `PUT`
|
|
|
|
**请求参数**:
|
|
|
|
| 参数名 | 类型 | 位置 | 必填 | 说明 |
|
|
|--------|------|------|------|------|
|
|
| id | string | path | 是 | 项目ID |
|
|
| projectName | string | body | 否 | 项目名称 |
|
|
| status | string | body | 否 | 项目状态 |
|
|
| leader | string | body | 否 | 负责人 |
|
|
| phone | string | body | 否 | 联系电话 |
|
|
| email | string | body | 否 | 邮箱 |
|
|
| background | string | body | 否 | 项目背景 |
|
|
| goal | string | body | 否 | 项目目标 |
|
|
| scope | string | body | 否 | 项目范围 |
|
|
| startDate | string | body | 否 | 开始日期 |
|
|
| plannedEndDate | string | body | 否 | 预计结束日期 |
|
|
| actualEndDate | string | body | 否 | 实际结束日期 |
|
|
| totalBudget | number | body | 否 | 总预算 |
|
|
| usedBudget | number | body | 否 | 已使用预算 |
|
|
| members | array | body | 否 | 项目成员 |
|
|
| milestones | array | body | 否 | 项目里程碑 |
|
|
| risks | array | body | 否 | 项目风险 |
|
|
| remarks | string | body | 否 | 备注 |
|
|
|
|
**请求示例**:
|
|
```json
|
|
{
|
|
"projectName": "测试项目1",
|
|
"status": "IN_PROGRESS",
|
|
"usedBudget": 100000
|
|
}
|
|
```
|
|
|
|
**响应示例**:
|
|
```json
|
|
{
|
|
"code": 200,
|
|
"message": "更新成功"
|
|
}
|
|
```
|
|
|
|
### 4.3 删除项目
|
|
|
|
**接口地址**: `/api/project/{id}`
|
|
|
|
**请求方法**: `DELETE`
|
|
|
|
**请求参数**:
|
|
|
|
| 参数名 | 类型 | 位置 | 必填 | 说明 |
|
|
|--------|------|------|------|------|
|
|
| id | string | path | 是 | 项目ID |
|
|
|
|
**响应示例**:
|
|
```json
|
|
{
|
|
"code": 200,
|
|
"message": "删除成功"
|
|
}
|
|
```
|
|
|
|
### 4.4 获取项目列表
|
|
|
|
**接口地址**: `/api/project`
|
|
|
|
**请求方法**: `GET`
|
|
|
|
**请求参数**:
|
|
|
|
| 参数名 | 类型 | 位置 | 必填 | 说明 |
|
|
|--------|------|------|------|------|
|
|
| page | integer | query | 否 | 页码,默认1 |
|
|
| size | integer | query | 否 | 每页数量,默认10 |
|
|
| projectName | string | query | 否 | 项目名称(模糊查询) |
|
|
| status | string | query | 否 | 项目状态 |
|
|
| leader | string | query | 否 | 负责人(模糊查询) |
|
|
|
|
**响应示例**:
|
|
```json
|
|
{
|
|
"code": 200,
|
|
"message": "查询成功",
|
|
"data": [
|
|
{
|
|
"projectId": "PRJ2025001",
|
|
"projectNo": "PRJ2025001",
|
|
"projectName": "测试项目",
|
|
"status": "IN_PROGRESS",
|
|
"leader": "张三",
|
|
"createTime": "2025-01-15 00:00:00",
|
|
"updateTime": "2025-01-20 10:00:00"
|
|
}
|
|
],
|
|
"total": 1
|
|
}
|
|
```
|
|
|
|
### 4.5 获取项目详情
|
|
|
|
**接口地址**: `/api/project/{id}`
|
|
|
|
**请求方法**: `GET`
|
|
|
|
**请求参数**:
|
|
|
|
| 参数名 | 类型 | 位置 | 必填 | 说明 |
|
|
|--------|------|------|------|------|
|
|
| id | string | path | 是 | 项目ID |
|
|
|
|
**响应示例**:
|
|
```json
|
|
{
|
|
"code": 200,
|
|
"message": "查询成功",
|
|
"data": {
|
|
"projectId": "PRJ2025001",
|
|
"projectNo": "PRJ2025001",
|
|
"projectName": "测试项目",
|
|
"status": "IN_PROGRESS",
|
|
"leader": "张三",
|
|
"phone": "13800138000",
|
|
"email": "zhangsan@example.com",
|
|
"background": "为了提升企业运营效率",
|
|
"goal": "完成企业内部管理系统的全面数字化改造",
|
|
"scope": "包括人力资源、财务管理、供应链管理等模块",
|
|
"startDate": "2025-01-15",
|
|
"plannedEndDate": "2025-06-30",
|
|
"actualEndDate": null,
|
|
"totalBudget": 500000,
|
|
"usedBudget": 100000,
|
|
"remainingBudget": 400000,
|
|
"members": [
|
|
{
|
|
"name": "张三",
|
|
"role": "项目经理",
|
|
"department": "市场部"
|
|
},
|
|
{
|
|
"name": "李四",
|
|
"role": "技术负责人",
|
|
"department": "技术部"
|
|
}
|
|
],
|
|
"milestones": [
|
|
{
|
|
"name": "需求分析完成",
|
|
"plannedDate": "2025-02-15",
|
|
"actualDate": null,
|
|
"status": "NOT_STARTED"
|
|
},
|
|
{
|
|
"name": "系统设计完成",
|
|
"plannedDate": "2025-03-15",
|
|
"actualDate": null,
|
|
"status": "NOT_STARTED"
|
|
}
|
|
],
|
|
"risks": [
|
|
{
|
|
"description": "技术难度较高,可能影响进度",
|
|
"level": "HIGH",
|
|
"measure": "增加技术团队人员投入"
|
|
}
|
|
],
|
|
"remarks": "项目需要与现有系统进行数据对接",
|
|
"creator": "marketing",
|
|
"createTime": "2025-01-15 00:00:00",
|
|
"lastModifier": "admin",
|
|
"updateTime": "2025-01-20 10:00:00"
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 5. 历史记录API
|
|
|
|
### 5.1 获取项目历史
|
|
|
|
**接口地址**: `/api/history/{projectId}`
|
|
|
|
**请求方法**: `GET`
|
|
|
|
**请求参数**:
|
|
|
|
| 参数名 | 类型 | 位置 | 必填 | 说明 |
|
|
|--------|------|------|------|------|
|
|
| projectId | string | path | 是 | 项目ID |
|
|
| page | integer | query | 否 | 页码,默认1 |
|
|
| size | integer | query | 否 | 每页数量,默认10 |
|
|
| operator | string | query | 否 | 操作人(模糊查询) |
|
|
| startDate | string | query | 否 | 开始日期 |
|
|
| endDate | string | query | 否 | 结束日期 |
|
|
|
|
**响应示例**:
|
|
```json
|
|
{
|
|
"code": 200,
|
|
"message": "查询成功",
|
|
"data": [
|
|
{
|
|
"historyId": "HIS2025001",
|
|
"projectId": "PRJ2025001",
|
|
"projectNo": "PRJ2025001",
|
|
"operationType": "UPDATE",
|
|
"operator": "admin",
|
|
"operationTime": "2025-01-20 10:00:00",
|
|
"fieldName": "status",
|
|
"oldValue": "NOT_STARTED",
|
|
"newValue": "IN_PROGRESS"
|
|
}
|
|
],
|
|
"total": 1
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 6. 统计API
|
|
|
|
### 6.1 筛选项目
|
|
|
|
**接口地址**: `/api/statistics/filter`
|
|
|
|
**请求方法**: `POST`
|
|
|
|
**请求参数**:
|
|
|
|
| 参数名 | 类型 | 位置 | 必填 | 说明 |
|
|
|--------|------|------|------|------|
|
|
| projectNo | string | body | 否 | 项目编号 |
|
|
| projectName | string | body | 否 | 项目名称(模糊查询) |
|
|
| status | string | body | 否 | 项目状态 |
|
|
| leader | string | body | 否 | 负责人(模糊查询) |
|
|
| creator | string | body | 否 | 创建人(模糊查询) |
|
|
| createStartDate | string | body | 否 | 创建开始日期 |
|
|
| createEndDate | string | body | 否 | 创建结束日期 |
|
|
| updateStartDate | string | body | 否 | 更新开始日期 |
|
|
| updateEndDate | string | body | 否 | 更新结束日期 |
|
|
| page | integer | body | 否 | 页码,默认1 |
|
|
| size | integer | body | 否 | 每页数量,默认10 |
|
|
|
|
**请求示例**:
|
|
```json
|
|
{
|
|
"projectName": "测试",
|
|
"status": "IN_PROGRESS",
|
|
"createStartDate": "2025-01-01",
|
|
"createEndDate": "2025-12-31"
|
|
}
|
|
```
|
|
|
|
**响应示例**:
|
|
```json
|
|
{
|
|
"code": 200,
|
|
"message": "查询成功",
|
|
"data": [
|
|
{
|
|
"projectId": "PRJ2025001",
|
|
"projectNo": "PRJ2025001",
|
|
"projectName": "测试项目",
|
|
"status": "IN_PROGRESS",
|
|
"leader": "张三",
|
|
"createTime": "2025-01-15 00:00:00",
|
|
"updateTime": "2025-01-20 10:00:00"
|
|
}
|
|
],
|
|
"total": 1
|
|
}
|
|
```
|
|
|
|
### 6.2 统计项目
|
|
|
|
**接口地址**: `/api/statistics/statistics`
|
|
|
|
**请求方法**: `POST`
|
|
|
|
**请求参数**:
|
|
|
|
| 参数名 | 类型 | 位置 | 必填 | 说明 |
|
|
|--------|------|------|------|------|
|
|
| dimension | string | body | 是 | 统计维度:status, department, leader, month |
|
|
| startDate | string | body | 否 | 开始日期 |
|
|
| endDate | string | body | 否 | 结束日期 |
|
|
|
|
**请求示例**:
|
|
```json
|
|
{
|
|
"dimension": "status",
|
|
"startDate": "2025-01-01",
|
|
"endDate": "2025-12-31"
|
|
}
|
|
```
|
|
|
|
**响应示例**:
|
|
```json
|
|
{
|
|
"code": 200,
|
|
"message": "统计成功",
|
|
"data": {
|
|
"dimension": "status",
|
|
"total": 10,
|
|
"details": [
|
|
{
|
|
"name": "NOT_STARTED",
|
|
"value": 2
|
|
},
|
|
{
|
|
"name": "IN_PROGRESS",
|
|
"value": 5
|
|
},
|
|
{
|
|
"name": "COMPLETED",
|
|
"value": 2
|
|
},
|
|
{
|
|
"name": "PAUSED",
|
|
"value": 1
|
|
}
|
|
]
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 7. 系统API
|
|
|
|
### 7.1 获取操作日志
|
|
|
|
**接口地址**: `/api/system/log`
|
|
|
|
**请求方法**: `GET`
|
|
|
|
**请求参数**:
|
|
|
|
| 参数名 | 类型 | 位置 | 必填 | 说明 |
|
|
|--------|------|------|------|------|
|
|
| page | integer | query | 否 | 页码,默认1 |
|
|
| size | integer | query | 否 | 每页数量,默认10 |
|
|
| username | string | query | 否 | 用户名(模糊查询) |
|
|
| operation | string | query | 否 | 操作内容(模糊查询) |
|
|
| startDate | string | query | 否 | 开始日期 |
|
|
| endDate | string | query | 否 | 结束日期 |
|
|
|
|
**响应示例**:
|
|
```json
|
|
{
|
|
"code": 200,
|
|
"message": "查询成功",
|
|
"data": [
|
|
{
|
|
"logId": "LOG2025001",
|
|
"username": "admin",
|
|
"operation": "登录系统",
|
|
"ipAddress": "127.0.0.1",
|
|
"userAgent": "Mozilla/5.0...",
|
|
"operationTime": "2025-01-20 10:00:00"
|
|
}
|
|
],
|
|
"total": 1
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 8. 认证与授权
|
|
|
|
### 8.1 认证流程
|
|
|
|
1. 客户端发送登录请求到 `/api/auth/login`
|
|
2. 服务端验证用户名和密码
|
|
3. 验证成功后生成 JWT Token
|
|
4. 客户端保存 Token 到 localStorage
|
|
5. 后续请求在请求头中携带 Token: `Authorization: Bearer <token>`
|
|
6. 服务端验证 Token 的有效性
|
|
7. 验证通过后处理请求
|
|
|
|
### 8.2 授权流程
|
|
|
|
1. 服务端从 Token 中解析出用户信息
|
|
2. 根据用户角色和权限判断是否有权限访问请求的资源
|
|
3. 有权限则继续处理请求,无权限则返回 403 错误
|
|
|
|
### 8.3 角色权限
|
|
|
|
| 角色 | 权限 |
|
|
|------|------|
|
|
| ADMIN | 所有权限 |
|
|
| MARKETING | 创建项目、编辑项目、查看项目、查看历史记录 |
|
|
| OTHER | 编辑项目、查看项目、查看历史记录 |
|
|
|
|
---
|
|
|
|
## 9. 附录
|
|
|
|
### 9.1 数据字典
|
|
|
|
#### 项目状态
|
|
| 值 | 说明 |
|
|
|----|------|
|
|
| NOT_STARTED | 未开始 |
|
|
| IN_PROGRESS | 进行中 |
|
|
| COMPLETED | 已完成 |
|
|
| PAUSED | 已暂停 |
|
|
| CANCELLED | 已取消 |
|
|
|
|
#### 角色
|
|
| 值 | 说明 |
|
|
|----|------|
|
|
| ADMIN | 管理员 |
|
|
| MARKETING | 市场部 |
|
|
| OTHER | 其他部门 |
|
|
|
|
#### 风险等级
|
|
| 值 | 说明 |
|
|
|----|------|
|
|
| HIGH | 高 |
|
|
| MEDIUM | 中 |
|
|
| LOW | 低 |
|
|
|
|
#### 操作类型
|
|
| 值 | 说明 |
|
|
|----|------|
|
|
| CREATE | 创建 |
|
|
| UPDATE | 更新 |
|
|
| DELETE | 删除 |
|
|
|
|
### 9.2 开发规范
|
|
|
|
- **API设计**: 遵循 RESTful API 设计规范
|
|
- **参数验证**: 使用 Pydantic 进行参数验证
|
|
- **错误处理**: 使用统一的错误处理机制
|
|
- **日志记录**: 记录重要操作的日志
|
|
- **测试**: 为每个 API 编写单元测试
|
|
|
|
### 9.3 变更记录
|
|
|
|
| 版本 | 日期 | 修改人 | 修改内容 |
|
|
|------|------|--------|----------|
|
|
| V1.0 | 2026-01-26 | - | 初始版本创建 |
|