Status: done
作为企业管理员, 我在企业小程序的订单详情页中查看订单统计数据时, 我希望看到准确的订单统计数据(实际人数、本月打卡、工资视频、个税视频), 以便与订单列表页数据保持一致,准确了解订单执行情况和人员合规状态。
当前问题: 企业小程序订单详情页中的统计数据显示错误,与订单列表页数据不一致:
| 页面 | 本月打卡 | 工资视频 |
|---|---|---|
| 订单列表页 (Story 13-13 已修复) | 1/1 100% | 1/1 100% |
| 订单详情页 (当前问题) | 12/0 0% | 0/0 0% |
根本原因分析:
/company-orders/{id}/stats)影响范围: 企业用户在订单详情页看到错误的统计数据,影响业务决策和用户体验。
Given 企业小程序订单列表页显示正确统计数据 When 点击订单卡片进入订单详情页 Then 详情页的统计数据应与列表页完全一致 And 实际人数应相同 And 本月打卡统计应相同(格式:实际数/总数 百分比) And 工资视频统计应相同 And 个税视频统计应相同
Given 订单详情页加载时
When 页面渲染统计数据区域
Then 应调用后端 /api/company-orders/{orderId}/stats API
And 应传递正确的订单 ID 参数
And 应正确解析和显示 API 返回的统计数据
Given 后端 API 返回正确的统计数据
When 在订单详情页查看统计数据
Then "实际人数"应显示 actualPeople 字段值
And "本月打卡"应显示 checkinStats(current/total percentage)
And "工资视频"应显示 salaryVideoStats
And "个税视频"应显示 taxVideoStats
And 百分比计算应正确(保留整数或指定小数位)
Given 后台为订单人员添加打卡视频 When 在企业小程序打开订单详情页 Then 本月打卡统计应反映最新数据 And 统计数据应在合理时间内更新(缓存时间 ≤ 5 分钟)
Given E2E 测试环境 When 运行订单详情页统计测试 Then 应验证详情页与列表页数据一致性 And 应验证 API 调用正确 And 应验证数据绑定逻辑正确 And 应验证跨端数据同步正确
OrderDetail.tsx 或类似文件)/company-orders/{id}/stats 端点是否支持详情页调用enterprise-mini.page.ts 中添加/更新方法:
getOrderDetailStats(orderId: number) - 获取详情页统计数据expectOrderDetailStatsConsistentWithList(orderId) - 验证详情页与列表页一致expectOrderDetailStatsField(fieldName, expected) - 验证单个字段web/tests/e2e/specs/cross-platform/order-detail-stats-fix.spec.tsEpic 13: 跨端数据同步测试 (Epic E)
根据 Story 13-13 的 PRD 文档,订单统计字段定义如下:
| 字段 | 业务含义 | 数据来源 | 计算逻辑 | 显示格式 |
|---|---|---|---|---|
| 实际人数 | 当前订单实际关联的残疾人人数 | order_person 表 |
统计 order_id 等于当前订单 ID 的记录数量 |
XX人 |
| 本月打卡 | 本月内残疾人上下班打卡的视频记录数量统计 | order_person_asset 表,asset_type='checkin_video' |
统计本月内该订单关联人员的打卡视频数量 | 24/30 80% |
| 工资视频 | 残疾人每月薪资确认视频,用于合规证明和薪资发放记录 | order_person_asset 表,asset_type='salary_video' |
统计本月内该订单关联人员的工资确认视频数量 | 22/24 92% |
| 个税视频 | 残疾人每月个税确认视频,用于税务合规证明 | order_person_asset 表,asset_type='tax_video' |
统计本月内该订单关联人员的个税确认视频数量 | 20/24 83% |
前端文件(需检查/修复):
mini-ui-packages/yongren-order-management-ui/src/pages/OrderDetail/OrderDetail.tsx, OrderDetailPage.tsxmini-ui-packages/yongren-order-management-ui/src/pages/OrderList/OrderList.tsx后端 API(已在 Story 13-13 中实现):
GET /api/company-orders/{orderId}/statsallin-packages/order-module/src/routes/order-custom.routes.tsallin-packages/order-module/src/services/order.service.tsallin-packages/order-module/src/schemas/order.schema.tsE2E 测试文件(需创建):
web/tests/e2e/specs/cross-platform/order-detail-stats-fix.spec.tsweb/tests/e2e/pages/mini/enterprise-mini.page.ts(可能已有部分方法)端点:
GET /api/company-orders/{orderId}/stats
查询参数(可选):
year: 年份(默认当前年)month: 月份(默认当前月)响应格式:
interface OrderStatsResponse {
orderId: number;
actualPeople: number;
checkinStats: {
current: number;
total: number;
percentage: number;
};
salaryVideoStats: {
current: number;
total: number;
percentage: number;
};
taxVideoStats: {
current: number;
total: number;
percentage: number;
};
}
Story 13-13 列表页修复经验:
useOrderStats() hook 用于获取统计数据OrderCard 组件中独立调用 API详情页修复建议:
OrderList.tsx 的 useOrderStats() 实现/mini/#/mini/pages/yongren/order/detail/index?id={orderId}
本 Story 采用 Playwright MCP 持续验证的测试开发流程:
PRD 文档:
_bmad-output/planning-artifacts/prd.md - 订单统计字段业务定义架构文档:
_bmad-output/planning-artifacts/architecture.md - 技术栈和架构决策_bmad-output/project-context.md - 项目上下文和开发规范相关 Story 文档:
13-13-order-stats-fix.md - 订单列表页统计修复(参考实现)13-11-order-detail-validation.md - 订单详情页完整性验证12-4-enterprise-mini-page-object.md - 企业小程序 Page Object12-5-enterprise-mini-login.md - 企业小程序登录测试前端组件位置:
mini-ui-packages/
└── yongren-order-management-ui/
├── src/
│ ├── pages/
│ │ ├── OrderList/ # 订单列表页(已修复)
│ │ │ └── OrderList.tsx
│ │ └── OrderDetail/ # 订单详情页(需检查)
│ │ └── OrderDetail.tsx 或类似文件
│ ├── api/
│ │ └── types.ts # API 类型定义
│ └── hooks/
│ └── useOrderStats.ts # 可能需要迁移此 hook
└── package.json
后端 API 位置:
allin-packages/
└── order-module/
├── src/
│ ├── routes/
│ │ └── order-custom.routes.ts # 统计 API 路由
│ ├── services/
│ │ └── order.service.ts # 统计服务
│ └── schemas/
│ └── order.schema.ts # API Schema
└── package.json
根本原因分析 (任务 0):
OrderList.tsx) 使用正确的 /company-orders/:id/stats APIOrderDetail.tsx) 错误地使用了公司级别的统计 API (/checkin-statistics 和 /video-statistics)修复实现 (任务 1):
fetchOrderStatisticsQuery 函数修改为调用 /company-orders/:id/stats APIactualPeople 字段到 StatisticsData 接口['order-stats', orderId]) 确保缓存共享数据一致性验证 (任务 2):
Page Object 扩展 (任务 3):
OrderDetailStats 接口定义getOrderDetailStats() 方法expectOrderDetailStatsConsistentWithList() 方法expectOrderDetailStatsField() 方法E2E 测试创建 (任务 4-7):
order-detail-stats-fix.spec.ts 测试文件修改的文件:
mini-ui-packages/yongren-order-management-ui/src/pages/OrderDetail/OrderDetail.tsx
fetchOrderStatisticsQuery 函数使用正确的 API 端点StatisticsData 接口包含 actualPeople 字段CheckinStatisticsResponse, VideoStatisticsResponse)web/tests/e2e/pages/mini/enterprise-mini.page.ts
OrderDetailStats 接口定义getOrderDetailStats() 方法expectOrderDetailStatsConsistentWithList() 方法expectOrderDetailStatsField() 方法_bmad-output/implementation-artifacts/sprint-status.yaml
in-progress → review新创建的文件:
web/tests/e2e/specs/cross-platform/order-detail-stats-fix.spec.ts