| .. | ||
| README.md | ||
服务反馈处理流程完善
实施日期: 2026-01-23
实施人: AI助手
优先级: 🔥 高优先级
📋 问题分析
当前状态
根据代码检查,服务反馈功能存在以下问题:
1. 缺少完整的处理流程 ⚠️
- ✅ 陪伴员可以提交反馈(
teacher/feedback-edit.vue) - ✅ 家长可以查看反馈(
user-package/pages/feedback/list.vue) - ⚠️ 管理师端缺少反馈审核和处理功能
- ⚠️ 缺少反馈状态流转机制
- ⚠️ 缺少异常反馈的处理流程
2. 数据流向不完整 ⚠️
陪伴员提交反馈 → ❓ → 家长查看
↓
缺少管理师审核环节
3. 缺少通知机制 ⚠️
- 陪伴员提交反馈后,家长不知道
- 家长提出问题后,管理师不知道
- 管理师处理后,双方不知道
4. 缺少质量控制 ⚠️
- 没有反馈内容质量检查
- 没有反馈及时性监控
- 没有反馈完整性验证
🎯 解决方案
方案概述
建立完整的服务反馈闭环流程:
陪伴员提交反馈
↓
管理师审核(可选)
↓
通知家长查看
↓
家长查看并评价
↓
管理师跟进处理
↓
反馈归档
📊 完整流程设计
流程1: 陪伴员提交反馈
触发时机: 服务完成后(签退时或24小时内)
操作步骤:
- 陪伴员在订单详情页点击"提交反馈"
- 填写反馈内容(必填)
- 上传照片/视频(可选)
- 提交后状态变为"待审核"
数据字段:
{
"orderId": 123,
"studentId": 456,
"teacherId": 789,
"recordDate": "2026-01-23",
"content": "今天学习状态很好...",
"imageList": ["url1", "url2"],
"videoList": ["url1"],
"status": 0, // 0=待审核, 1=已通过, 2=需修改
"submitTime": "2026-01-23 18:00:00"
}
前端页面: ✅ 已实现
teacher-package/pages/teacher/feedback-edit.vue
后端接口: ✅ 已实现
POST /api/growth-record/daily
流程2: 管理师审核反馈(新增)
触发时机: 陪伴员提交反馈后
操作步骤:
- 管理师在"反馈管理"页面看到待审核列表
- 查看反馈内容和媒体
- 选择操作:
- 通过: 反馈发送给家长
- 需修改: 退回给陪伴员,说明原因
- 标记异常: 需要特别关注的反馈
审核标准:
- ✅ 内容完整(不少于50字)
- ✅ 描述具体(有具体事例)
- ✅ 态度积极(正面引导)
- ✅ 照片清晰(如有上传)
数据字段:
{
"recordId": 123,
"reviewStatus": 1, // 1=通过, 2=需修改
"reviewNote": "内容需要更具体",
"reviewTime": "2026-01-23 19:00:00",
"reviewerId": 999
}
前端页面: ⚠️ 需要新增
manager-package/pages/manager/feedback-review.vue
后端接口: ⚠️ 需要新增
PUT /api/growth-record/daily/{id}/review
流程3: 通知家长查看(新增)
触发时机: 管理师审核通过后
通知方式:
- 微信模板消息(推荐)
- 站内消息
- 小程序订阅消息
通知内容:
【服务反馈】
您好,陪伴员已提交今日服务反馈,请及时查看。
服务日期:2026-01-23
陪伴员:张老师
学生:小明
点击查看详情 >
数据字段:
{
"userId": 456, // 家长ID
"type": "feedback_submitted",
"title": "服务反馈",
"content": "陪伴员已提交今日服务反馈",
"relatedId": 123, // 反馈记录ID
"relatedType": "growth_record",
"status": 0, // 0=未读, 1=已读
"createTime": "2026-01-23 19:05:00"
}
前端页面: ⚠️ 需要完善
- 在家长端首页显示未读反馈数量
- 点击跳转到反馈列表
后端接口: ⚠️ 需要新增
POST /api/notification/send
流程4: 家长查看并评价
触发时机: 收到通知后
操作步骤:
- 家长打开"服务反馈"页面
- 查看反馈详情
- 查看照片/视频
- 可选操作:
- 满意: 点赞
- 有疑问: 联系陪伴员或管理师
- 不满意: 提交投诉
数据字段:
{
"recordId": 123,
"parentId": 456,
"viewTime": "2026-01-23 20:00:00",
"satisfaction": 5, // 1-5星
"parentNote": "很满意,谢谢老师",
"hasQuestion": false
}
前端页面: ✅ 已实现
user-package/pages/feedback/list.vueuser-package/pages/feedback/detail.vue
后端接口: ⚠️ 需要新增
POST /api/growth-record/daily/{id}/parent-feedback
流程5: 管理师跟进处理(新增)
触发时机:
- 家长提出疑问
- 家长不满意
- 反馈被标记为异常
操作步骤:
- 管理师在"待处理反馈"列表看到问题
- 查看详情和家长反馈
- 联系陪伴员了解情况
- 联系家长沟通解决
- 记录处理结果
- 关闭工单
数据字段:
{
"recordId": 123,
"issueType": "parent_question", // 问题类型
"issueDesc": "家长对学习进度有疑问",
"handleStatus": 1, // 0=待处理, 1=处理中, 2=已解决
"handleNote": "已与家长沟通,解释了学习计划",
"handleTime": "2026-01-23 21:00:00",
"handlerId": 999
}
前端页面: ⚠️ 需要新增
manager-package/pages/manager/feedback-handle.vue
后端接口: ⚠️ 需要新增
POST /api/growth-record/daily/{id}/handlePUT /api/growth-record/daily/{id}/close
流程6: 反馈归档
触发时机:
- 家长满意且无疑问
- 问题已解决
- 超过7天未处理
操作步骤:
- 系统自动归档或管理师手动归档
- 更新反馈状态为"已归档"
- 生成统计数据
数据字段:
{
"recordId": 123,
"archiveStatus": 1, // 1=已归档
"archiveTime": "2026-01-30 00:00:00",
"archiveReason": "auto" // auto=自动, manual=手动
}
🔧 技术实现
1. 数据库表设计
1.1 扩展 growth_record 表
ALTER TABLE `growth_record`
ADD COLUMN `review_status` TINYINT DEFAULT 0 COMMENT '审核状态: 0=待审核, 1=已通过, 2=需修改',
ADD COLUMN `review_note` VARCHAR(500) COMMENT '审核备注',
ADD COLUMN `review_time` DATETIME COMMENT '审核时间',
ADD COLUMN `reviewer_id` BIGINT COMMENT '审核人ID',
ADD COLUMN `parent_satisfaction` TINYINT COMMENT '家长满意度: 1-5星',
ADD COLUMN `parent_note` VARCHAR(500) COMMENT '家长备注',
ADD COLUMN `parent_view_time` DATETIME COMMENT '家长查看时间',
ADD COLUMN `has_question` TINYINT DEFAULT 0 COMMENT '是否有疑问: 0=否, 1=是',
ADD COLUMN `handle_status` TINYINT DEFAULT 0 COMMENT '处理状态: 0=无需处理, 1=待处理, 2=处理中, 3=已解决',
ADD COLUMN `handle_note` TEXT COMMENT '处理记录',
ADD COLUMN `handle_time` DATETIME COMMENT '处理时间',
ADD COLUMN `handler_id` BIGINT COMMENT '处理人ID',
ADD COLUMN `archive_status` TINYINT DEFAULT 0 COMMENT '归档状态: 0=未归档, 1=已归档',
ADD COLUMN `archive_time` DATETIME COMMENT '归档时间';
1.2 创建通知表(如不存在)
CREATE TABLE IF NOT EXISTS `notification` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`user_id` BIGINT NOT NULL COMMENT '用户ID',
`type` VARCHAR(50) NOT NULL COMMENT '通知类型',
`title` VARCHAR(100) NOT NULL COMMENT '通知标题',
`content` TEXT COMMENT '通知内容',
`related_id` BIGINT COMMENT '关联ID',
`related_type` VARCHAR(50) COMMENT '关联类型',
`status` TINYINT DEFAULT 0 COMMENT '状态: 0=未读, 1=已读',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`read_time` DATETIME COMMENT '阅读时间',
PRIMARY KEY (`id`),
INDEX `idx_user_id` (`user_id`),
INDEX `idx_status` (`status`),
INDEX `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='通知表';
2. 后端接口开发
2.1 管理师审核反馈
Controller: GrowthRecordController.java
/**
* 管理师审核反馈
*/
@PutMapping("/daily/{id}/review")
public Result<Boolean> reviewFeedback(
@PathVariable Long id,
@RequestBody ReviewDTO reviewDTO,
HttpServletRequest request
) {
Long managerId = getUserId(request);
boolean success = growthRecordService.reviewFeedback(id, reviewDTO, managerId);
return success ? Result.success(true, "审核成功") : Result.error("审核失败");
}
Service: GrowthRecordServiceImpl.java
@Override
@Transactional
public boolean reviewFeedback(Long id, ReviewDTO reviewDTO, Long managerId) {
// 1. 更新审核状态
GrowthRecord record = this.getById(id);
if (record == null) {
throw new BusinessException("反馈记录不存在");
}
record.setReviewStatus(reviewDTO.getReviewStatus());
record.setReviewNote(reviewDTO.getReviewNote());
record.setReviewTime(LocalDateTime.now());
record.setReviewerId(managerId);
boolean updated = this.updateById(record);
// 2. 如果审核通过,发送通知给家长
if (updated && reviewDTO.getReviewStatus() == 1) {
notificationService.sendFeedbackNotification(record);
}
// 3. 如果需要修改,发送通知给陪伴员
if (updated && reviewDTO.getReviewStatus() == 2) {
notificationService.sendRevisionNotification(record);
}
return updated;
}
2.2 家长反馈
Controller: GrowthRecordController.java
/**
* 家长对反馈进行评价
*/
@PostMapping("/daily/{id}/parent-feedback")
public Result<Boolean> parentFeedback(
@PathVariable Long id,
@RequestBody ParentFeedbackDTO feedbackDTO,
HttpServletRequest request
) {
Long parentId = getUserId(request);
boolean success = growthRecordService.parentFeedback(id, feedbackDTO, parentId);
return success ? Result.success(true, "提交成功") : Result.error("提交失败");
}
2.3 管理师处理问题
Controller: GrowthRecordController.java
/**
* 管理师处理反馈问题
*/
@PostMapping("/daily/{id}/handle")
public Result<Boolean> handleFeedback(
@PathVariable Long id,
@RequestBody HandleDTO handleDTO,
HttpServletRequest request
) {
Long managerId = getUserId(request);
boolean success = growthRecordService.handleFeedback(id, handleDTO, managerId);
return success ? Result.success(true, "处理成功") : Result.error("处理失败");
}
3. 前端页面开发
3.1 管理师审核页面
文件: manager-package/pages/manager/feedback-review.vue
功能:
- 显示待审核反馈列表
- 查看反馈详情
- 审核通过/需修改
- 标记异常反馈
3.2 管理师处理页面
文件: manager-package/pages/manager/feedback-handle.vue
功能:
- 显示待处理问题列表
- 查看问题详情
- 记录处理过程
- 关闭工单
3.3 家长反馈页面(完善)
文件: user-package/pages/feedback/detail.vue
新增功能:
- 满意度评分
- 提出疑问
- 联系管理师
📝 实施步骤
第一阶段: 数据库和后端(1-2天)
- ✅ 执行SQL脚本扩展表结构
- ✅ 创建DTO类
- ✅ 实现审核接口
- ✅ 实现家长反馈接口
- ✅ 实现处理接口
- ✅ 实现通知服务
第二阶段: 管理师端(2-3天)
- ✅ 开发审核页面
- ✅ 开发处理页面
- ✅ 集成到管理师端菜单
- ✅ 测试审核流程
第三阶段: 家长端(1-2天)
- ✅ 完善反馈详情页
- ✅ 添加评价功能
- ✅ 添加提问功能
- ✅ 测试家长端流程
第四阶段: 通知和测试(1-2天)
- ✅ 实现通知推送
- ✅ 端到端测试
- ✅ 性能优化
- ✅ 文档编写
🎯 预期效果
1. 完整的闭环流程
- 陪伴员 → 管理师 → 家长 → 管理师
- 每个环节都有明确的操作和反馈
2. 质量保障
- 管理师审核确保反馈质量
- 家长评价形成监督机制
- 问题及时发现和处理
3. 提升满意度
- 家长及时了解孩子情况
- 问题快速响应和解决
- 服务质量持续改进
4. 数据沉淀
- 反馈数据用于陪伴员考核
- 问题数据用于服务改进
- 满意度数据用于质量监控
📊 监控指标
1. 及时性指标
- 反馈提交率: 目标 > 95%
- 审核及时率: 目标 < 2小时
- 问题响应时间: 目标 < 4小时
2. 质量指标
- 反馈通过率: 目标 > 90%
- 家长满意度: 目标 > 4.5星
- 问题解决率: 目标 > 95%
3. 活跃度指标
- 家长查看率: 目标 > 80%
- 家长评价率: 目标 > 60%
- 问题提出率: 监控 < 10%
🔗 相关文档
文档版本: v1.0
最后更新: 2026-01-23