Просмотр исходного кода

docs: 更新史诗010 - 添加故事010.007和010.008

分析发现故事010.006的E2E测试只覆盖了API兼容性验证(使用request对象),
没有真正的UI交互测试。为完整验证系统功能,添加两个新故事:

- 故事010.007: 租户后台UI交互E2E测试
  - 使用Playwright page对象进行浏览器页面操作
  - 验证登录、导航、CRUD、表单验证、分页搜索等完整流程
  - 测试文件: web/tests/e2e/tenant-advertisement-ui.spec.ts

- 故事010.008: 小程序端广告展示E2E测试
  - 验证小程序端能正常展示统一广告数据
  - 确保后端模块切换对小程序端完全透明
  - 测试多租户用户看到相同统一数据
  - 测试文件: mini/tests/e2e/advertisement-display.spec.ts

🤖 Generated with [Claude Code](https://claude.com/claude-code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
yourname 2 недель назад
Родитель
Сommit
8caa870293
1 измененных файлов с 95 добавлено и 4 удалено
  1. 95 4
      docs/prd/epic-010-unified-ad-management.md

+ 95 - 4
docs/prd/epic-010-unified-ad-management.md

@@ -15,6 +15,8 @@
 | 1.8 | 2026-01-03 | 完成故事010.006:Web集成和Server模块替换 | James (Claude Code) |
 | 1.9 | 2026-01-03 | 修复故事010.006集成测试:全部17个测试通过 | James (Claude Code) |
 | 1.10 | 2026-01-03 | 修复故事010.006 E2E测试:50个测试通过,更新测试策略文档 | James (Claude Code) |
+| 1.11 | 2026-01-03 | 添加故事010.007:租户后台UI交互E2E测试 | James (Claude Code) |
+| 1.12 | 2026-01-03 | 添加故事010.008:小程序端广告展示E2E测试 | James (Claude Code) |
 
 ## 史诗目标
 
@@ -246,6 +248,91 @@
 - Schema响应结构保持与原模块一致
 - 小程序端无需感知后端模块切换
 
+### Story 7: 租户后台UI交互E2E测试 🔄 进行中
+
+**标题**: 租户后台统一广告管理UI交互E2E测试
+
+**描述**: 故事010.006的E2E测试只验证了API兼容性(使用`request`对象),没有覆盖真正的UI交互测试。本故事补充使用Playwright的`page`对象进行浏览器页面操作,验证租户后台的完整UI交互流程。
+
+**背景说明**:
+- 当前E2E测试 (`unified-advertisement-api.spec.ts`) 使用 `request` 对象直接调用API
+- 这实际上是API集成测试,而非真正的端到端UI测试
+- 需要补充使用 `page` 对象的UI交互测试,验证:
+  - 登录租户后台
+  - 导航到广告管理页面
+  - 创建、编辑、删除广告
+  - 验证页面元素、表单交互、数据展示
+
+**任务**:
+- [ ] 创建UI交互E2E测试文件:`web/tests/e2e/tenant-advertisement-ui.spec.ts`
+- [ ] 测试登录流程:超级管理员登录租户后台
+- [ ] 测试导航:验证广告管理菜单项可点击,页面正确跳转
+- [ ] 测试广告列表:验证广告列表正确显示,包含正确数据
+- [ ] 测试创建广告:打开创建表单,填写字段,提交,验证创建成功
+- [ ] 测试编辑广告:点击编辑按钮,修改数据,保存,验证更新成功
+- [ ] 测试删除广告:点击删除按钮,确认删除,验证数据删除
+- [ ] 测试广告类型管理:验证类型列表、创建、编辑、删除
+- [ ] 测试分页功能:验证翻页功能正常工作
+- [ ] 测试搜索功能:验证按标题/代码搜索功能正常
+- [ ] 测试表单验证:验证必填字段、格式验证、错误提示
+- [ ] 测试图片上传:验证图片选择器集成正常工作
+- [ ] 测试响应式布局:验证页面在不同屏幕尺寸下正常显示
+- [ ] 更新E2E测试规范文档,添加UI交互测试示例
+
+**相关文件**: `docs/stories/010.007.story.md`
+
+**测试覆盖**:
+- 登录和导航流程
+- 广告管理CRUD操作
+- 广告类型管理CRUD操作
+- 表单验证和错误处理
+- 分页和搜索功能
+- 图片选择器集成
+- 响应式布局验证
+
+### Story 8: 小程序端广告展示E2E测试 🔄 进行中
+
+**标题**: 小程序端广告展示功能E2E测试验证
+
+**描述**: 史诗010的核心目标之一是"小程序端无需感知后端模块切换"。本故事通过E2E测试验证小程序端能够正常展示统一广告数据,确保后端模块切换对小程序端完全透明。
+
+**背景说明**:
+- 后端模块从 `advertisements-module-mt` 切换到 `unified-advertisements-module`
+- API路径和响应结构保持100%兼容
+- 小程序端代码无需任何修改
+- 需要验证小程序端能正常获取和展示广告数据
+
+**关键验证点**:
+- 小程序启动后能正确调用 `/api/v1/advertisements` 获取广告
+- 广告图片正确显示
+- 点击广告能正确跳转(webview/小程序页面)
+- 不同位置(position)的广告正确展示
+- 广告状态控制(启用/禁用)生效
+- 多租户用户看到的是相同的统一广告数据
+
+**任务**:
+- [ ] 创建小程序E2E测试文件:`mini/tests/e2e/advertisement-display.spec.ts`
+- [ ] 测试广告列表获取:验证小程序能成功获取广告列表
+- [ ] 测试广告图片显示:验证广告图片URL正确,图片能正常加载
+- [ ] 测试广告点击跳转:验证webview类型和小程序页面类型跳转正常
+- [ ] 测试位置过滤:验证不同位置(home/category等)的广告正确显示
+- [ ] 测试状态控制:验证禁用的广告不显示
+- [ ] 测试多租户统一数据:验证不同租户用户看到相同广告数据
+- [ ] 测试广告类型获取:验证 `/api/v1/advertisement-types` 接口正常
+- [ ] 测试网络异常处理:验证API调用失败时的错误处理
+- [ ] 测试数据缓存:验证广告数据的缓存机制正常工作
+- [ ] 更新测试策略文档,添加小程序E2E测试规范
+
+**相关文件**: `docs/stories/010.008.story.md`
+
+**测试覆盖**:
+- API调用和数据获取
+- 广告图片显示和加载
+- 广告点击和跳转
+- 位置和状态过滤
+- 多租户数据统一性
+- 错误处理和缓存
+
 ## 兼容性要求
 
 - [x] 现有广告API端点保持向后兼容(或提供适配层)
@@ -576,7 +663,7 @@ export const adminUnifiedAdApiRoutes = api.route('/api/v1/admin/unified-advertis
 ## 验收标准
 
 ### 完成定义 (Definition of Done)
-- [x] 所有故事完成且验收标准满足
+- [ ] 所有故事完成且验收标准满足(Story 7、8 进行中)
 - [x] 现有功能通过测试验证
 - [x] 集成点正常工作
 - [x] 文档适当更新
@@ -588,13 +675,17 @@ export const adminUnifiedAdApiRoutes = api.route('/api/v1/admin/unified-advertis
 3. [x] Admin后台不再显示广告管理入口
 4. [x] API端点正常工作且返回正确数据
 5. [x] 权限控制正确(只有超级管理员可管理)
+6. [ ] 租户后台UI交互E2E测试覆盖完整流程(Story 7)
+7. [ ] 小程序端广告展示E2E测试验证通过(Story 8)
 
 ### 技术验收
 1. [x] 所有单元测试通过
 2. [x] 集成测试通过
-3. [x] 代码符合项目编码规范
-4. [x] 无TypeScript类型错误
-5. [x] ESLint检查通过
+3. [ ] 租户后台UI交互E2E测试通过(Story 7)
+4. [ ] 小程序端广告展示E2E测试通过(Story 8)
+5. [x] 代码符合项目编码规范
+6. [x] 无TypeScript类型错误
+7. [x] ESLint检查通过
 
 ## 参考文档