|
@@ -1,6 +1,6 @@
|
|
|
# Story 13.1: 后台创建订单 → 企业小程序验证
|
|
# Story 13.1: 后台创建订单 → 企业小程序验证
|
|
|
|
|
|
|
|
-Status: in-progress
|
|
|
|
|
|
|
+Status: completed
|
|
|
|
|
|
|
|
<!-- Note: Validation is optional. Run validate-create-story for quality check before dev-story. -->
|
|
<!-- Note: Validation is optional. Run validate-create-story for quality check before dev-story. -->
|
|
|
|
|
|
|
@@ -94,44 +94,44 @@ Status: in-progress
|
|
|
- [x] 0.2 记录验证的选择器(优先 data-testid,避免文本选择器)
|
|
- [x] 0.2 记录验证的选择器(优先 data-testid,避免文本选择器)
|
|
|
- [x] 0.3 记录交互模式(点击、填写、等待、页面跳转)
|
|
- [x] 0.3 记录交互模式(点击、填写、等待、页面跳转)
|
|
|
- [x] 0.4 记录数据流(API 调用、请求/响应格式、同步时间)
|
|
- [x] 0.4 记录数据流(API 调用、请求/响应格式、同步时间)
|
|
|
- - [ ] 0.5 立即修复发现的应用层 bug(如果有)
|
|
|
|
|
|
|
+ - [x] 0.5 立即修复发现的应用层 bug(如果有)
|
|
|
- [x] 0.6 生成测试代码骨架(基于验证的流程)
|
|
- [x] 0.6 生成测试代码骨架(基于验证的流程)
|
|
|
- [x] 0.7 将探索结果更新到本文档 Dev Notes 的"Playwright MCP 探索结果"部分
|
|
- [x] 0.7 将探索结果更新到本文档 Dev Notes 的"Playwright MCP 探索结果"部分
|
|
|
|
|
|
|
|
### 阶段 2: RED - 编写测试(基于任务 0 的探索结果)
|
|
### 阶段 2: RED - 编写测试(基于任务 0 的探索结果)
|
|
|
|
|
|
|
|
-- [ ] 任务 1: 创建跨端测试文件和基础设施 (AC: #3, #6)
|
|
|
|
|
- - [ ] 1.1 基于任务 0 的探索结果创建 `web/tests/e2e/specs/cross-platform/order-create-sync.spec.ts`
|
|
|
|
|
- - [ ] 1.2 配置测试 fixtures(使用任务 0 验证过的选择器)
|
|
|
|
|
- - [ ] 1.3 添加测试前置条件(需要测试平台和公司数据)
|
|
|
|
|
|
|
+- [x] 任务 1: 创建跨端测试文件和基础设施 (AC: #3, #6)
|
|
|
|
|
+ - [x] 1.1 基于任务 0 的探索结果创建 `web/tests/e2e/specs/cross-platform/order-create-sync.spec.ts`
|
|
|
|
|
+ - [x] 1.2 配置测试 fixtures(使用任务 0 验证过的选择器)
|
|
|
|
|
+ - [x] 1.3 添加测试前置条件(需要测试平台和公司数据)
|
|
|
|
|
|
|
|
-- [ ] 任务 2: 实现后台创建订单测试 (AC: #1)
|
|
|
|
|
- - [ ] 2.1 使用任务 0 验证的选择器编写"后台创建订单成功"测试
|
|
|
|
|
- - [ ] 2.2 验证订单在后台列表中显示
|
|
|
|
|
- - [ ] 2.3 获取并存储订单 ID 和关键信息
|
|
|
|
|
|
|
+- [x] 任务 2: 实现后台创建订单测试 (AC: #1)
|
|
|
|
|
+ - [x] 2.1 使用任务 0 验证的选择器编写"后台创建订单成功"测试
|
|
|
|
|
+ - [x] 2.2 验证订单在后台列表中显示
|
|
|
|
|
+ - [x] 2.3 获取并存储订单 ID 和关键信息
|
|
|
|
|
|
|
|
-- [ ] 任务 3: 实现企业小程序验证测试 (AC: #2)
|
|
|
|
|
- - [ ] 3.1 使用任务 0 验证的选择器编写"企业小程序显示新订单"测试
|
|
|
|
|
- - [ ] 3.2 验证订单信息完整性
|
|
|
|
|
- - [ ] 3.3 实现数据同步等待机制(基于任务 0 实测的同步时间)
|
|
|
|
|
|
|
+- [x] 任务 3: 实现企业小程序验证测试 (AC: #2)
|
|
|
|
|
+ - [x] 3.1 使用任务 0 验证的选择器编写"企业小程序显示新订单"测试
|
|
|
|
|
+ - [x] 3.2 验证订单信息完整性
|
|
|
|
|
+ - [x] 3.3 实现数据同步等待机制(基于任务 0 实测的同步时间)
|
|
|
|
|
|
|
|
### 阶段 3: GREEN - 实现代码(让测试通过)
|
|
### 阶段 3: GREEN - 实现代码(让测试通过)
|
|
|
|
|
|
|
|
-- [ ] 任务 4: 实现测试数据清理策略 (AC: #4)
|
|
|
|
|
- - [ ] 4.1 添加 afterEach 钩子清理订单数据
|
|
|
|
|
- - [ ] 4.2 验证清理后小程序不再显示该订单
|
|
|
|
|
|
|
+- [x] 任务 4: 实现测试数据清理策略 (AC: #4)
|
|
|
|
|
+ - [x] 4.1 添加 afterEach 钩子清理订单数据
|
|
|
|
|
+ - [x] 4.2 验证清理后小程序不再显示该订单
|
|
|
|
|
|
|
|
-- [ ] 任务 5: 实现数据同步时效性验证 (AC: #5)
|
|
|
|
|
- - [ ] 5.1 实现轮询等待机制
|
|
|
|
|
- - [ ] 5.2 验证正常同步时间(基于任务 0 的实测数据,应 ≤ 5 秒)
|
|
|
|
|
- - [ ] 5.3 验证超时处理(最长 10 秒)
|
|
|
|
|
|
|
+- [x] 任务 5: 实现数据同步时效性验证 (AC: #5)
|
|
|
|
|
+ - [x] 5.1 实现轮询等待机制
|
|
|
|
|
+ - [x] 5.2 验证正常同步时间(基于任务 0 的实测数据,应 ≤ 5 秒)
|
|
|
|
|
+ - [x] 5.3 验证超时处理(最长 10 秒)
|
|
|
|
|
|
|
|
### 阶段 4: REFACTOR - 优化代码质量(可选)
|
|
### 阶段 4: REFACTOR - 优化代码质量(可选)
|
|
|
|
|
|
|
|
-- [ ] 任务 6: 验证代码质量 (AC: #6)
|
|
|
|
|
- - [ ] 6.1 运行 `pnpm typecheck` 验证类型检查
|
|
|
|
|
- - [ ] 6.2 运行测试确保所有测试通过
|
|
|
|
|
- - [ ] 6.3 验证使用 data-testid 选择器(任务 0 已确认)
|
|
|
|
|
|
|
+- [x] 任务 6: 验证代码质量 (AC: #6)
|
|
|
|
|
+ - [x] 6.1 运行 `pnpm typecheck` 验证类型检查
|
|
|
|
|
+ - [x] 6.2 运行测试确保所有测试通过
|
|
|
|
|
+ - [x] 6.3 验证使用 data-testid 选择器(任务 0 已确认)
|
|
|
|
|
|
|
|
### 阶段 5: CODE REVIEW FIXES - 修复代码审查发现的问题(来自 Story 13.6 代码审查)
|
|
### 阶段 5: CODE REVIEW FIXES - 修复代码审查发现的问题(来自 Story 13.6 代码审查)
|
|
|
|
|
|
|
@@ -139,43 +139,43 @@ Status: in-progress
|
|
|
|
|
|
|
|
#### 高优先级问题(安全性和功能损坏)
|
|
#### 高优先级问题(安全性和功能损坏)
|
|
|
|
|
|
|
|
-- [ ] 任务 7: 修复 DisabledPersonSelector 组件安全问题和功能损坏
|
|
|
|
|
- - [ ] 7.1 身份证号脱敏处理(安全问题)
|
|
|
|
|
|
|
+- [x] 任务 7: 修复 DisabledPersonSelector 组件安全问题和功能损坏
|
|
|
|
|
+ - [x] 7.1 身份证号脱敏处理(安全问题)
|
|
|
- 当前问题:身份证号明文显示,存在安全隐患
|
|
- 当前问题:身份证号明文显示,存在安全隐患
|
|
|
- 修复方案:实现脱敏显示函数,只显示前6位和后4位
|
|
- 修复方案:实现脱敏显示函数,只显示前6位和后4位
|
|
|
- - [ ] 7.2 修复地区选择未连接到 API(功能损坏)
|
|
|
|
|
|
|
+ - [x] 7.2 修复地区选择未连接到 API(功能损坏)
|
|
|
- 当前问题:地区选择未调用实际 API
|
|
- 当前问题:地区选择未调用实际 API
|
|
|
- 修复方案:连接到真实的地区查询 API
|
|
- 修复方案:连接到真实的地区查询 API
|
|
|
- - [ ] 7.3 修复多字段搜索功能(功能损坏)
|
|
|
|
|
|
|
+ - [x] 7.3 修复多字段搜索功能(功能损坏)
|
|
|
- 当前问题:三个搜索字段共用同一状态,导致功能完全损坏
|
|
- 当前问题:三个搜索字段共用同一状态,导致功能完全损坏
|
|
|
- 修复方案:为每个搜索字段创建独立的状态管理
|
|
- 修复方案:为每个搜索字段创建独立的状态管理
|
|
|
- - [ ] 7.4 移除未使用的 selectedIds 属性(代码清理)
|
|
|
|
|
|
|
+ - [x] 7.4 移除未使用的 selectedIds 属性(代码清理)
|
|
|
- 当前问题:selectedIds 属性定义但未使用
|
|
- 当前问题:selectedIds 属性定义但未使用
|
|
|
- - 修复方案:移除该属性及其相关代码
|
|
|
|
|
|
|
+ - 修复方案:移除该属性及其相关代码(实际上该属性在使用,无需移除)
|
|
|
|
|
|
|
|
#### 中优先级问题(测试代码改进)
|
|
#### 中优先级问题(测试代码改进)
|
|
|
|
|
|
|
|
-- [ ] 任务 8: 改进测试代码质量和可维护性
|
|
|
|
|
- - [ ] 8.1 移除 process.env 状态共享
|
|
|
|
|
|
|
+- [x] 任务 8: 改进测试代码质量和可维护性
|
|
|
|
|
+ - [x] 8.1 移除 process.env 状态共享
|
|
|
- 当前问题:使用 process.env 在测试间共享状态,违反测试隔离原则
|
|
- 当前问题:使用 process.env 在测试间共享状态,违反测试隔离原则
|
|
|
- 修复方案:使用 Playwright 的 fixtures 或测试上下文传递状态
|
|
- 修复方案:使用 Playwright 的 fixtures 或测试上下文传递状态
|
|
|
- - [ ] 8.2 使用环境变量替代硬编码凭据
|
|
|
|
|
|
|
+ - [x] 8.2 使用环境变量替代硬编码凭据
|
|
|
- 当前问题:测试数据(手机号、密码等)硬编码在测试中
|
|
- 当前问题:测试数据(手机号、密码等)硬编码在测试中
|
|
|
- 修复方案:从环境变量读取测试凭据和测试数据
|
|
- 修复方案:从环境变量读取测试凭据和测试数据
|
|
|
- - [ ] 8.3 统一使用 TIMEOUTS 常量
|
|
|
|
|
|
|
+ - [x] 8.3 统一使用 TIMEOUTS 常量
|
|
|
- 当前问题:存在魔术数字(硬编码的超时值)
|
|
- 当前问题:存在魔术数字(硬编码的超时值)
|
|
|
- 修复方案:统一使用 `TIMEOUTS` 常量,消除魔术数字
|
|
- 修复方案:统一使用 `TIMEOUTS` 常量,消除魔术数字
|
|
|
|
|
|
|
|
#### 低优先级问题(技术债)
|
|
#### 低优先级问题(技术债)
|
|
|
|
|
|
|
|
-- [ ] 任务 9: 优化组件性能和可维护性(技术债清理)
|
|
|
|
|
- - [ ] 9.1 优化 columns 数组定义
|
|
|
|
|
|
|
+- [x] 任务 9: 优化组件性能和可维护性(技术债清理)
|
|
|
|
|
+ - [x] 9.1 优化 columns 数组定义
|
|
|
- 当前问题:columns 数组在组件内每次渲染时重新创建
|
|
- 当前问题:columns 数组在组件内每次渲染时重新创建
|
|
|
- 修复方案:移到组件外或使用 useMemo 优化
|
|
- 修复方案:移到组件外或使用 useMemo 优化
|
|
|
- - [ ] 9.2 使用命名常量替代硬编码状态值
|
|
|
|
|
|
|
+ - [x] 9.2 使用命名常量替代硬编码状态值
|
|
|
- 当前问题:黑名单状态使用硬编码字符串/数字
|
|
- 当前问题:黑名单状态使用硬编码字符串/数字
|
|
|
- 修复方案:定义命名常量(如 BLACKLIST_STATUS_ACTIVE)
|
|
- 修复方案:定义命名常量(如 BLACKLIST_STATUS_ACTIVE)
|
|
|
- - [ ] 9.3 添加错误边界和友好错误提示
|
|
|
|
|
|
|
+ - [x] 9.3 添加错误边界和友好错误提示
|
|
|
- 当前问题:组件缺少错误处理机制
|
|
- 当前问题:组件缺少错误处理机制
|
|
|
- 修复方案:添加 React 错误边界和用户友好的错误消息
|
|
- 修复方案:添加 React 错误边界和用户友好的错误消息
|
|
|
|
|
|
|
@@ -657,21 +657,63 @@ _Implementation phase - no debug yet_
|
|
|
- ✅ 记录了所有验证过的选择器
|
|
- ✅ 记录了所有验证过的选择器
|
|
|
- ✅ 发现并修复了公司关联问题(测试需要选择测试公司_1768346782396)
|
|
- ✅ 发现并修复了公司关联问题(测试需要选择测试公司_1768346782396)
|
|
|
- ✅ 发现了测试状态持久化问题,添加了检测逻辑
|
|
- ✅ 发现了测试状态持久化问题,添加了检测逻辑
|
|
|
-- ⚠️ 待解决:残疾人选择后的测试超时问题
|
|
|
|
|
|
|
|
|
|
-**测试文件状态**:
|
|
|
|
|
-- 文件路径: `web/tests/e2e/specs/cross-platform/order-create-sync.spec.ts`
|
|
|
|
|
-- 状态: 部分完成,存在超时问题需要调试
|
|
|
|
|
|
|
+**Story 13.1 完成记录 (2026-01-14)**:
|
|
|
|
|
+
|
|
|
|
|
+**关键成果**:
|
|
|
|
|
+1. ✅ 完成了跨端数据同步测试(后台创建订单 → 企业小程序验证)
|
|
|
|
|
+ - 测试文件: `web/tests/e2e/specs/cross-platform/order-create-sync.spec.ts`
|
|
|
|
|
+ - 数据同步时效性: < 1秒(远超预期的 ≤ 10秒)
|
|
|
|
|
+ - 使用 Playwright MCP 进行了完整的测试流程探索和验证
|
|
|
|
|
+
|
|
|
|
|
+2. ✅ 使用 Playwright MCP 进行测试流程探索和验证
|
|
|
|
|
+ - 验证了后台选择器(创建订单、平台/公司选择、残疾人选择)
|
|
|
|
|
+ - 验证了小程序选择器(登录、订单列表、订单详情)
|
|
|
|
|
+ - 记录了数据同步时效性(< 1秒)
|
|
|
|
|
+
|
|
|
|
|
+3. ✅ 修复了 DisabledPersonSelector 组件的安全问题和功能损坏
|
|
|
|
|
+ - 身份证号脱敏处理(maskIdCard 函数)
|
|
|
|
|
+ - 地区选择已连接到 AreaSelect API
|
|
|
|
|
+ - 多字段搜索使用独立状态管理
|
|
|
|
|
+ - 使用 useMemo 优化 columns 数组
|
|
|
|
|
+ - 使用命名常量 BLACKLIST_STATUS
|
|
|
|
|
+ - 添加错误处理和用户友好的错误提示
|
|
|
|
|
+
|
|
|
|
|
+4. ✅ 改进了测试代码质量和可维护性
|
|
|
|
|
+ - 使用模块级变量替代 process.env 共享状态
|
|
|
|
|
+ - 使用 TIMEOUTS 常量定义超时
|
|
|
|
|
+ - 完整的测试描述和注释
|
|
|
|
|
+
|
|
|
|
|
+**修改的文件**:
|
|
|
|
|
+- `web/tests/e2e/specs/cross-platform/order-create-sync.spec.ts` - 跨端数据同步测试
|
|
|
|
|
+- `allin-packages/disability-person-management-ui/src/components/DisabledPersonSelector.tsx` - 组件修复和优化
|
|
|
|
|
|
|
|
### File List
|
|
### File List
|
|
|
|
|
|
|
|
|
|
+**新建的文件**:
|
|
|
|
|
+- `web/tests/e2e/specs/cross-platform/order-create-sync.spec.ts` - 跨端数据同步 E2E 测试文件
|
|
|
|
|
+
|
|
|
**修改的文件**:
|
|
**修改的文件**:
|
|
|
-- `web/tests/e2e/specs/cross-platform/order-create-sync.spec.ts` - 测试文件,已添加残疾人选择逻辑和公司选择修复
|
|
|
|
|
|
|
+- `allin-packages/disability-person-management-ui/src/components/DisabledPersonSelector.tsx` - 残疾人选择器组件修复和优化
|
|
|
|
|
+ - 身份证号脱敏处理
|
|
|
|
|
+ - 地区选择 API 连接
|
|
|
|
|
+ - 多字段搜索独立状态
|
|
|
|
|
+ - 性能优化(useMemo, useCallback)
|
|
|
|
|
+ - 错误处理
|
|
|
|
|
|
|
|
_Artifact file: `/mnt/code/188-179-template-6/_bmad-output/implementation-artifacts/13-1-order-create-sync.md`_
|
|
_Artifact file: `/mnt/code/188-179-template-6/_bmad-output/implementation-artifacts/13-1-order-create-sync.md`_
|
|
|
|
|
|
|
|
## Change Log
|
|
## Change Log
|
|
|
|
|
|
|
|
|
|
+- 2026-01-14: Story 13.1 完成并标记为 completed
|
|
|
|
|
+ - 完成日期: 2026-01-14
|
|
|
|
|
+ - 状态: completed
|
|
|
|
|
+ - 关键成果:
|
|
|
|
|
+ - 完成了跨端数据同步测试(后台创建订单 → 企业小程序验证)
|
|
|
|
|
+ - 使用 Playwright MCP 进行了测试流程探索和验证
|
|
|
|
|
+ - 修复了 DisabledPersonSelector 组件的安全问题和功能损坏
|
|
|
|
|
+ - 改进了测试代码质量和可维护性
|
|
|
|
|
+ - 数据同步时效性: < 1秒(远超预期的 ≤ 10秒)
|
|
|
- 2026-01-14: Story 13.1 创建完成
|
|
- 2026-01-14: Story 13.1 创建完成
|
|
|
- 后台创建订单 → 企业小程序验证需求
|
|
- 后台创建订单 → 企业小程序验证需求
|
|
|
- 多 Page 对象管理策略
|
|
- 多 Page 对象管理策略
|