소스 검색

docs(story): 创建 Story 12.1 - 用户管理 Page Object

创建 Epic 12 第一个 Story 文档,定义用户管理功能的 Page Object 基础架构。

主要变更:
- 创建 Story 12.1 文档 (12-1-user-page-object.md)
- 定义 UserManagementPage class 基础结构
- 规划用户列表、创建、编辑、删除等核心方法
- Epic 12 状态: backlog → in-progress
- Story 12.1 状态: backlog → ready-for-dev

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <happy@example.com>
yourname 4 일 전
부모
커밋
70efba78d7
2개의 변경된 파일131개의 추가작업 그리고 5개의 파일을 삭제
  1. 126 0
      _bmad-output/implementation-artifacts/12-1-user-page-object.md
  2. 5 5
      _bmad-output/implementation-artifacts/sprint-status.yaml

+ 126 - 0
_bmad-output/implementation-artifacts/12-1-user-page-object.md

@@ -0,0 +1,126 @@
+# Story 12.1: 用户管理 Page Object
+
+Status: ready-for-dev
+
+
+## Story
+
+作为测试开发者,
+我想要创建或增强用户管理的 Page Object,
+以便组织用户管理相关的页面元素和操作,为后续的用户管理测试提供基础。
+
+## Acceptance Criteria
+
+1. **AC1: 创建或增强用户管理 Page Object 文件**
+   - 文件位置:web/tests/e2e/pages/admin/user-management.page.ts
+   - 导出 UserManagementPage 类
+   - 继承 Epic 11 的成熟 Page Object 模式
+
+2. **AC2: 实现列表页面选择器和操作方法**
+   - 页面标题、创建按钮、搜索输入、搜索按钮
+   - 用户表格、编辑按钮、删除按钮
+   - goto(), expectToBeVisible(), getUserCount(), getUserByUsername(), userExists() 方法
+
+3. **AC3: 实现创建用户对话框的选择器和操作方法**
+   - createUser() 方法:填写用户表单并提交
+   - 支持字段:用户名、密码、昵称、邮箱、手机号、真实姓名
+   - 支持用户类型:EMPLOYER(需关联公司)、TALENT(需关联残疾人)、ADMIN
+   - 使用 TIMEOUTS 常量
+
+4. **AC4: 实现编辑用户对话框的选择器和操作方法**
+   - editUser() 方法:编辑用户信息
+   - 支持编辑字段:昵称、邮箱、手机号、真实姓名
+
+5. **AC5: 实现删除功能(API 直接删除)**
+   - 使用 API 直接删除策略(避免 UI 不稳定性)
+   - 参考 Epic 11 的模式
+
+6. **AC6: 实现表单填写和提交方法**
+   - fillUserForm() 辅助方法
+   - 处理用户类型选择和关联
+
+7. **AC7: 实现搜索和验证方法**
+   - searchUsers(), expectUserExists(), expectUserNotExists() 方法
+
+8. **AC8: 代码质量标准**
+   - 使用 TIMEOUTS 常量
+   - 遵循 Epic 11 Page Object 模式
+   - TypeScript 严格类型检查
+
+## Tasks / Subtasks
+
+- [ ] 任务 1: 分析现有 UserManagementPage 并确定改进方向 (AC: #1, #8)
+  - [ ] 1.1 读取现有 user-management.page.ts
+  - [ ] 1.2 对比 Epic 11 的 Page Object 模式
+  - [ ] 1.3 识别需要改进的部分
+
+- [ ] 任务 2: 实现列表页面选择器和基础方法 (AC: #2)
+  - [ ] 2.1 定义选择器
+  - [ ] 2.2 实现 goto() 和 expectToBeVisible()
+  - [ ] 2.3 实现用户查询方法
+
+- [ ] 任务 3: 实现创建用户对话框 (AC: #3, #6)
+  - [ ] 3.1 实现 createUser() 方法
+  - [ ] 3.2 实现 fillUserForm() 辅助方法
+  - [ ] 3.3 支持用户类型和关联
+
+- [ ] 任务 4: 实现编辑用户对话框 (AC: #4, #6)
+  - [ ] 4.1 实现 editUser() 方法
+  - [ ] 4.2 复用 fillUserForm()
+
+- [ ] 任务 5: 实现 API 删除方法 (AC: #5)
+  - [ ] 5.1 实现 deleteUser() 方法
+  - [ ] 5.2 使用 API 直接删除策略
+
+- [ ] 任务 6: 实现搜索和验证方法 (AC: #7)
+  - [ ] 6.1 实现 searchUsers()
+  - [ ] 6.2 实现断言方法
+
+- [ ] 任务 7: 定义 TypeScript 类型 (AC: #8)
+  - [ ] 7.1 定义 UserData, UserType, UserUpdateData
+
+- [ ] 任务 8: 添加 JSDoc 注释 (AC: #8)
+  - [ ] 8.1 为每个方法添加 JSDoc
+
+- [ ] 任务 9: 验证代码质量 (AC: #8)
+  - [ ] 9.1 运行 typecheck
+  - [ ] 9.2 运行 lint (pre-commit hook)
+
+## Dev Notes
+
+### Epic 11 关键经验
+
+**Page Object 模式(成熟,可直接复用):**
+- 参考 platform-management.page.ts, company-management.page.ts
+- 选择器优先级:data-testid → role + label → text
+- CRUD 方法:create, edit, delete, exists
+- 使用 TIMEOUTS 常量
+
+**API 删除策略(关键):**
+- 使用 API 直接删除,绕过 UI 不稳定性
+- 删除成功后刷新页面
+
+**测试数据唯一性:**
+- 使用时间戳:Date.now()
+
+### 用户类型和关联
+
+- EMPLOYER:企业用户,需关联公司(Epic 11)
+- TALENT:人才用户,需关联残疾人(Epic 9)
+- ADMIN:管理员,无关联
+
+### 项目结构
+
+- 文件:web/tests/e2e/pages/admin/user-management.page.ts
+- 导入:import { TIMEOUTS } from '../../utils/timeouts';
+
+## Dev Agent Record
+
+### Agent Model Used
+Claude (d8d-model)
+
+### File List
+- 12-1-user-page-object.md
+- web/tests/e2e/pages/admin/user-management.page.ts (创建/增强)
+- web/tests/e2e/pages/admin/platform-management.page.ts (参考)
+- web/tests/e2e/utils/timeouts.ts (使用)

+ 5 - 5
_bmad-output/implementation-artifacts/sprint-status.yaml

@@ -155,7 +155,7 @@ development_status:
   10-7-order-status-tests: done                # 编写订单状态流转测试 - 代码审查完成,所有HIGH和MEDIUM问题已修复
   10-8-order-detail-tests: done               # 编写订单详情查看测试 - ✅ 13/13 测试通过 (2026-01-13)
   10-9-order-person-tests: done               # 编写人员关联功能测试 - 2026-01-13 完成:6/6 测试通过,代码审查完成
-  10-10-order-attachment-tests: ready-for-dev    # 编写附件管理测试 - Story 文档已创建 (2026-01-13)
+  10-10-order-attachment-tests: in-progress       # 编写附件管理测试 - 开发中 (2026-01-13)
   10-11-order-complete-tests: backlog      # 编写订单完整流程测试
   10-12-run-tests-collect-issues: backlog  # 运行测试并收集问题和改进建议
   10-13-extend-utils-if-needed: backlog   # 扩展工具包(如需要)
@@ -189,8 +189,8 @@ development_status:
   # 背景: 小程序登录是跨端测试的前置条件
   # 依赖: Epic 11 完成(需要 Company 数据)
   # 技术要点: 小程序通过 H5 URL 访问,使用 Playwright 测试
-  epic-12: backlog
-  12-1-user-page-object: backlog           # 用户管理 Page Object
+  epic-12: in-progress
+  12-1-user-page-object: ready-for-dev           # 用户管理 Page Object
   12-2-create-employer-user: backlog       # 后台创建企业用户测试
   12-3-create-talent-user: backlog         # 后台创建人才用户测试
   12-4-enterprise-mini-page-object: backlog  # 企业小程序 Page Object
@@ -229,8 +229,8 @@ development_status:
 # Epic C: 订单管理 E2E 测试 🔄 进行中
 #   - Epic 10: 订单管理 E2E 测试 (8/14 Stories done)
 #
-# Epic D: 用户管理与小程序登录测试 🆕 新增
-#   - Epic 12: 用户管理与小程序登录测试 (0/8 Stories)
+# Epic D: 用户管理与小程序登录测试 🔄 进行中
+#   - Epic 12: 用户管理与小程序登录测试 (0/8 Stories, 1 ready-for-dev)
 #
 # Epic E: 跨端数据同步测试 🆕 新增
 #   - Epic 13: 跨端数据同步测试 (0/5 Stories)