395 lines
8.1 KiB
Markdown
395 lines
8.1 KiB
Markdown
|
|
# 🚀 立即编译测试 - 服务反馈处理流程
|
|||
|
|
|
|||
|
|
**操作时间**: 2026-01-23
|
|||
|
|
**预计耗时**: 5-10分钟
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📋 快速操作步骤
|
|||
|
|
|
|||
|
|
### 步骤1: 编译后端代码 ⏱️ 2分钟
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd peidu/backend
|
|||
|
|
mvn clean compile
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**预期结果**:
|
|||
|
|
```
|
|||
|
|
[INFO] BUILD SUCCESS
|
|||
|
|
[INFO] Total time: XX s
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
如果编译失败,检查:
|
|||
|
|
- ✅ 所有DTO类是否正确创建
|
|||
|
|
- ✅ NotificationService 是否正确注入
|
|||
|
|
- ✅ import 语句是否完整
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 步骤2: 重启后端服务 ⏱️ 1分钟
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 方式1: 使用Maven
|
|||
|
|
mvn spring-boot:run
|
|||
|
|
|
|||
|
|
# 方式2: 如果已经打包
|
|||
|
|
java -jar target/peidu-backend.jar
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**预期结果**:
|
|||
|
|
```
|
|||
|
|
Started PeiduApplication in XX seconds
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 步骤3: 验证接口可用性 ⏱️ 2分钟
|
|||
|
|
|
|||
|
|
#### 3.1 检查Swagger文档
|
|||
|
|
访问: `http://localhost:8080/swagger-ui.html`
|
|||
|
|
|
|||
|
|
查找新增的6个接口:
|
|||
|
|
- ✅ PUT `/api/growth-record/daily/{id}/review`
|
|||
|
|
- ✅ POST `/api/growth-record/daily/{id}/parent-feedback`
|
|||
|
|
- ✅ POST `/api/growth-record/daily/{id}/handle`
|
|||
|
|
- ✅ PUT `/api/growth-record/daily/{id}/close`
|
|||
|
|
- ✅ GET `/api/growth-record/daily/pending-review`
|
|||
|
|
- ✅ GET `/api/growth-record/daily/pending-handle`
|
|||
|
|
|
|||
|
|
#### 3.2 测试待审核列表接口
|
|||
|
|
```bash
|
|||
|
|
curl -X GET "http://localhost:8080/api/growth-record/daily/pending-review?page=1&size=10"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**预期响应**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "success",
|
|||
|
|
"data": {
|
|||
|
|
"records": [],
|
|||
|
|
"total": 0,
|
|||
|
|
"pages": 0
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 步骤4: 完整流程测试 ⏱️ 5分钟
|
|||
|
|
|
|||
|
|
#### 4.1 准备测试数据
|
|||
|
|
确保数据库中有:
|
|||
|
|
- ✅ 至少1个陪伴员账号
|
|||
|
|
- ✅ 至少1个管理师账号
|
|||
|
|
- ✅ 至少1个家长账号
|
|||
|
|
- ✅ 至少1条成长记录(review_status=0)
|
|||
|
|
|
|||
|
|
#### 4.2 测试审核流程
|
|||
|
|
|
|||
|
|
**Step 1: 管理师审核反馈(通过)**
|
|||
|
|
```bash
|
|||
|
|
curl -X PUT "http://localhost:8080/api/growth-record/daily/1/review" \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-H "Authorization: Bearer YOUR_TOKEN" \
|
|||
|
|
-d '{
|
|||
|
|
"reviewStatus": 1,
|
|||
|
|
"reviewNote": "内容完整,通过审核"
|
|||
|
|
}'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**预期响应**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "审核成功",
|
|||
|
|
"data": true
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Step 2: 验证数据库更新**
|
|||
|
|
```sql
|
|||
|
|
SELECT id, review_status, review_note, review_time, reviewer_id
|
|||
|
|
FROM growth_record
|
|||
|
|
WHERE id = 1;
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**预期结果**:
|
|||
|
|
- `review_status` = 1
|
|||
|
|
- `review_note` = "内容完整,通过审核"
|
|||
|
|
- `review_time` 不为空
|
|||
|
|
- `reviewer_id` 不为空
|
|||
|
|
|
|||
|
|
**Step 3: 验证通知发送**
|
|||
|
|
```sql
|
|||
|
|
SELECT * FROM notification
|
|||
|
|
WHERE related_id = 1
|
|||
|
|
AND related_type = 'growth_record'
|
|||
|
|
AND type = 'feedback_approved'
|
|||
|
|
ORDER BY create_time DESC
|
|||
|
|
LIMIT 1;
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**预期结果**: 应该有1条新通知记录
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
#### 4.3 测试家长反馈流程
|
|||
|
|
|
|||
|
|
**Step 1: 家长评价反馈(有疑问)**
|
|||
|
|
```bash
|
|||
|
|
curl -X POST "http://localhost:8080/api/growth-record/daily/1/parent-feedback" \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-H "Authorization: Bearer YOUR_TOKEN" \
|
|||
|
|
-d '{
|
|||
|
|
"satisfaction": 4,
|
|||
|
|
"parentNote": "整体不错,但有些细节想了解",
|
|||
|
|
"hasQuestion": true
|
|||
|
|
}'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**预期响应**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "提交成功",
|
|||
|
|
"data": true
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Step 2: 验证数据库更新**
|
|||
|
|
```sql
|
|||
|
|
SELECT id, parent_satisfaction, parent_note, has_question, handle_status
|
|||
|
|
FROM growth_record
|
|||
|
|
WHERE id = 1;
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**预期结果**:
|
|||
|
|
- `parent_satisfaction` = 4
|
|||
|
|
- `parent_note` = "整体不错,但有些细节想了解"
|
|||
|
|
- `has_question` = 1
|
|||
|
|
- `handle_status` = 1(待处理)
|
|||
|
|
|
|||
|
|
**Step 3: 验证通知发送**
|
|||
|
|
```sql
|
|||
|
|
SELECT * FROM notification
|
|||
|
|
WHERE related_id = 1
|
|||
|
|
AND type = 'question_raised'
|
|||
|
|
ORDER BY create_time DESC
|
|||
|
|
LIMIT 1;
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**预期结果**: 应该有1条新通知记录(发给管理师)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
#### 4.4 测试问题处理流程
|
|||
|
|
|
|||
|
|
**Step 1: 管理师处理问题**
|
|||
|
|
```bash
|
|||
|
|
curl -X POST "http://localhost:8080/api/growth-record/daily/1/handle" \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-H "Authorization: Bearer YOUR_TOKEN" \
|
|||
|
|
-d '{
|
|||
|
|
"handleNote": "已与家长电话沟通,解释了相关细节,家长表示满意",
|
|||
|
|
"handleStatus": 3
|
|||
|
|
}'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**预期响应**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "处理成功",
|
|||
|
|
"data": true
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Step 2: 验证数据库更新**
|
|||
|
|
```sql
|
|||
|
|
SELECT id, handle_status, handle_note, handle_time, archive_status
|
|||
|
|
FROM growth_record
|
|||
|
|
WHERE id = 1;
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**预期结果**:
|
|||
|
|
- `handle_status` = 3(已解决)
|
|||
|
|
- `handle_note` 包含处理记录和时间戳
|
|||
|
|
- `handle_time` 不为空
|
|||
|
|
- `archive_status` = 1(自动归档)
|
|||
|
|
|
|||
|
|
**Step 3: 验证通知发送**
|
|||
|
|
```sql
|
|||
|
|
SELECT * FROM notification
|
|||
|
|
WHERE related_id = 1
|
|||
|
|
AND type = 'question_resolved'
|
|||
|
|
ORDER BY create_time DESC
|
|||
|
|
LIMIT 1;
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**预期结果**: 应该有1条新通知记录(发给家长)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
#### 4.5 测试列表查询
|
|||
|
|
|
|||
|
|
**测试待审核列表**
|
|||
|
|
```bash
|
|||
|
|
curl -X GET "http://localhost:8080/api/growth-record/daily/pending-review?page=1&size=10"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**预期**: 返回所有 `review_status=0` 的记录
|
|||
|
|
|
|||
|
|
**测试待处理列表**
|
|||
|
|
```bash
|
|||
|
|
curl -X GET "http://localhost:8080/api/growth-record/daily/pending-handle?page=1&size=10"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**预期**: 返回所有 `has_question=1` 且 `handle_status IN (1,2)` 的记录
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## ✅ 测试检查清单
|
|||
|
|
|
|||
|
|
### 编译检查
|
|||
|
|
- [ ] 后端代码编译成功
|
|||
|
|
- [ ] 没有编译错误
|
|||
|
|
- [ ] 没有警告信息
|
|||
|
|
|
|||
|
|
### 服务启动检查
|
|||
|
|
- [ ] 后端服务启动成功
|
|||
|
|
- [ ] 没有启动错误
|
|||
|
|
- [ ] Swagger文档可访问
|
|||
|
|
|
|||
|
|
### 接口可用性检查
|
|||
|
|
- [ ] 6个新接口在Swagger中可见
|
|||
|
|
- [ ] 接口路径正确
|
|||
|
|
- [ ] 参数定义正确
|
|||
|
|
|
|||
|
|
### 功能测试检查
|
|||
|
|
- [ ] 审核功能正常(通过/需修改)
|
|||
|
|
- [ ] 家长反馈功能正常
|
|||
|
|
- [ ] 问题处理功能正常
|
|||
|
|
- [ ] 工单关闭功能正常
|
|||
|
|
- [ ] 待审核列表查询正常
|
|||
|
|
- [ ] 待处理列表查询正常
|
|||
|
|
|
|||
|
|
### 数据库检查
|
|||
|
|
- [ ] 审核信息正确保存
|
|||
|
|
- [ ] 家长反馈信息正确保存
|
|||
|
|
- [ ] 处理记录正确保存
|
|||
|
|
- [ ] 归档状态正确更新
|
|||
|
|
|
|||
|
|
### 通知检查
|
|||
|
|
- [ ] 审核通过通知发送成功
|
|||
|
|
- [ ] 需修改通知发送成功
|
|||
|
|
- [ ] 家长疑问通知发送成功
|
|||
|
|
- [ ] 问题解决通知发送成功
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🐛 常见问题排查
|
|||
|
|
|
|||
|
|
### 问题1: 编译失败 - 找不到NotificationService
|
|||
|
|
|
|||
|
|
**原因**: NotificationService 未正确注入
|
|||
|
|
|
|||
|
|
**解决方案**:
|
|||
|
|
```java
|
|||
|
|
// 检查 GrowthRecordServiceImpl.java
|
|||
|
|
@RequiredArgsConstructor
|
|||
|
|
public class GrowthRecordServiceImpl ... {
|
|||
|
|
private final NotificationService notificationService; // ✅ 确保这行存在
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 问题2: 接口404错误
|
|||
|
|
|
|||
|
|
**原因**: Controller路径配置错误
|
|||
|
|
|
|||
|
|
**解决方案**:
|
|||
|
|
```java
|
|||
|
|
// 检查 GrowthRecordController.java
|
|||
|
|
@RestController
|
|||
|
|
@RequestMapping("/api/growth-record") // ✅ 确保路径正确
|
|||
|
|
public class GrowthRecordController {
|
|||
|
|
@PutMapping("/daily/{id}/review") // ✅ 确保路径正确
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 问题3: 通知发送失败
|
|||
|
|
|
|||
|
|
**原因**: notification表不存在或NotificationMapper未配置
|
|||
|
|
|
|||
|
|
**解决方案**:
|
|||
|
|
```sql
|
|||
|
|
-- 检查表是否存在
|
|||
|
|
SHOW TABLES LIKE 'notification';
|
|||
|
|
|
|||
|
|
-- 如果不存在,执行创建表SQL
|
|||
|
|
-- 参考: peidu/docs/fixes/2026-01-23-服务反馈处理流程完善/database-extension.sql
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 问题4: 参数验证失败
|
|||
|
|
|
|||
|
|
**原因**: DTO类缺少@Valid注解或验证规则
|
|||
|
|
|
|||
|
|
**解决方案**:
|
|||
|
|
```java
|
|||
|
|
// 检查Controller方法
|
|||
|
|
public Result<Boolean> reviewFeedback(
|
|||
|
|
@PathVariable Long id,
|
|||
|
|
@RequestBody @Valid ReviewDTO reviewDTO, // ✅ 确保有@Valid
|
|||
|
|
HttpServletRequest request) {
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📊 测试结果记录
|
|||
|
|
|
|||
|
|
### 测试环境
|
|||
|
|
- 后端版本: ___________
|
|||
|
|
- 数据库版本: MySQL 8.0
|
|||
|
|
- 测试时间: ___________
|
|||
|
|
|
|||
|
|
### 测试结果
|
|||
|
|
| 测试项 | 状态 | 备注 |
|
|||
|
|
|--------|------|------|
|
|||
|
|
| 编译成功 | ⬜ | |
|
|||
|
|
| 服务启动 | ⬜ | |
|
|||
|
|
| 审核功能 | ⬜ | |
|
|||
|
|
| 家长反馈 | ⬜ | |
|
|||
|
|
| 问题处理 | ⬜ | |
|
|||
|
|
| 列表查询 | ⬜ | |
|
|||
|
|
| 通知发送 | ⬜ | |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🎯 下一步计划
|
|||
|
|
|
|||
|
|
测试通过后,进行以下工作:
|
|||
|
|
|
|||
|
|
1. **前端页面开发**
|
|||
|
|
- 管理师端:审核反馈页面
|
|||
|
|
- 管理师端:处理问题页面
|
|||
|
|
- 家长端:反馈详情页(添加评价功能)
|
|||
|
|
|
|||
|
|
2. **功能完善**
|
|||
|
|
- 添加家长权限验证
|
|||
|
|
- 添加通知重试机制
|
|||
|
|
- 添加更详细的业务规则验证
|
|||
|
|
|
|||
|
|
3. **性能优化**
|
|||
|
|
- 添加缓存机制
|
|||
|
|
- 优化数据库查询
|
|||
|
|
- 添加分页优化
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**立即开始测试!** 🚀
|
|||
|
|
|
|||
|
|
**文档版本**: v1.0
|
|||
|
|
**最后更新**: 2026-01-23
|