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

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

162 lines
4.4 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.
# 陪练记录列表为空 - 问题排查报告
## 问题描述
用户访问 `https://aiedu.ireborn.com.cn/trainee/practice-records` 页面时,陪练记录列表显示为空。
## 排查过程
### 1. 数据库验证 ✓
检查数据库中的陪练记录:
```bash
# 总记录数
SELECT COUNT(*) FROM practice_sessions WHERE is_deleted=0;
# 结果146条记录
# 按用户分组统计
SELECT user_id, COUNT(*) as count
FROM practice_sessions
WHERE is_deleted=0 AND status='completed'
GROUP BY user_id;
# 结果:多个用户都有记录,其中:
# - user_id=2 (admin): 18条
# - user_id=5: 25条
# - user_id=6: 20条
# - user_id=7: 22条
```
**结论:数据库中有充足的测试数据**
### 2. 后端API验证 ✓
直接测试后端API接口
```bash
# 1. 登录
curl -X POST http://localhost:8000/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"admin123"}'
# 返回200 OK获取token成功
# 2. 获取陪练记录列表
curl -X GET "http://localhost:8000/api/v1/practice/sessions/list?page=1&size=20" \
-H "Authorization: Bearer {token}"
# 返回200 OK成功返回18条记录
```
**结论后端API工作正常**
### 3. 前端代码审查 ✓
检查前端代码:
-`/src/api/practice.ts` - API调用正确
-`/src/utils/http.ts` - Token管理和请求拦截器配置正确
-`/src/views/trainee/practice-records.vue` - 数据加载和显示逻辑正常
**结论:前端代码没有问题**
## 问题根源分析
综合排查结果,可能的原因:
### 最可能的原因
1. **用户未登录** - 用户在浏览器中没有登录localStorage中没有token
2. **Token过期** - 用户的access_token已过期需要重新登录
3. **用户账号没有数据** - 用户登录的账号不是测试账号,该账号确实没有陪练记录
### 其他可能原因
4. 浏览器缓存问题
5. 网络请求被拦截(防火墙/代理)
6. 前端环境变量配置问题
## 解决方案
### 方案1使用测试页面诊断推荐
访问测试页面进行诊断:
```
https://aiedu.ireborn.com.cn/test-practice-records.html
```
该页面可以:
1. 测试登录功能
2. 查看localStorage中的token
3. 直接调用API获取陪练记录
4. 显示详细的调试信息
### 方案2手动登录测试
1. 打开 `https://aiedu.ireborn.com.cn/login`
2. 使用测试账号登录:
- 用户名:`admin`
- 密码:`admin123`
3. 登录成功后访问陪练记录页面
### 方案3浏览器控制台检查
按F12打开浏览器开发者工具在Console中执行
```javascript
// 检查token
console.log('Token:', localStorage.getItem('access_token'));
// 检查用户信息
console.log('User:', localStorage.getItem('user_info'));
// 手动调用API
fetch('/api/v1/practice/sessions/list?page=1&size=20', {
headers: {
'Authorization': `Bearer ${localStorage.getItem('access_token')}`
}
}).then(r => r.json()).then(console.log);
```
## 测试账号信息
| 用户名 | 密码 | 角色 | 陪练记录数 |
|--------|------|------|------------|
| admin | admin123 | 管理员 | 18条 |
| superadmin | admin123 | 超级管理员 | 20条 |
| consultant_001 | admin123 | 咨询师 | 25条 |
## 下一步操作
请按照以下步骤操作:
1. **立即操作**:访问测试页面 https://aiedu.ireborn.com.cn/test-practice-records.html
- 点击"登录"按钮
- 点击"获取陪练记录列表"按钮
- 查看返回结果
2. **如果测试页面正常**
- 说明API和数据都正常
- 可能是主页面的登录状态问题
- 建议清除浏览器缓存后重新登录
3. **如果测试页面也显示空**
- 点击"显示调试信息"
- 截图发送给我进一步分析
## 技术细节
### API端点
- **登录**: `POST /api/v1/auth/login`
- **陪练记录列表**: `GET /api/v1/practice/sessions/list`
- **陪练统计**: `GET /api/v1/practice/stats`
### 数据库表
- `practice_sessions` - 陪练会话记录
- `practice_reports` - 陪练分析报告
- `practice_dialogues` - 陪练对话记录
### 查询条件
后端API只返回当前登录用户的记录
```sql
WHERE user_id = :current_user_id
AND is_deleted = FALSE
AND status = 'completed'
```
## 总结
✅ 数据库有数据
✅ 后端API正常
✅ 前端代码正常
⚠️ 需要用户确认:是否已登录?使用的是哪个账号?
**建议:先使用测试页面确认问题,如果测试页面能正常显示数据,说明是主应用的登录状态问题。**