docs: 添加反馈系统功能分析文档

添加未实现的反馈系统功能分析文档,包含需求概述、权限矩阵、数据表设计、业务逻辑、API接口、前端UI设计、实现步骤和关键技术点等详细说明
This commit is contained in:
ikmkj
2026-03-04 18:40:34 +08:00
parent 23ced99e20
commit e495011f57

View File

@@ -0,0 +1,264 @@
# 反馈系统功能分析(未实现)
## 一、需求概述
在左侧菜单回收站下方添加一个新的功能模块,包含三个子功能:
- 反馈BUG
- 申请管理
- 提出意见
**访问权限:** 仅登录用户可见和使用
**处理权限:** 仅ADMIN用户可处理
---
## 二、用户角色权限矩阵
### 普通用户USER能做什么
| 功能 | 权限 | 说明 |
|------|------|------|
| 查看反馈列表 | ✅ | 仅查看自己提交的反馈 |
| 提交BUG反馈 | ✅ | 创建新的BUG反馈 |
| 提交管理申请 | ✅ | 申请成为管理员 |
| 提出意见建议 | ✅ | 提交产品意见 |
| 编辑自己的反馈 | ✅ | 仅在未处理状态下可编辑 |
| 删除自己的反馈 | ✅ | 仅在未处理状态下可删除 |
| 查看反馈状态 | ✅ | 实时查看处理进度 |
| 处理他人反馈 | ❌ | 无权限 |
| 删除他人反馈 | ❌ | 无权限 |
### 管理员ADMIN能做什么
| 功能 | 权限 | 说明 |
|------|------|------|
| 查看所有反馈 | ✅ | 查看全部用户的反馈 |
| 查看反馈详情 | ✅ | 包括用户信息、提交时间等 |
| 处理反馈 | ✅ | 更新状态、添加处理备注 |
| 批准/拒绝申请 | ✅ | 处理管理员申请 |
| 删除反馈 | ✅ | 删除任何反馈 |
| 导出反馈 | ✅ | 导出为CSV/Excel |
| 统计分析 | ✅ | 查看反馈统计信息 |
---
## 三、数据表设计
### 1. 反馈表feedback
```sql
CREATE TABLE feedback (
id BIGINT PRIMARY KEY COMMENT '反馈ID',
user_id BIGINT NOT NULL COMMENT '提交用户ID',
type VARCHAR(20) NOT NULL COMMENT '反馈类型: BUG, ADMIN_REQUEST, SUGGESTION',
title VARCHAR(255) NOT NULL COMMENT '反馈标题',
content LONGTEXT NOT NULL COMMENT '反馈内容',
status VARCHAR(20) DEFAULT 'PENDING' COMMENT '状态: PENDING(待处理), PROCESSING(处理中), RESOLVED(已解决), REJECTED(已拒绝)',
priority VARCHAR(20) DEFAULT 'NORMAL' COMMENT '优先级: LOW, NORMAL, HIGH, URGENT',
-- 处理信息
handler_id BIGINT COMMENT '处理人ID',
handler_remark VARCHAR(500) COMMENT '处理备注',
handled_at DATETIME COMMENT '处理时间',
-- 时间戳
created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
-- 软删除
is_deleted TINYINT DEFAULT 0 COMMENT '是否删除',
deleted_at DATETIME COMMENT '删除时间',
deleted_by BIGINT COMMENT '删除人ID',
INDEX idx_user_id (user_id),
INDEX idx_type (type),
INDEX idx_status (status),
INDEX idx_created_at (created_at)
) COMMENT='用户反馈表';
```
### 2. 管理员申请表admin_request
```sql
CREATE TABLE admin_request (
id BIGINT PRIMARY KEY COMMENT '申请ID',
user_id BIGINT NOT NULL COMMENT '申请用户ID',
reason VARCHAR(500) NOT NULL COMMENT '申请理由',
status VARCHAR(20) DEFAULT 'PENDING' COMMENT '状态: PENDING(待审核), APPROVED(已批准), REJECTED(已拒绝)',
-- 审核信息
reviewer_id BIGINT COMMENT '审核人ID',
review_remark VARCHAR(500) COMMENT '审核备注',
reviewed_at DATETIME COMMENT '审核时间',
-- 时间戳
created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
-- 软删除
is_deleted TINYINT DEFAULT 0 COMMENT '是否删除',
deleted_at DATETIME COMMENT '删除时间',
deleted_by BIGINT COMMENT '删除人ID',
INDEX idx_user_id (user_id),
INDEX idx_status (status),
INDEX idx_created_at (created_at)
) COMMENT='管理员申请表';
```
---
## 四、业务逻辑设计
### 4.1 反馈流程
```
普通用户提交反馈
反馈进入待处理队列 (PENDING)
管理员查看反馈
管理员处理反馈 (更新状态、添加备注)
用户查看处理结果
```
### 4.2 反馈类型处理
| 类型 | 流程 | 特殊处理 |
|------|------|--------|
| BUG | 提交 → 待处理 → 处理中 → 已解决/已拒绝 | 可设置优先级 |
| ADMIN_REQUEST | 提交 → 待审核 → 已批准/已拒绝 | 批准后自动升级用户角色 |
| SUGGESTION | 提交 → 待处理 → 已解决/已拒绝 | 仅供参考 |
### 4.3 管理员申请特殊处理
当管理员批准申请时:
1. 更新 admin_request 表状态为 APPROVED
2. 更新 user 表的 role 字段为 ADMIN
3. 记录审核人和审核时间
4. 可选:发送通知给申请用户
---
## 五、API 接口设计
### 5.1 普通用户接口
```
POST /api/feedback - 提交反馈
GET /api/feedback/my - 查看自己的反馈列表
GET /api/feedback/{id} - 查看反馈详情
PUT /api/feedback/{id} - 编辑反馈(仅未处理状态)
DELETE /api/feedback/{id} - 删除反馈(仅未处理状态)
POST /api/admin-request - 提交管理员申请
GET /api/admin-request/my - 查看自己的申请
GET /api/admin-request/{id} - 查看申请详情
```
### 5.2 管理员接口
```
GET /api/feedback - 查看所有反馈(分页)
GET /api/feedback/stats - 反馈统计
PUT /api/feedback/{id}/status - 更新反馈状态
PUT /api/feedback/{id}/handle - 处理反馈(添加备注)
DELETE /api/feedback/{id} - 删除反馈
GET /api/admin-request - 查看所有申请(分页)
PUT /api/admin-request/{id}/approve - 批准申请
PUT /api/admin-request/{id}/reject - 拒绝申请
```
---
## 六、前端UI设计
### 6.1 菜单结构
```
左侧菜单
├── 分类列表
├── 回收站
├── 反馈中心 (新增)
│ ├── 反馈BUG
│ ├── 申请管理
│ └── 提出意见
└── 系统管理 (仅ADMIN)
```
### 6.2 反馈中心页面
**普通用户视图:**
- 反馈列表(仅显示自己的)
- 提交新反馈表单
- 反馈详情和状态查看
- 编辑/删除按钮(仅未处理状态)
**管理员视图:**
- 所有反馈列表(可筛选、搜索)
- 反馈统计仪表板
- 处理反馈表单(更新状态、添加备注)
- 批量操作(删除、导出)
---
## 七、实现步骤
### 第一阶段:数据库
1. 创建 feedback 表
2. 创建 admin_request 表
3. 添加索引优化查询
### 第二阶段:后端
1. 创建 Feedback 和 AdminRequest 实体类
2. 创建 Mapper 和 Service
3. 创建 Controller 和 API 接口
4. 添加权限控制注解
### 第三阶段:前端
1. 创建反馈中心菜单项
2. 创建反馈列表页面
3. 创建反馈提交表单
4. 创建管理员处理页面
5. 集成到 SidebarMenu
### 第四阶段:测试
1. 单元测试
2. 集成测试
3. 权限测试
---
## 八、关键技术点
### 权限控制
- 使用 @PreAuthorize 注解控制接口访问
- 在 Service 层验证用户权限
- 确保用户只能操作自己的反馈
### 数据隔离
- 普通用户查询时自动过滤为自己的反馈
- 管理员可查看所有反馈
### 状态管理
- 反馈状态流转PENDING → PROCESSING → RESOLVED/REJECTED
- 申请状态流转PENDING → APPROVED/REJECTED
### 审计日志
- 记录处理人、处理时间、处理备注
- 支持软删除,保留历史记录
---
## 九、扩展考虑
1. **通知系统** - 反馈被处理时通知用户
2. **评论功能** - 用户和管理员可在反馈下评论
3. **附件支持** - 反馈可上传截图或文件
4. **优先级排序** - BUG 按优先级排序
5. **导出功能** - 管理员可导出反馈报告
6. **统计分析** - 反馈类型、状态分布统计