2026-03-27 22:20:25 +08:00
|
|
|
|
# 测试执行结果报告
|
|
|
|
|
|
|
|
|
|
|
|
## 执行时间:2026-03-24
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 一、测试发现的问题及修复
|
|
|
|
|
|
|
|
|
|
|
|
### 共发现 4 个 Bug,全部已修复
|
|
|
|
|
|
|
|
|
|
|
|
| 编号 | 严重度 | 问题描述 | 根因 | 修复方式 |
|
|
|
|
|
|
|------|--------|---------|------|---------|
|
|
|
|
|
|
| BUG-01 | **致命** | 创建活动时 visibility/targetCities/ageMin/ageMax 字段未写入数据库,创建后全是默认值 `designated` | `contests.service.ts` 的 create 方法中遗漏了新增字段的赋值 | 在 create data 中添加 `visibility`, `targetCities`, `ageMin`, `ageMax` 字段赋值 |
|
|
|
|
|
|
| BUG-02 | **致命** | 创建 `targeted` 类型活动时 DTO 校验报错 "visibility must be one of the following values: public, designated, internal" | `Visibility` 枚举中缺少 `TARGETED = 'targeted'` | 在 `create-contest.dto.ts` 的 Visibility 枚举中添加 `TARGETED` |
|
|
|
|
|
|
| BUG-03 | **高** | 公众端登录用户访问活动列表时,targeted 活动不根据用户画像过滤(返回 0 条) | `@Public()` 装饰器让 JwtAuthGuard 完全跳过 JWT 解析,导致 `req.user` 始终为空 | 重写 `JwtAuthGuard`:`@Public()` 接口有 Bearer token 时仍解析 JWT(但不强制要求) |
|
|
|
|
|
|
| BUG-04 | **高** | 报名 targeted 活动返回 404 "活动不存在或未公开" | `registerActivity` 方法中活动查询条件硬编码 `visibility: 'public'`,未包含 `targeted` | 改为 `visibility: { in: ['public', 'targeted'] }` |
|
|
|
|
|
|
|
|
|
|
|
|
### 同步修复:update 接口
|
|
|
|
|
|
|
|
|
|
|
|
| 问题 | 修复 |
|
|
|
|
|
|
|------|------|
|
|
|
|
|
|
| 编辑活动时 visibility/targetCities/ageMin/ageMax 不会更新 | 在 update 方法中添加这 4 个字段的处理逻辑 |
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 二、数据库测试结果
|
|
|
|
|
|
|
|
|
|
|
|
| 编号范围 | 测试项数 | 通过 | 失败 | 说明 |
|
|
|
|
|
|
|---------|---------|------|------|------|
|
|
|
|
|
|
| DB-01 ~ DB-12 | 12 | 12 | 0 | 表结构、约束、默认值全部正确 |
|
|
|
|
|
|
| DB-13 ~ DB-18 | 6 | 6 | 0 | 租户、角色、权限数据完整 |
|
|
|
|
|
|
| DB-19 ~ DB-23 | 5 | 5 | 0 | 菜单分配正确 |
|
|
|
|
|
|
| **合计** | **23** | **23** | **0** | |
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 三、后端 API 测试结果
|
|
|
|
|
|
|
|
|
|
|
|
| 编号范围 | 模块 | 测试项数 | 通过 | 修复后通过 |
|
|
|
|
|
|
|---------|------|---------|------|-----------|
|
|
|
|
|
|
| API-01 ~ API-10 | 公众认证 | 8(已测) | 8 | - |
|
|
|
|
|
|
| API-11 ~ API-20 | 子女管理 | 6(已测) | 6 | - |
|
|
|
|
|
|
| API-21 ~ API-30 | 活动浏览 | 5(已测) | 3 | 5(修复 BUG-03 后) |
|
|
|
|
|
|
| API-31 ~ API-35 | 定向推送 | 3(已测) | 0 | 3(修复 BUG-03 后) |
|
|
|
|
|
|
| API-36 ~ API-48 | 活动报名 | 7(已测) | 5 | 7(修复 BUG-04 后) |
|
|
|
|
|
|
| API-57 ~ API-60 | 我的数据 | 2(已测) | 2 | - |
|
|
|
|
|
|
| API-61 ~ API-64 | 公众用户管理 | 2(已测) | 2 | - |
|
|
|
|
|
|
| API-65 ~ API-69 | 管理端认证 | 4(已测) | 4 | - |
|
|
|
|
|
|
| **已测合计** | | **37** | **30** | **37** |
|
|
|
|
|
|
|
|
|
|
|
|
### 待执行的 API 测试
|
|
|
|
|
|
|
|
|
|
|
|
以下测试项因需要特定数据状态(报名通过后才能测提交),留到全链路测试中覆盖:
|
|
|
|
|
|
|
|
|
|
|
|
- API-49~56: 作品提交(需要报名通过状态)
|
|
|
|
|
|
- API-04, API-06, API-07: 注册边界(密码太短、手机号、手机号重复)
|
|
|
|
|
|
- API-15~20: 子女详情/更新/删除完整测试
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 四、已修复文件清单
|
|
|
|
|
|
|
|
|
|
|
|
| 文件 | 修改内容 |
|
|
|
|
|
|
|------|---------|
|
|
|
|
|
|
| `backend/src/contests/contests/dto/create-contest.dto.ts` | Visibility 枚举添加 `TARGETED` |
|
|
|
|
|
|
| `backend/src/contests/contests/contests.service.ts` | create 方法添加 visibility/targetCities/ageMin/ageMax;update 方法添加同样 4 个字段 |
|
|
|
|
|
|
| `backend/src/auth/guards/jwt-auth.guard.ts` | @Public() 接口有 token 时尝试解析 JWT(不强制) |
|
|
|
|
|
|
| `backend/src/public/public.service.ts` | registerActivity 活动查询条件支持 targeted |
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 五、待执行测试
|
|
|
|
|
|
|
|
|
|
|
|
### 前端测试(FE-01 ~ FE-92)
|
|
|
|
|
|
|
|
|
|
|
|
需要在浏览器中手动执行,建议按以下顺序:
|
|
|
|
|
|
1. 公众端登录/注册(FE-01~09)
|
|
|
|
|
|
2. 活动大厅(FE-10~15)
|
|
|
|
|
|
3. 活动详情按钮状态(FE-16~35)
|
|
|
|
|
|
4. 个人中心 + 子女管理(FE-36~48)
|
|
|
|
|
|
5. 管理端登录(FE-57~61)
|
|
|
|
|
|
6. 超管端(FE-62~80)
|
|
|
|
|
|
7. 广东省图端(FE-81~86)
|
|
|
|
|
|
8. 评委端(FE-87~92)
|
|
|
|
|
|
9. 响应式(FE-53~56)
|
|
|
|
|
|
|
|
|
|
|
|
### 全链路测试(4.1 ~ 4.4)
|
|
|
|
|
|
|
|
|
|
|
|
需要按照测试方案中的步骤跨端执行完整业务流程。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 六、测试环境
|
|
|
|
|
|
|
|
|
|
|
|
| 项目 | 值 |
|
|
|
|
|
|
|------|-----|
|
|
|
|
|
|
| 后端 | http://localhost:3234 |
|
|
|
|
|
|
| 前端 | http://localhost:3000 |
|
2026-04-11 17:03:22 +08:00
|
|
|
|
| 数据库 | mysql://root@localhost:3306/lesingle-creation-test |
|
2026-03-27 22:20:25 +08:00
|
|
|
|
| 测试活动 | ID=1(公开), ID=2(仅内部), ID=3(定向广州6-12岁) |
|
|
|
|
|
|
| 测试用户 | testuser01(广州,有子女), beijing_user(北京), demo(默认) |
|