Files
012-kaopeilian/知识库/陪练记录问题排查指南.md
111 998211c483 feat: 初始化考培练系统项目
- 从服务器拉取完整代码
- 按框架规范整理项目结构
- 配置 Drone CI 测试环境部署
- 包含后端(FastAPI)、前端(Vue3)、管理端

技术栈: Vue3 + TypeScript + FastAPI + MySQL
2026-01-24 19:33:28 +08:00

168 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 陪练记录问题排查指南
## 问题现象
- 显示"共找到 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%是浏览器缓存问题,请务必先清除缓存!