- 从服务器拉取完整代码 - 按框架规范整理项目结构 - 配置 Drone CI 测试环境部署 - 包含后端(FastAPI)、前端(Vue3)、管理端 技术栈: Vue3 + TypeScript + FastAPI + MySQL
4.4 KiB
4.4 KiB
陪练记录列表为空 - 问题排查报告
问题描述
用户访问 https://aiedu.ireborn.com.cn/trainee/practice-records 页面时,陪练记录列表显示为空。
排查过程
1. 数据库验证 ✓
检查数据库中的陪练记录:
# 总记录数
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接口:
# 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- 数据加载和显示逻辑正常
结论:前端代码没有问题
问题根源分析
综合排查结果,可能的原因:
最可能的原因
- 用户未登录 - 用户在浏览器中没有登录,localStorage中没有token
- Token过期 - 用户的access_token已过期,需要重新登录
- 用户账号没有数据 - 用户登录的账号不是测试账号,该账号确实没有陪练记录
其他可能原因
- 浏览器缓存问题
- 网络请求被拦截(防火墙/代理)
- 前端环境变量配置问题
解决方案
方案1:使用测试页面诊断(推荐)✨
访问测试页面进行诊断:
https://aiedu.ireborn.com.cn/test-practice-records.html
该页面可以:
- 测试登录功能
- 查看localStorage中的token
- 直接调用API获取陪练记录
- 显示详细的调试信息
方案2:手动登录测试
- 打开
https://aiedu.ireborn.com.cn/login - 使用测试账号登录:
- 用户名:
admin - 密码:
admin123
- 用户名:
- 登录成功后访问陪练记录页面
方案3:浏览器控制台检查
按F12打开浏览器开发者工具,在Console中执行:
// 检查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条 |
下一步操作
请按照以下步骤操作:
-
立即操作:访问测试页面 https://aiedu.ireborn.com.cn/test-practice-records.html
- 点击"登录"按钮
- 点击"获取陪练记录列表"按钮
- 查看返回结果
-
如果测试页面正常:
- 说明API和数据都正常
- 可能是主页面的登录状态问题
- 建议清除浏览器缓存后重新登录
-
如果测试页面也显示空:
- 点击"显示调试信息"
- 截图发送给我进一步分析
技术细节
API端点
- 登录:
POST /api/v1/auth/login - 陪练记录列表:
GET /api/v1/practice/sessions/list - 陪练统计:
GET /api/v1/practice/stats
数据库表
practice_sessions- 陪练会话记录practice_reports- 陪练分析报告practice_dialogues- 陪练对话记录
查询条件
后端API只返回当前登录用户的记录:
WHERE user_id = :current_user_id
AND is_deleted = FALSE
AND status = 'completed'
总结
✅ 数据库有数据
✅ 后端API正常
✅ 前端代码正常
⚠️ 需要用户确认:是否已登录?使用的是哪个账号?
建议:先使用测试页面确认问题,如果测试页面能正常显示数据,说明是主应用的登录状态问题。