diff --git a/docs/dev-logs/2026-03-13.md b/docs/dev-logs/2026-03-13.md index 09b25ee..4a9af59 100644 --- a/docs/dev-logs/2026-03-13.md +++ b/docs/dev-logs/2026-03-13.md @@ -255,3 +255,138 @@ return Result.success(PageResult.of(page)); - `test_three_ends.py` - 三端全链路测试 - `/docs/test-logs/package/2026-03-13-full-flow.md` - 详细测试记录 +--- + +### 4. 代码合规性审查与重构 + +#### 审查范围 +严格按照 `.claude/CLAUDE.md` 开发规范进行全项目代码审查 + +#### 发现的问题 + +**P0 - 三层架构违规(4项)** +- `SchoolStatsController` - 直接注入 `TeacherMapper`, `StudentMapper`, `ClazzMapper` +- `TeacherStatsController` - 直接注入 `ClazzMapper`, `StudentMapper`, `CourseMapper`, `LessonMapper` +- `TeacherCourseController` - 直接注入 `ClazzMapper` +- `AdminCourseController` - 直接注入 `CourseMapper` 用于更新 isSystem 标志 + +**P1 - API 路径不一致(8项)** +- `AdminCourseController`: `/api/admin/courses` → 应为 `/api/v1/admin/courses` +- `AdminTenantController`: `/api/admin/tenants` → 应为 `/api/v1/admin/tenants` +- 前端 `vite.config.ts`: 代理重写规则导致路径混乱 +- 前端 `src/api/index.ts`: baseURL 设置与实际不一致 +- 前端 API 文件: `/admin/*` 路径缺少 `/v1` 前缀 + +**P2 - 文档与代码不一致(5项)** +- `.claude/CLAUDE.md` 前端 API 调用示例与实际代码不符 +- 缺少 API 路径规范说明 +- 前端目录结构描述不准确 + +#### 修复过程 + +**1. 三层架构重构** + +新增 Service 层: +- `SchoolStatsService` + `SchoolStatsServiceImpl` - 学校端统计服务 +- `TeacherStatsService` + `TeacherStatsServiceImpl` - 教师端统计服务 + +扩展现有 Service: +- `ClassService.getActiveClassesByTenantId()` - 获取活跃班级 +- `CourseService.createSystemCourse()` - 创建系统课程专用方法 + +更新 Controller: +- 移除所有直接 Mapper 注入 +- 改为调用 Service 层方法 +- 验证编译通过 + +**2. API 路径统一** + +后端路径修复: +```java +// AdminCourseController +@RequestMapping("/api/v1/admin/courses") // 原路径: /api/admin/courses + +// AdminTenantController +@RequestMapping("/api/v1/admin/tenants") // 原路径: /api/admin/tenants +``` + +前端配置修复: +```typescript +// vite.config.ts - 移除重写规则 +proxy: { + '/api': { + target: 'http://localhost:8080', + changeOrigin: true, + } +} + +// src/api/index.ts - 修改 baseURL +baseURL: '/api' // 原值: '/api/v1' +``` + +前端 API 路径更新: +- `admin.ts`: `/admin/tenants` → `/v1/admin/tenants` +- `admin.ts`: `/admin/stats` → `/v1/admin/stats` +- `lesson.ts`: `/admin/courses` → `/v1/admin/courses` +- `package.ts`: `/admin/packages` → `/v1/admin/packages` +- `theme.ts`: `/admin/themes` → `/v1/admin/themes` + +**3. 文档规范更新** + +更新 `.claude/CLAUDE.md`: +- 前端目录结构: `client.ts` → `index.ts` +- 新增三种 API 调用方式说明 +- 新增 API 路径规范表格 +- 更新 Controller 路径约定说明 + +#### Git 提交记录 +- `066b1f2` - refactor: 代码合规性审查修复 - 三层架构、API路径、文档规范 +- `c0b465d` - docs: 更新CHANGELOG - 记录代码合规性审查修复 + +#### 变更统计 +- 修改文件: 16 个 +- 新增文件: 4 个 Service 类 +- 代码变更: +592 行,-305 行 + +--- + +### 5. Playwright 自动化测试 + +#### 测试目标 +使用 Playwright 进行浏览器自动化,测试超管端课程包创建流程 + +#### 测试脚本 +- `test_create_course_simple.py` - 简化版自动化脚本 + +#### 测试结果 +| 步骤 | 状态 | +|------|------| +| 浏览器启动 | ✅ | +| 登录页访问 | ✅ | +| 超管登录 | ✅ | +| 导航到创建页面 | ✅ | +| 表单字段填写 | ✅ | +| 提交按钮定位 | ⚠️ 需手动确认 | + +#### 生成的截图 +``` +screenshots/ +├── create_page.png - 创建页面 +├── form_filled.png - 表单填写完成 +└── before_submit.png - 提交前状态 +``` + +#### 填写的表单内容 +- 课程名称: 春日主题活动_{timestamp} +- 课程编码: SPRING{timestamp} +- 课程描述: 以春天为主题的活动介绍 +- 课程目标: 认知、技能、情感三维目标 +- 核心内容: 春天的花草、气候、动物、习俗 +- 课程亮点: 活动丰富、贴近生活、注重体验 +- 环境创设: 主题墙、自然角、美工区布置 + +#### 备注 +- 使用 Playwright 1.58.0 +- Chromium for Testing 浏览器 +- headless=False 模式便于观察执行过程 + diff --git a/docs/test-logs/automation/2026-03-13-playwright.md b/docs/test-logs/automation/2026-03-13-playwright.md new file mode 100644 index 0000000..6f6a483 --- /dev/null +++ b/docs/test-logs/automation/2026-03-13-playwright.md @@ -0,0 +1,173 @@ +# Playwright 自动化测试记录 + +**测试日期**: 2026-03-13 +**测试类型**: 浏览器自动化测试 +**测试工具**: Playwright 1.58.0 +**测试结果**: ⚠️ 部分完成 + +--- + +## 测试概述 + +使用 Playwright 自动化浏览器,完成超管端课程包创建流程的自动化测试,包括登录、导航、表单填写等步骤。 + +--- + +## 测试目标 + +自动化验证超管端课程包创建流程: +1. 超管登录 +2. 导航到课程管理页面 +3. 点击创建课程包 +4. 填写课程包表单 +5. 提交表单 + +--- + +## 测试结果汇总 + +| 测试项 | 状态 | 说明 | +|--------|------|------| +| 启动浏览器 | ✅ 通过 | Chromium for Testing | +| 访问登录页 | ✅ 通过 | 页面加载正常 | +| 选择超管角色 | ✅ 通过 | 角色选项卡选择成功 | +| 填写登录信息 | ✅ 通过 | 账号密码填写正确 | +| 点击登录按钮 | ✅ 通过 | 登录成功 | +| 导航到创建页面 | ✅ 通过 | URL: /admin/courses/create | +| 填写课程名称 | ✅ 通过 | 自动生成唯一名称 | +| 填写课程编码 | ✅ 通过 | 自动生成唯一编码 | +| 填写文本域 | ✅ 通过 | 描述、目标、内容等 | +| 选择下拉选项 | ✅ 通过 | 课程分类选择成功 | +| 滚动到底部 | ✅ 通过 | 定位提交按钮区域 | +| 点击提交按钮 | ❌ 未完成 | 按钮选择器问题 | + +--- + +## 测试脚本 + +### 脚本文件 +- `test_create_course_simple.py` - 简化版自动化脚本 + +### 关键代码片段 + +**登录流程**: +```python +page.goto(f"{BASE_URL}/login") +page.locator('.tab-item').nth(0).click() +page.fill('input[placeholder*="账号"]', 'admin') +page.fill('input[placeholder*="密码"]', '123456') +page.locator('button.ant-btn-primary, button[type="submit"]').first.click() +``` + +**表单填写**: +```python +# 获取所有输入框和文本域 +inputs = page.locator('input:not([type="hidden"]):not([readonly])').all() +textareas = page.locator('textarea:not([readonly])').all() + +# 填写课程名称 +inputs[0].fill(f'春日主题活动_{timestamp}') + +# 填写文本域 +for i, ta in enumerate(textareas[:5]): + # 根据 placeholder 判断填写内容 + # ... +``` + +--- + +## 截图记录 + +| 截图 | 说明 | +|------|------| +| `create_page.png` | 创建课程包页面 | +| `form_filled.png` | 表单填写完成状态 | +| `before_submit.png` | 提交前页面状态 | + +--- + +## 遇到的问题 + +### 1. 登录按钮选择器问题 +**问题**: `button:has-text("登录")` 选择器超时 +**原因**: 页面上有多个包含"登录"文字的元素 +**解决**: 使用 `button.ant-btn-primary, button[type="submit"]` 组合选择器 + +### 2. 角色选项卡选择器问题 +**问题**: `text=超管` 解析到多个元素 +**原因**: 页面上有多处"超管"文字(选项卡、测试按钮等) +**解决**: 使用 `.tab-item` 类选择器配合 nth(0) + +### 3. 提交按钮定位问题 +**问题**: 未能成功点击提交按钮 +**原因**: 按钮文字可能是动态渲染或选择器不准确 +**状态**: 待解决 + +--- + +## 填写的表单内容 + +### 基本信息 +- **课程名称**: 春日主题活动_{timestamp} +- **课程编码**: SPRING{timestamp} +- **课程描述**: 以春天为主题,引导幼儿感受春天的美好 + +### 课程目标 +- **认知目标**: 认识春天常见的花草树木 +- **技能目标**: 能用语言描述春天的变化 +- **情感目标**: 感受春天的美好 + +### 核心内容 +- 春天的花草树木 +- 春天的气候特征 +- 春天的动物朋友 +- 春天的节日习俗 + +### 课程亮点 +- 活动丰富,形式多样 +- 贴近生活,取材方便 +- 注重体验,寓教于乐 + +### 环境创设 +- 春天主题墙布置 +- 自然角摆放发芽的种子 +- 美工区准备绘画材料 + +--- + +## 后续改进建议 + +1. **优化选择器**:使用更稳定的选择器(data-testid、aria-label 等) +2. **添加等待策略**:针对动态加载的元素增加显式等待 +3. **完善断言**:添加更多的验证点确保每步成功 +4. **参数化测试数据**:将测试数据提取到配置文件 +5. **添加错误处理**:增加失败重试和错误日志 + +--- + +## 运行命令 + +```bash +# 进入项目目录 +cd /Users/retirado/Program/ccProgram_0312 + +# 运行自动化测试 +python3 test_create_course_simple.py +``` + +--- + +## 测试环境 + +| 项目 | 值 | +|------|-----| +| 操作系统 | macOS (Darwin 24.6.0) | +| Python 版本 | 3.9 | +| Playwright 版本 | 1.58.0 | +| 浏览器 | Chromium for Testing | +| 前端地址 | http://localhost:5173 | +| 后端地址 | http://localhost:8080 | + +--- + +**测试结论**: 自动化测试完成了大部分流程,表单填写功能正常,提交按钮定位需要进一步优化。