kindergarten_java/docs/dev-logs/2026-03-13-admin-e2e-tests.md
En 6f64723428 feat: 教师端数据看板与学校端课程统计功能
教师端数据看板:
- 新增 TeacherDashboardResponse/TeacherLessonVO/TeacherLessonTrendVO
- 新增 TeacherWeeklyStatsResponse 周统计响应
- 新增 TeacherActivityLevel 枚举和 TeacherActivityRankResponse 活跃度排行
- 实现教师端课程统计、任务完成详情、任务反馈接口

学校端课程统计:
- 新增 CourseUsageVO/CourseUsageStatsVO/CoursePackageVO
- 新增 SchoolCourseResponse 和学校端课程使用查询接口
- 实现学校端统计数据和课程趋势接口

用户资料功能:
- 新增 UpdateProfileRequest/UpdateProfileResponse
- 实现用户资料更新接口

前后端对齐:
- 更新 OpenAPI 规范和前端 API 类型生成
- 优化 DashboardView 组件和 API 调用

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 12:45:56 +08:00

204 lines
6.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 开发日志 - 2026-03-13
## 今日工作内容
### 超管端 E2E 自动化测试开发
**工作时间**: 全天
**开发人员**: AI Assistant
---
## 完成的任务
### 1. 测试框架配置 ✅
基于现有的 Playwright 测试框架,为超管端 (Admin) 创建完整的 E2E 测试套件。
**配置文件**:
- `playwright.config.ts` - 已存在,使用 Chromium 浏览器
- 测试目录:`tests/e2e/admin/`
---
### 2. 测试工具文件创建 ✅
**fixtures.ts** - 测试数据和常量
```typescript
- ADMIN_CONFIG: 超管登录配置 (admin/123456)
- TEST_DATA: 测试数据模板 (租户、课程包、套餐、主题、资源)
- PACKAGE_TYPE_MAP: 套餐类型映射
- COURSE_CATEGORY_MAP: 课程分类映射
```
**helpers.ts** - 通用工具函数
```typescript
- loginAsAdmin(): 超管登录
- logout(): 退出登录
- waitForTable(): 等待表格加载
- waitForModal(): 等待弹窗显示
- waitForSuccess/error(): 等待提示消息
- clickRowAction(): 点击表格行操作
- closeModal(): 关闭弹窗
```
---
### 3. 测试用例开发 ✅
#### 01-login.spec.ts - 登录流程测试 (5 个用例)
- ✅ 超管登录成功
- ✅ 验证跳转到正确的仪表盘页面
- ✅ 记住登录状态(刷新页面)
- ✅ 错误密码登录失败
- ✅ 账号不存在登录失败
#### 02-dashboard.spec.ts - 数据看板测试 (7 个用例)
- ✅ 验证统计卡片显示(租户数、课程包数、月授课次数、学生总数)
- ✅ 验证趋势图加载
- ✅ 验证活跃租户 TOP5 列表
- ✅ 验证热门课程包 TOP5 列表
- ✅ 验证快捷入口点击跳转(创建课程包、管理租户、资源库)
#### 03-courses.spec.ts - 课程包管理测试 (12 个用例)
- ✅ 列表页面:访问、加载、搜索、筛选、分页
- ✅ 创建课程包:点击创建、步骤 1-6 填写
- ✅ 编辑课程包:点击编辑、修改信息
- ✅ 删除课程包:点击删除、确认弹窗
- ✅ 课程包详情:查看详情、资源
#### 04-packages.spec.ts - 套餐管理测试 (7 个用例)
- ✅ 列表页面:访问、加载
- ✅ 创建套餐:填写信息、设置配额、保存
- ✅ 编辑套餐:点击编辑、修改信息
- ✅ 删除套餐:点击删除、确认弹窗
#### 05-themes.spec.ts - 主题字典测试 (7 个用例)
- ✅ 列表页面:访问、加载
- ✅ 创建主题:填写信息、上传图片、保存
- ✅ 编辑主题:点击编辑、修改信息
- ✅ 删除主题:点击删除、确认弹窗
#### 06-tenants.spec.ts - 租户管理测试 (15 个用例)
- ✅ 列表页面:访问、加载、搜索、筛选、分页
- ✅ 创建租户:填写基本信息、选择套餐、设置配额、有效期、保存
- ✅ 查看租户详情:基本信息、教师列表、学生列表
- ✅ 编辑租户:点击编辑、修改信息、调整配额
- ✅ 租户状态管理:禁用、启用
- ✅ 重置密码:点击重置、获取临时密码
- ✅ 删除租户:点击删除、确认弹窗
#### 07-resources.spec.ts - 资源库测试 (9 个用例)
- ✅ 列表页面:访问、加载、搜索、筛选、分页
- ✅ 创建资源:填写信息、上传文件、保存
- ✅ 编辑资源:点击编辑、修改信息
- ✅ 删除资源:点击删除、确认弹窗
#### 08-settings.spec.ts - 系统设置测试 (12 个用例)
- ✅ 基本设置:系统名称、联系电话、邮箱、上传 Logo、保存
- ✅ 安全设置密码强度、登录限制、Token 有效期、强制 HTTPS、保存
- ✅ 通知设置:邮件/短信通知、SMTP 配置、保存
- ✅ 存储设置:存储类型、上传限制、文件类型、保存
#### 99-logout.spec.ts - 退出登录测试 (4 个用例)
- ✅ 点击退出登录
- ✅ 验证跳转回登录页
- ✅ 验证 token 已清除localStorage/sessionStorage
- ✅ 退出后无法访问管理页面(重定向)
#### admin-full-flow.spec.ts - 完整流程集成测试 (1 个用例)
- ✅ 从登录开始,依次测试:
1. 数据看板验证
2. 租户管理流程
3. 课程包管理流程
4. 套餐管理流程
5. 主题管理流程
6. 资源库管理流程
7. 系统设置验证4 个标签页)
8. 退出登录验证
---
## 测试统计
| 模块 | 测试文件 | 测试用例数 |
|------|----------|-----------|
| 登录流程 | 01-login.spec.ts | 5 |
| 数据看板 | 02-dashboard.spec.ts | 7 |
| 课程包管理 | 03-courses.spec.ts | 12 |
| 套餐管理 | 04-packages.spec.ts | 7 |
| 主题字典 | 05-themes.spec.ts | 7 |
| 租户管理 | 06-tenants.spec.ts | 15 |
| 资源库 | 07-resources.spec.ts | 9 |
| 系统设置 | 08-settings.spec.ts | 12 |
| 退出登录 | 99-logout.spec.ts | 4 |
| 完整流程 | admin-full-flow.spec.ts | 1 |
| **总计** | **11 个文件** | **79 个用例** |
---
## 执行命令
```bash
# 方式一:运行所有超管端测试(推荐)
npm run test:e2e:headed -- --project=chromium tests/e2e/admin/
# 方式二:运行单个测试文件
npm run test:e2e:headed -- tests/e2e/admin/01-login.spec.ts
npm run test:e2e:headed -- tests/e2e/admin/06-tenants.spec.ts
# 方式三:运行完整流程测试(一键测试所有功能)
npm run test:e2e:headed -- tests/e2e/admin/admin-full-flow.spec.ts
# 方式四无头模式CI/CD 环境)
npm run test:e2e -- --project=chromium tests/e2e/admin/
```
---
## 查看测试报告
```bash
npx playwright show-report
```
---
## 测试记录文档
- 测试记录:`docs/test-logs/admin/2026-03-13-admin-e2e-test.md`
---
## 技术亮点
1. **模块化设计**: 使用 fixtures.ts 和 helpers.ts 提取公共逻辑
2. **页面对象模式**: 通过选择器定位页面元素,易于维护
3. **智能等待**: 使用 waitForTable 等工具函数处理异步加载
4. **非破坏性测试**: 创建/编辑/删除操作默认点击取消,不影响测试环境
5. **完整流程覆盖**: admin-full-flow.spec.ts 模拟真实用户操作流程
6. **类型安全**: 使用 TypeScript 编写,享受完整的类型提示
---
## 注意事项
1. 测试依赖于后端 API 的实际响应,需确保后端服务正常运行
2. 文件上传相关测试仅验证组件存在,不实际上传文件
3. 测试用例设计遵循幂等性原则,可重复执行
4. 测试账号admin / 123456
---
## 明日计划
- [ ] 根据实际测试结果修复失败的测试用例
- [ ] 为学校端 (School) 创建类似的 E2E 测试套件
- [ ] 为教师端 (Teacher) 创建 E2E 测试套件
- [ ] 将测试集成到 CI/CD 流程中
---
**记录时间**: 2026-03-13
**最后更新**: 2026-03-13