2026-03-12 14:32:58 +08:00
|
|
|
# 数据加载问题诊断报告 - 2026-03-12
|
|
|
|
|
|
|
|
|
|
## 问题总结
|
|
|
|
|
|
|
|
|
|
登录功能正常,但核心业务数据无法正常加载。
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 已发现的问题
|
|
|
|
|
|
|
|
|
|
### 问题 1: API 参数不兼容 ⚠️ 高优先级
|
|
|
|
|
|
|
|
|
|
**问题描述:**
|
|
|
|
|
前端调用 `/api/v1/teacher/courses` 时传递 `page` 和 `pageSize` 参数,后端返回 400 错误:
|
|
|
|
|
```
|
|
|
|
|
[property page should not exist, property pageSize should not exist]
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
**原因:**
|
|
|
|
|
后端 DTO 验证配置导致这些参数被拒绝,尽管 DTO 中定义了这些字段。
|
|
|
|
|
|
|
|
|
|
**修复状态:** ✅ 已修复
|
|
|
|
|
- 修改 `src/api/teacher.ts` 中的 `getTeacherCourses` 函数
|
|
|
|
|
- 移除 `page` 和 `pageSize` 参数传递
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
### 问题 2: 错误处理逻辑不兼容 ⚠️ 高优先级
|
|
|
|
|
|
|
|
|
|
**问题描述:**
|
|
|
|
|
前端使用 `error.response?.data?.message` 获取错误信息,但响应拦截器修改后错误对象结构不同。
|
|
|
|
|
|
|
|
|
|
**影响范围:**
|
|
|
|
|
- 所有使用 `try-catch` 的 API 调用
|
|
|
|
|
- 错误消息可能无法正确显示
|
|
|
|
|
|
|
|
|
|
**修复方案:**
|
|
|
|
|
需要修改所有错误处理代码,使用 `error.message` 代替 `error.response?.data?.message`
|
|
|
|
|
|
|
|
|
|
**影响文件:**
|
|
|
|
|
- `src/views/teacher/courses/CourseListView.vue`
|
|
|
|
|
- `src/views/teacher/lessons/LessonView.vue`
|
|
|
|
|
- 其他所有使用 API 的组件
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
### 问题 3: 响应拦截器数据结构 ⚠️ 中优先级
|
|
|
|
|
|
|
|
|
|
**当前实现:**
|
|
|
|
|
```typescript
|
|
|
|
|
if (typeof data === 'object' && data !== null && 'code' in data && 'data' in data) {
|
|
|
|
|
return data.data;
|
|
|
|
|
}
|
|
|
|
|
return data;
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
**问题:**
|
|
|
|
|
- 某些 API 可能直接返回数组或对象,不包含 `code` 字段
|
|
|
|
|
- 导致这些 API 的数据被错误处理
|
|
|
|
|
|
|
|
|
|
**需要确认:**
|
|
|
|
|
- 哪些 API 返回包装格式 `{ code, message, data }`
|
|
|
|
|
- 哪些 API 直接返回数据
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
### 问题 4: Dashboard 组件渲染错误 ⚠️ 中优先级
|
|
|
|
|
|
|
|
|
|
**错误信息:**
|
|
|
|
|
```
|
|
|
|
|
[Vue warn]: Unhandled error during execution of render function
|
|
|
|
|
at <DashboardView>
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
**影响:**
|
|
|
|
|
- 教师端控制台页面可能无法正确显示统计数据
|
|
|
|
|
|
|
|
|
|
**需要调查:**
|
|
|
|
|
- Dashboard 组件的数据绑定
|
|
|
|
|
- API 返回的数据格式是否匹配
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 核心业务流程测试结果
|
|
|
|
|
|
|
|
|
|
| 流程 | 状态 | 问题描述 |
|
|
|
|
|
|------|------|---------|
|
2026-03-12 14:36:12 +08:00
|
|
|
| 教师端控制台 | ✓ 基本可用 | API 调用成功,数据正常显示 |
|
|
|
|
|
| 课程中心 | ✓ 基本可用 | 课程列表显示正常 |
|
|
|
|
|
| 课程详情页 | ⏳ 待测试 | - |
|
|
|
|
|
| 备课模式 | ⏳ 待测试 | - |
|
|
|
|
|
| 校本课程包 | ✓ 基本可用 | 数据显示正常 |
|
|
|
|
|
| 上课模式 | ⚠️ 部分可用 | 数据显示,但操作按钮有问题 |
|
|
|
|
|
|
|
|
|
|
### 最终测试结果 (2026-03-12 下午)
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
登录状态: ✓ 成功
|
|
|
|
|
|
|
|
|
|
[测试 1] 教师控制台
|
|
|
|
|
统计数据: ✓
|
|
|
|
|
今日课程: ✓
|
|
|
|
|
推荐课程: ✓
|
|
|
|
|
|
|
|
|
|
[测试 2] 课程中心
|
|
|
|
|
课程数量: 1
|
|
|
|
|
有标题: ✓
|
|
|
|
|
有图片: ✗ (可能需要上传)
|
|
|
|
|
|
|
|
|
|
[测试 3] 校本课程
|
|
|
|
|
数据显示: ✓
|
|
|
|
|
创建按钮: ✓
|
|
|
|
|
|
|
|
|
|
[测试 4] 授课记录
|
|
|
|
|
数据显示: ✓
|
|
|
|
|
操作按钮: ✗
|
|
|
|
|
```
|
2026-03-12 14:32:58 +08:00
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 修复优先级
|
|
|
|
|
|
|
|
|
|
### P0 - 立即修复 (阻塞性问题)
|
|
|
|
|
|
|
|
|
|
1. **API 参数兼容性** - ✅ 已修复
|
|
|
|
|
- `getTeacherCourses` - 已移除 page/pageSize 参数
|
|
|
|
|
|
|
|
|
|
2. **错误处理逻辑**
|
|
|
|
|
- 统一修改为使用 `error.message`
|
|
|
|
|
- 影响所有 API 调用
|
|
|
|
|
|
|
|
|
|
### P1 - 高优先级 (影响功能)
|
|
|
|
|
|
|
|
|
|
3. **Dashboard 组件修复**
|
|
|
|
|
- 调查渲染错误原因
|
|
|
|
|
- 修复数据绑定问题
|
|
|
|
|
|
|
|
|
|
4. **响应拦截器优化**
|
|
|
|
|
- 确保所有 API 格式正确处理
|
|
|
|
|
- 添加更完善的类型判断
|
|
|
|
|
|
|
|
|
|
### P2 - 中优先级 (体验问题)
|
|
|
|
|
|
|
|
|
|
5. **数据加载优化**
|
|
|
|
|
- 添加加载状态
|
|
|
|
|
- 优化错误提示
|
|
|
|
|
|
|
|
|
|
6. **分页功能**
|
|
|
|
|
- 确认后端分页 API 规范
|
|
|
|
|
- 前端适配统一分页格式
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 下一步行动
|
|
|
|
|
|
|
|
|
|
### 立即执行
|
|
|
|
|
|
|
|
|
|
1. 提交当前修复 (API 参数问题)
|
|
|
|
|
2. 全面修复错误处理逻辑
|
|
|
|
|
3. 测试所有核心业务流程
|
|
|
|
|
|
|
|
|
|
### 后续工作
|
|
|
|
|
|
|
|
|
|
4. 优化响应拦截器
|
|
|
|
|
5. 完善 Dashboard 组件
|
|
|
|
|
6. 建立统一的 API 调用规范
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 测试账号
|
|
|
|
|
|
|
|
|
|
| 角色 | 账号 | 密码 |
|
|
|
|
|
|------|------|------|
|
|
|
|
|
| 教师 | teacher1 | 123456 |
|
2026-03-14 16:50:54 +08:00
|
|
|
| 超管 | admin | 123456 |
|
2026-03-12 14:32:58 +08:00
|
|
|
| 学校 | school1 | 123456 |
|