feat: 初始化考培练系统项目

- 从服务器拉取完整代码
- 按框架规范整理项目结构
- 配置 Drone CI 测试环境部署
- 包含后端(FastAPI)、前端(Vue3)、管理端

技术栈: Vue3 + TypeScript + FastAPI + MySQL
This commit is contained in:
111
2026-01-24 19:33:28 +08:00
commit 998211c483
1197 changed files with 228429 additions and 0 deletions

View File

@@ -0,0 +1,167 @@
# 陪练记录问题排查指南
## 问题现象
- 显示"共找到 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%是浏览器缓存问题,请务必先清除缓存!