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

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

4.4 KiB
Raw Blame History

陪练记录列表为空 - 问题排查报告

问题描述

用户访问 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 - 数据加载和显示逻辑正常

结论:前端代码没有问题

问题根源分析

综合排查结果,可能的原因:

最可能的原因

  1. 用户未登录 - 用户在浏览器中没有登录localStorage中没有token
  2. Token过期 - 用户的access_token已过期需要重新登录
  3. 用户账号没有数据 - 用户登录的账号不是测试账号,该账号确实没有陪练记录

其他可能原因

  1. 浏览器缓存问题
  2. 网络请求被拦截(防火墙/代理)
  3. 前端环境变量配置问题

解决方案

方案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中执行

// 检查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只返回当前登录用户的记录

WHERE user_id = :current_user_id 
  AND is_deleted = FALSE 
  AND status = 'completed'

总结

数据库有数据
后端API正常
前端代码正常
⚠️ 需要用户确认:是否已登录?使用的是哪个账号?

建议:先使用测试页面确认问题,如果测试页面能正常显示数据,说明是主应用的登录状态问题。