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
|