一、超管端设计优化 - 文档管理SOP体系建立,docs目录重组 - 统一用户管理:跨租户全局视角,合并用户管理+公众用户 - 活动监管全模块重构:全部活动(统计卡片+阶段筛选+SuperDetail详情页)、报名数据/作品数据/评审进度(两层合一扁平列表)、成果发布(去Tab+统计+隐藏写操作) - 菜单精简:移除评委管理/评审规则/通知管理 - Bug修复:租户编辑丢失隐藏菜单、pageSize限制、主色统一 二、UGC绘本创作社区P0 - 数据库:10张新表(user_works/user_work_pages/work_tags等) - 子女账号独立化:Child升级为独立User,家长切换+独立登录 - 用户作品库:CRUD+发布审核,8个API - AI创作流程:提交→生成→保存到作品库,4个API - 作品广场:首页改造为推荐流,标签+搜索+排序 - 内容审核(超管端):作品审核+作品管理+标签管理 - 活动联动:WorkSelector作品选择器 - 布局改造:底部5Tab(发现/创作/活动/作品库/我的) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
102 lines
4.4 KiB
Markdown
102 lines
4.4 KiB
Markdown
# 测试执行结果报告
|
||
|
||
## 执行时间: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 |
|
||
| 数据库 | mysql://root@localhost:3306/competition_management |
|
||
| 测试活动 | ID=1(公开), ID=2(仅内部), ID=3(定向广州6-12岁) |
|
||
| 测试用户 | testuser01(广州,有子女), beijing_user(北京), demo(默认) |
|