# 陪练记录问题排查指南 ## 问题现象 - 显示"共找到 3 条陪练记录" - 怀疑数据仍然是硬编码 ## 已完成的修复 1. ✅ 移除了所有硬编码假数据 2. ✅ 移除了前端重复筛选逻辑(`filteredRecordsList`) 3. ✅ 修复了数据显示数量(改用 `total` 而不是 `filteredRecordsList.length`) 4. ✅ 为所有用户注入了完整的测试数据 ## 数据库实际数据 ### 最近30天内各用户的陪练记录数 ``` 用户ID 用户名 角色 记录数 1 superadmin admin 9条 2 admin admin 11条 5 consultant_001 trainee 8条 6 nurse_001 trainee 20条 7 therapist_001 trainee 15条 8 receptionist_001 trainee 8条 ``` ### 所有时间范围内各用户的陪练记录数 ``` 用户ID 用户名 角色 记录数 1 superadmin admin 20条 2 admin admin 18条 5 consultant_001 trainee 25条 6 nurse_001 trainee 20条 7 therapist_001 trainee 22条 8 receptionist_001 trainee 18条 ``` ## 排查步骤 ### 步骤1:确认当前登录用户 在浏览器控制台执行: ```javascript const token = localStorage.getItem('access_token') console.log('Token:', token) // 解析token查看用户信息(如果是JWT) if (token) { const payload = JSON.parse(atob(token.split('.')[1])) console.log('用户信息:', payload) } ``` ### 步骤2:清除浏览器缓存 1. **Chrome/Edge**: - 按 `Cmd + Shift + R` (Mac) 或 `Ctrl + Shift + R` (Windows) 硬刷新 - 或者右键点击刷新按钮 → "清空缓存并硬性重新加载" 2. **清除所有缓存**: - 打开开发者工具 (F12) - 右键点击刷新按钮 - 选择"清空缓存并硬性重新加载" ### 步骤3:检查网络请求 1. 打开浏览器开发者工具 (F12) 2. 切换到 "Network" (网络) 标签 3. 刷新页面 4. 找到 `sessions/list` 请求 5. 查看: - 请求参数 (Query String Parameters) - 响应数据 (Response) **应该看到的响应格式:** ```json { "code": 200, "message": "success", "data": { "items": [...], "total": 实际记录数, "page": 1, "page_size": 20, "pages": 总页数 } } ``` ### 步骤4:检查日期筛选 前端默认筛选**最近30天**的数据: ```typescript const dateRange = ref<[Date, Date] | null>([ new Date(new Date().setDate(new Date().getDate() - 30)), new Date() ]) ``` 如果想显示所有数据,可以: 1. 点击页面上的"清空全部"按钮 2. 或者手动清除日期范围选择器 ### 步骤5:检查控制台错误 查看浏览器控制台是否有: - 红色错误信息 - API请求失败 - 数据格式错误 ## 可能的原因分析 ### 如果确实只有3条 1. **登录了manager用户** - manager_beijing 和 manager_shanghai 没有陪练记录 2. **应用了严格的筛选条件** - 场景类型、关键词、日期等 3. **当前登录用户确实只完成了3次陪练** ### 如果看到的数据重复或异常 1. 浏览器缓存了旧的JS文件 2. 需要强制刷新 ## 验证数据真实性的方法 ### 方法1:直接查询数据库 ```sql -- 查看当前用户的陪练记录(假设user_id=6) SELECT ps.session_id, ps.scene_name, ps.start_time, pr.total_score FROM practice_sessions ps LEFT JOIN practice_reports pr ON ps.session_id = pr.session_id WHERE ps.user_id = 6 AND ps.is_deleted = 0 AND ps.status = 'completed' ORDER BY ps.start_time DESC; ``` ### 方法2:查看后端日志 ```bash # 查看后端容器日志 docker logs kaopeilian-backend-dev -f --tail=100 # 筛选陪练相关日志 docker logs kaopeilian-backend-dev 2>&1 | grep "practice" ``` ### 方法3:使用curl测试API ```bash # 先登录获取token TOKEN=$(curl -s -X POST http://localhost:8000/api/v1/auth/login \ -H "Content-Type: application/json" \ -d '{"username":"nurse_001","password":"password123"}' | \ jq -r '.data.access_token') # 测试陪练记录API curl -X GET "http://localhost:8000/api/v1/practice/sessions/list?page=1&size=20" \ -H "Authorization: Bearer $TOKEN" | jq ``` ## 联系信息 如果以上步骤都无法解决问题,请提供: 1. 当前登录的用户名 2. 浏览器控制台的Network请求截图 3. 控制台的错误信息(如果有) 4. 后端日志相关内容 --- **重要提醒**:前端代码已经完全修复,不再有硬编码数据。如果仍然看到异常,99%是浏览器缓存问题,请务必先清除缓存!