后端重构:
- 添加统一响应格式 ResultDto<T> 和 PageResultDto<T>
- 添加分页查询 DTO 基类 PageQueryDto
- 添加响应转换拦截器 TransformInterceptor
- 添加公共工具函数(JSON 解析、分页计算)
- 配置 Swagger/OpenAPI 文档(访问路径:/api-docs)
- Tenant 模块 DTO 规范化示例(添加 @ApiProperty 装饰器)
- CourseLesson 控制器重构 - 移除类级路径参数,修复 Orval 验证错误
- 后端 DTO 规范化 - 为 Course、Lesson、TeacherCourse、SchoolCourse 控制器添加完整的 Swagger 装饰器
前端重构:
- 配置 Orval 从后端 OpenAPI 自动生成 API 客户端
- 生成 API 客户端代码(带完整参数定义)
- 创建 API 客户端统一入口 (src/api/client.ts)
- 创建 API 适配层 (src/api/teacher.adapter.ts)
- 配置文件路由 (unplugin-vue-router)
- 课程模块迁移到新 API 客户端
- 修复 PrepareModeView.vue API 调用错误
- 教师模块迁移到新 API 客户端
- 修复 school-course.ts 类型错误
- 清理 teacher.adapter.ts 未使用导入
- 修复 client.ts API 客户端结构
- 创建文件路由目录结构
Bug 修复:
- 修复路由配置问题 - 移除 top-level await,改用手动路由配置
- 修复响应拦截器 - 正确解包 { code, message, data } 格式的响应
- 清理 teacher.adapter.ts 未使用导入
- 修复 client.ts API 客户端结构
- 创建文件路由目录结构
系统测试:
- 后端 API 测试通过 (7/7)
- 前端路由测试通过 (4/4)
- 数据库完整性验证通过
- Orval API 客户端验证通过
- 超管端功能测试通过 (97.8% 通过率)
新增文件:
- reading-platform-backend/src/common/dto/result.dto.ts
- reading-platform-backend/src/common/dto/page-query.dto.ts
- reading-platform-backend/src/common/interceptors/transform.interceptor.ts
- reading-platform-backend/src/common/utils/json.util.ts
- reading-platform-backend/src/common/utils/pagination.util.ts
- reading-platform-frontend/orval.config.ts
- reading-platform-frontend/src/api/generated/mutator.ts
- reading-platform-frontend/src/api/client.ts
- reading-platform-frontend/src/api/teacher.adapter.ts
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
10 KiB
10 KiB
Page snapshot
- generic [ref=e1]:
- generic [ref=e3]:
- complementary [ref=e4]:
- generic [ref=e5]:
- generic [ref=e6]:
- img "Logo" [ref=e7]
- generic [ref=e8]:
- generic [ref=e9]: 月亮幼儿园
- generic [ref=e10]: 少儿智慧阅读
- generic [ref=e11]: 服务平台
- menu [ref=e12]:
- menuitem "home 首页" [ref=e13] [cursor=pointer]:
- img "home" [ref=e14]:
- img [ref=e15]
- generic [ref=e18]: 首页
- menuitem "team 我的班级" [ref=e19] [cursor=pointer]:
- img "team" [ref=e20]:
- img [ref=e21]
- generic [ref=e24]: 我的班级
- menuitem "book 课程中心" [ref=e25] [cursor=pointer]:
- img "book" [ref=e26]:
- img [ref=e27]
- generic [ref=e30]: 课程中心
- menuitem "folder-add 校本课程包" [ref=e31] [cursor=pointer]:
- img "folder-add" [ref=e32]:
- img [ref=e33]
- generic [ref=e36]: 校本课程包
- menuitem "calendar 上课记录" [ref=e37] [cursor=pointer]:
- img "calendar" [ref=e38]:
- img [ref=e39]
- generic [ref=e42]: 上课记录
- menuitem "schedule 我的课表" [ref=e43] [cursor=pointer]:
- img "schedule" [ref=e44]:
- img [ref=e45]
- generic [ref=e48]: 我的课表
- menuitem "check-square 阅读任务" [ref=e49] [cursor=pointer]:
- img "check-square" [ref=e50]:
- img [ref=e51]
- generic [ref=e55]: 阅读任务
- menuitem "file-text 课程反馈" [ref=e56] [cursor=pointer]:
- img "file-text" [ref=e57]:
- img [ref=e58]
- generic [ref=e61]: 课程反馈
- menuitem "camera 成长档案" [ref=e62] [cursor=pointer]:
- img "camera" [ref=e63]:
- img [ref=e64]
- generic [ref=e67]: 成长档案
- generic [ref=e68]:
- generic [ref=e69]:
- img "menu-fold" [ref=e71] [cursor=pointer]:
- img [ref=e72]
- generic [ref=e75]:
- img "bell" [ref=e78] [cursor=pointer]:
- img [ref=e79]
- generic [ref=e82] [cursor=pointer]:
- img "user" [ref=e85]:
- img [ref=e86]
- generic [ref=e88]: 李老师
- img "down" [ref=e90]:
- img [ref=e91]
- main [ref=e93]:
- generic [ref=e94]:
- generic [ref=e95]:
- generic [ref=e96]:
- button "left 返回" [ref=e97] [cursor=pointer]:
- img "left" [ref=e98]:
- img [ref=e99]
- generic [ref=e101]: 返回
- img "封面" [ref=e103]
- generic [ref=e104]:
- heading "📚 备课模式:折耳兔奇奇测试课程01" [level=1] [ref=e105]
- generic [ref=e106]:
- generic [ref=e107]:
- img "book" [ref=e108]:
- img [ref=e109]
- text: 折耳兔奇奇
- generic [ref=e111]:
- img "clock-circle" [ref=e112]:
- img [ref=e113]
- text: 预计 85 分钟
- generic [ref=e116]: 小班
- generic [ref=e117]:
- button "calendar 预约上课" [ref=e118] [cursor=pointer]:
- img "calendar" [ref=e119]:
- img [ref=e120]
- generic [ref=e122]: 预约上课
- button "play-circle 开始上课" [ref=e123] [cursor=pointer]:
- img "play-circle" [ref=e124]:
- img [ref=e125]
- generic [ref=e128]: 开始上课
- button "close 退出备课" [ref=e129] [cursor=pointer]:
- img "close" [ref=e130]:
- img [ref=e131]
- generic [ref=e133]: 退出备课
- generic [ref=e137]:
- generic [ref=e139]:
- generic [ref=e140]:
- generic [ref=e141] [cursor=pointer]:
- generic [ref=e142]: 📋
- text: 课程包概览
- generic [ref=e143]:
- generic [ref=e144] [cursor=pointer]: 基本信息
- generic [ref=e145] [cursor=pointer]: 课程介绍
- generic [ref=e146] [cursor=pointer]: 排课计划参考
- generic [ref=e147] [cursor=pointer]: 环创建设
- generic [ref=e148]:
- generic [ref=e149] [cursor=pointer]:
- generic [ref=e150]: 📖
- text: 包含课程 (4)
- generic [ref=e151]:
- generic [ref=e153] [cursor=pointer]:
- generic [ref=e154]: 📖
- generic [ref=e155]: 导入课
- generic [ref=e156]: 10分钟
- generic [ref=e158] [cursor=pointer]:
- generic [ref=e159]: 👥
- generic [ref=e160]: 集体课
- generic [ref=e161]: 25分钟
- generic [ref=e163] [cursor=pointer]:
- generic [ref=e164]: 🏃
- generic [ref=e165]: 健康领域课
- generic [ref=e166]: 25分钟
- generic [ref=e168] [cursor=pointer]:
- generic [ref=e169]: 🔬
- generic [ref=e170]: 科学领域课
- generic [ref=e171]: 25分钟
- generic [ref=e172]:
- generic [ref=e173]:
- generic [ref=e174]: 📝
- text: 我的备课笔记
- button "save 保存" [ref=e175] [cursor=pointer]:
- img "save" [ref=e176]:
- img [ref=e177]
- generic [ref=e179]: 保存
- textbox "在这里记录您的备课笔记、教学心得或需要特别注意的事项..." [ref=e181]
- generic [ref=e182]:
- button "clear 清除" [ref=e183] [cursor=pointer]:
- img "clear" [ref=e184]:
- img [ref=e185]
- generic [ref=e187]: 清除
- button "printer 打印素材清单" [ref=e188] [cursor=pointer]:
- img "printer" [ref=e189]:
- img [ref=e190]
- generic [ref=e192]: 打印素材清单
- generic [ref=e196]:
- heading "基本信息" [level=2] [ref=e198]
- generic [ref=e200]:
- generic [ref=e201]:
- generic [ref=e202]:
- img "info-circle" [ref=e203]:
- img [ref=e204]
- text: 基本信息
- table [ref=e209]:
- rowgroup [ref=e210]:
- row "课程名称 折耳兔奇奇测试课程01 关联绘本 折耳兔奇奇" [ref=e211]:
- rowheader "课程名称" [ref=e212]
- cell "折耳兔奇奇测试课程01" [ref=e213]:
- generic [ref=e214]: 折耳兔奇奇测试课程01
- rowheader "关联绘本" [ref=e215]
- cell "折耳兔奇奇" [ref=e216]:
- generic [ref=e217]: 折耳兔奇奇
- row "课程主题 - 预计时长 85 分钟" [ref=e218]:
- rowheader "课程主题" [ref=e219]
- cell "-" [ref=e220]:
- generic [ref=e221]: "-"
- rowheader "预计时长" [ref=e222]
- cell "85 分钟" [ref=e223]:
- generic [ref=e224]: 85 分钟
- row "适用年级 小班" [ref=e225]:
- rowheader "适用年级" [ref=e226]
- cell "小班" [ref=e227]:
- generic [ref=e229]: 小班
- row "核心内容 认识自我" [ref=e230]:
- rowheader "核心内容" [ref=e231]
- cell "认识自我" [ref=e232]:
- generic [ref=e233]: 认识自我
- generic [ref=e234]:
- generic [ref=e235]:
- img "picture" [ref=e236]:
- img [ref=e237]
- text: 课程封面
- img "课程封面" [ref=e240]
- generic [ref=e241]:
- generic [ref=e242]:
- img "bar-chart" [ref=e243]:
- img [ref=e244]
- text: 课程统计
- generic [ref=e246]:
- generic [ref=e248]:
- generic [ref=e249]: 课程数量
- generic [ref=e250]:
- generic [ref=e252]: "4"
- generic [ref=e253]: 节
- generic [ref=e255]:
- generic [ref=e256]: 预计时长
- generic [ref=e257]:
- generic [ref=e259]: "85"
- generic [ref=e260]: 分钟
- generic [ref=e262]:
- generic [ref=e263]: 教师使用
- generic [ref=e264]:
- generic [ref=e266]: "0"
- generic [ref=e267]: 位
- generic [ref=e269]:
- generic [ref=e270]: 评分
- generic [ref=e271]:
- generic [ref=e272]:
- generic [ref=e273]: "0"
- text: ".0"
- generic [ref=e274]: /5
- dialog [ref=e276]:
- document:
- generic [ref=e279]:
- generic [ref=e280]:
- img "exclamation-circle" [ref=e281]:
- img [ref=e282]
- generic [ref=e284]: 开始上课
- generic [ref=e285]: 确认要开始上课吗?系统将创建一条新的授课记录。
- generic [ref=e286]:
- button "取 消" [ref=e287] [cursor=pointer]:
- generic [ref=e288]: 取 消
- button "确认开始" [active] [ref=e289] [cursor=pointer]:
- generic [ref=e290]: 确认开始