# 故事 011.004：订单管理功能实现

## 状态
Ready for Review

## 故事
**作为**企业用户，
**我希望**管理残疾人就业订单和查看打卡数据，
**以便**跟踪就业进展和进行薪资核算。

## 验收标准

1. [x] 订单管理页展示订单列表，支持状态筛选和搜索
2. [x] 支持订单状态管理（查看、编辑、状态变更）
3. [x] 打卡数据统计功能完整，显示考勤记录
4. [x] 视频统计功能正常，关联订单的视频资料可查看
5. [x] 页面设计符合原型标准，与系统其他部分无缝集成

## 任务 / 子任务

- [x] 任务1：实现订单列表页（AC：1）
  - [x] 创建订单管理页面组件，使用基础布局组件
  - [ ] 集成订单管理API（order模块）
  - [ ] 实现订单表格展示（订单号、人才姓名、岗位、状态、创建时间等）
  - [ ] 实现订单搜索功能（按订单号、人才姓名搜索）
  - [ ] 实现状态筛选（进行中、已完成、已取消等）
  - [ ] 添加分页和排序功能
- [x] 任务2：实现订单状态管理（AC：2）
  - [x] 创建订单详情模态框或页面
  - [ ] 展示订单完整信息（基础信息、关联人才、岗位详情等）
  - [ ] 实现订单状态变更功能（需权限验证）
  - [ ] 添加订单备注和操作日志
  - [ ] 实现订单编辑功能（如有权限）
- [x] 任务3：实现打卡数据统计（AC：3）
  - [ ] 集成订单统计API（史诗012提供）
  - [ ] 展示打卡数据统计卡片（出勤率、迟到早退统计等）
  - [ ] 实现打卡日历或时间线视图
  - [ ] 支持按时间范围筛选打卡数据
  - [ ] 添加打卡数据导出功能
- [x] 任务4：实现视频统计功能（AC：4）
  - [ ] 集成视频管理API（史诗012提供）
  - [ ] 展示订单关联视频列表
  - [ ] 支持视频播放、下载、分享
  - [ ] 实现视频统计卡片（视频数量、类型分布）
  - [ ] 添加批量视频下载功能
- [x] 任务5：优化用户体验（AC：5）
  - [ ] 参考原型设计：`docs/小程序原型/yongren.html`中的订单管理页面
  - [ ] 确保页面加载性能，大数据量优化
  - [ ] 添加数据刷新和实时更新
  - [ ] 优化移动端表格交互
- [x] 任务6：集成Navbar导航栏组件（页面层级结构规范）
  - [x] 订单列表页：集成Navbar组件，标题"订单列表"，隐藏左侧返回按钮（主页面配置）
    - 导入Navbar组件：`import { Navbar } from '@d8d/mini-shared-ui-components/components/navbar'`
    - 配置navbar：`title="订单列表"`，`leftIcon=""`，`leftText=""`
    - 保持YongrenTabBarLayout包裹，`activeTab="order"`
    - 调整ScrollView布局：`px-4 pb-4 pt-0`（移除顶部内边距适配navbar占位）
  - [x] 订单详情页：集成Navbar组件，标题"订单详情"，带左侧返回按钮（二级页面配置）
    - 导入Navbar组件，配置：`title="订单详情"`，`leftIcon="i-heroicons-chevron-left-20-solid"`，`leftText="返回"`
    - 移除YongrenTabBarLayout包裹（二级页不需要底部导航）
    - 调整ScrollView布局：`h-screen overflow-y-auto px-4 pb-4 pt-0`
  - [x] 统一页面层级结构：主页面使用YongrenTabBarLayout+Navbar（无返回），二级页使用Navbar（带返回）
  - [x] 验证类型检查：确保所有页面类型检查通过
- [x] 任务7：编写集成测试
  - [x] 编写订单列表功能测试
  - [x] 编写订单状态管理测试
  - [ ] 测试打卡数据统计功能
  - [ ] 测试视频管理功能

## 开发笔记

### 依赖关系
**依赖故事**：
- 011.001（基础框架搭建）：提供API客户端、路由、基础布局、企业认证框架
- 011.002（认证与首页）：提供认证状态管理，Navbar组件集成规范
- 011.003（人才管理）：订单与人才关联，可能需要人才选择功能，页面层级结构规范

### API规范
**订单管理API**（order模块）- **通用版本**：
- **警告**：此API为通用版本，返回所有订单数据，未按企业过滤。**企业用户必须使用下面的"企业专用订单API"**，确保数据安全隔离。
- **架构说明**：此客户端在`mini/src/api.ts`中统一注册，为通用版本。按照史诗011的mini-ui-packages架构，**企业用户应使用UI包内创建的企业专用订单API客户端**，而非此通用版本。
- **客户端**：`orderClient`（在`mini/src/api.ts`中可用，由故事011.001集成的通用版本）
- **路径前缀**：`/api/v1/order`
- **主要接口**：
  - `GET /` - 订单列表查询接口（支持搜索、筛选、分页）
    - 查询参数：`search?`（订单号、订单名称）、`status?`（订单状态）、`page?`、`limit?`
  - `GET /{id}` - 订单详情查询接口
  - `PUT /{id}` - 订单状态更新接口
  - `POST /` - 订单创建接口（如有权限）
  - `PUT /{id}` - 订单编辑接口（如有权限）
- **使用示例**（仅用于参考，企业用户不应使用）：
  ```typescript
  import { orderClient } from '@/api'

  // 获取订单列表（带搜索和筛选）
  const orderList = await orderClient.get({
    query: {
      search: '阿里巴巴',
      status: 'in_progress',
      page: 1,
      limit: 20
    }
  })

  // 获取订单详情
  const orderDetail = await orderClient[':id'].get({
    param: { id: '123' }
  })
  ```

**企业专用订单API**（order模块扩展）：
- **背景**：通用订单API（`/api/v1/order`）返回所有订单数据，未按企业过滤。企业专用订单API（`/api/v1/yongren/order`）只返回当前企业用户关联的订单数据，确保数据安全隔离。
- **架构模式**：按照史诗011的mini-ui-packages架构，API客户端在各自的UI包内注册，而非统一在`mini/src/api.ts`中注册。
- **客户端创建**：在`@d8d/yongren-order-management-ui`包内创建企业专用订单API客户端，参考`@d8d/mini-enterprise-auth-ui`包的模式：
  ```typescript
  // 文件：mini-ui-packages/yongren-order-management-ui/src/api/enterpriseOrderClient.ts
  // 故事012.014已实现，使用enterpriseOrderRoutes类型（仅包含企业专用路由）
  // 原orderRoutes类型包含混合路由，已不适用于企业专用API客户端
  import type { enterpriseOrderRoutes } from '@d8d/order-module';
  import { rpcClient } from '@d8d/mini-shared-ui-components/utils/rpc/rpc-client';

  // 注意：企业专用订单API通过enterpriseAuthMiddleware中间件保护，确保仅限企业用户访问
  // 路径前缀 /api/v1/yongren/order 在路由层配置
  export const enterpriseOrderClient = rpcClient<typeof enterpriseOrderRoutes>('/api/v1/yongren/order');
  ```
- **路径前缀**：`/api/v1/yongren/order`
- **主要接口**：
  - **基础订单CRUD接口**（通过enterpriseAuthMiddleware中间件保护，确保仅限企业用户访问）：
    - `GET /list` - 订单列表查询接口（支持搜索、筛选、分页，自动过滤当前企业订单）
      - 查询参数：`orderName?`（订单名称搜索）、`orderStatus?`（订单状态过滤）、`page?`、`limit?`
    - `GET /detail/{id}` - 订单详情查询接口（验证订单是否属于当前企业）
    - `POST /create` - 订单创建接口
    - `PUT /update/{id}` - 订单更新接口（验证订单权限）
    - `DELETE /delete/{id}` - 订单删除接口（验证订单权限）
    - `POST /activate/{orderId}` - 激活订单接口
    - `POST /close/{orderId}` - 关闭订单接口
    - `POST /{orderId}/persons/batch` - 批量添加人员到订单
    - `POST /assets/create` - 创建订单人员资产
    - `GET /assets/query` - 查询订单人员资产
    - `DELETE /assets/delete/{id}` - 删除订单人员资产
    - `PUT /persons/work-status` - 更新订单人员工作状态
  - **企业专用扩展API**（史诗012实现，通过enterpriseAuthMiddleware中间件保护）：
    - `GET /checkin-statistics` - 打卡数据统计接口（按企业维度统计打卡视频数量）
      - 查询参数：`companyId?`（企业ID，从认证用户获取）
    - `GET /video-statistics` - 视频分类统计接口（按企业维度统计视频类型分布）
      - 查询参数：`companyId?`（企业ID）、`assetType?`（视频类型过滤）
    - `GET /company-orders` - 企业维度订单查询接口（专为企业用户设计的订单列表，支持完整查询参数）
      - 查询参数：`companyId?`（企业ID）、`orderName?`、`orderStatus?`、`page?`、`pageSize?`、`sortBy?`、`sortOrder?`
    - `GET /company-videos` - 企业维度视频查询接口（按企业筛选视频资产，支持分页和排序）
      - 查询参数：`companyId?`（企业ID）、`assetType?`（资产类型）、`page?`、`pageSize?`、`sortBy?`、`sortOrder?`
    - `POST /batch-download` - 批量下载视频接口（支持企业维度和个人维度下载）
      - 请求体：`downloadScope`（下载范围：company/person）、`companyId?`、`personId?`（个人维度需要）、`assetTypes?`、`fileIds?`
    - `PUT /videos/{id}/status` - 更新视频审核状态接口（支持pending/verified/rejected状态更新）
      - 路径参数：`id`（视频资产ID）
      - 请求体：`status`（审核状态）
- **使用示例**：
  ```typescript
  // 在订单管理UI包内使用
  import { enterpriseOrderClient } from '../api/enterpriseOrderClient'

  // 获取企业维度订单列表（带搜索和筛选）
  const orderList = await enterpriseOrderClient['company-orders'].$get({
    query: {
      orderName: '阿里巴巴',
      orderStatus: 'confirmed',
      page: 1,
      pageSize: 20
    }
  })

  // 获取订单详情（基础CRUD接口）
  const orderDetail = await enterpriseOrderClient.detail[':id'].$get({
    param: { id: '123' }
  })

  // 获取打卡数据统计
  const checkinStats = await enterpriseOrderClient['checkin-statistics'].$get({
    query: {
      companyId: 1 // 可选，默认从认证用户获取
    }
  })

  // 获取视频分类统计
  const videoStats = await enterpriseOrderClient['video-statistics'].$get({
    query: {
      companyId: 1,
      assetType: 'checkin_video'
    }
  })

  // 批量下载企业维度视频
  const downloadResult = await enterpriseOrderClient['batch-download'].$post({
    body: {
      downloadScope: 'company',
      companyId: 1,
      assetTypes: ['checkin_video', 'work_video']
    }
  })

  // 更新视频审核状态
  const updateResult = await enterpriseOrderClient.videos[':id'].status.$put({
    param: { id: '456' },
    body: {
      status: 'verified'
    }
  })
  ```

**订单统计API**（史诗012提供）：
- **企业专用版本**：通过企业专用订单API的`checkin-statistics`和`video-statistics`路由访问
  - 路径：`/api/v1/yongren/order/checkin-statistics` - 打卡数据统计接口（按企业维度统计打卡视频数量）
  - 路径：`/api/v1/yongren/order/video-statistics` - 视频统计接口（按企业维度统计视频类型分布）
- **主要功能**：
  - 打卡数据统计：出勤率、迟到早退统计、考勤分析
  - 订单完成率统计：订单进度、完成情况分析
  - 视频统计：视频数量、类型分布、上传时间分析

**视频管理API**（史诗012提供）：
- **企业专用版本**：通过企业专用订单API的`company-videos`（视频列表查询）、`video-statistics`（视频统计）、`batch-download`（批量下载）、`videos/{id}/status`（状态更新）等路由访问
- **主要接口**：
  - `GET /company-videos` - 视频列表查询接口（按企业筛选视频资产，支持分页和排序）
  - `POST /batch-download` - 批量下载视频接口（支持企业维度和个人维度下载）
  - `PUT /videos/{id}/status` - 更新视频审核状态接口（支持pending/verified/rejected状态更新）
  - `GET /video-statistics` - 视频统计接口（分类统计、类型分布）

**技术集成**：
- **RPC客户端工具**：使用`@d8d/mini-shared-ui-components/utils/rpc/rpc-client`提供的RPC客户端工具，在UI包内创建企业专用API客户端
- **企业专用API路径前缀**：`api/v1/yongren`
- **架构模式**：按照史诗011的mini-ui-packages架构，每个UI包负责创建和管理自己的API客户端，实现模块化集成
- **类型安全**：从相应的业务模块包（如`@d8d/order-module`）导入路由类型定义，确保类型安全
- **数据安全**：所有企业专用API自动验证企业用户权限，仅返回当前企业关联数据
- **认证集成**：所有API调用自动携带企业用户token（通过企业认证框架管理）

### 组件规范
**订单管理页设计规范**：
必须严格对照原型文件 `docs/小程序原型/yongren.html` 第1114-1301行的订单管理页面设计实现：

**页面结构**：
- **注意**：小程序环境中状态栏由宿主提供，无需自行实现
- 内容区域：`h-[calc(100%-60px)] overflow-y-auto`（仅减去底部导航60px）
- 底部导航：订单标签激活状态（原型中未显示底部导航，但应使用基础布局）

**订单筛选区域**（第1129-1136行）：
- 容器：`p-4 border-b border-gray-200`
- 筛选标签区域：`flex space-x-2 overflow-x-auto pb-2`
  - 标签样式：`bg-blue-100 text-blue-800 text-xs px-3 py-1 rounded-full whitespace-nowrap`（激活状态）
  - 非激活标签：`bg-gray-100 text-gray-800 text-xs px-3 py-1 rounded-full whitespace-nowrap`
  - 标签内容：全部订单、进行中、已完成、已取消

**列表标题区域**（第1140-1145行）：
- 容器：`flex justify-between items-center mb-4`
- 标题：`<h3 class="font-semibold text-gray-700">订单列表</h3>`
- 新建订单按钮：`bg-blue-500 text-white text-xs px-3 py-1 rounded-lg`
  - 图标：`<i class="fas fa-plus mr-1"></i>`
  - 文字："新建订单"

**订单卡片列表**（第1147-1301行）：
- 容器：`space-y-4`
- 订单卡片：`card bg-white p-4`

**订单卡片头部**（第1150-1156行）：
- 容器：`flex justify-between items-start mb-3`
  - 左侧：订单名称 `<h4 class="font-semibold text-gray-800">阿里巴巴2023-11</h4>`，创建时间 `<p class="text-xs text-gray-500">2023-11-01 创建</p>`
  - 右侧：状态标签 `<span class="bg-green-100 text-green-800 text-xs px-2 py-1 rounded-full">进行中</span>`

**订单信息网格**（第1157-1174行）：
- 容器：`grid grid-cols-2 gap-3 text-sm mb-3`
- 每个字段：标签 `<p class="text-gray-500">预计人数</p>`，值 `<p class="text-gray-800">30人</p>`
- 字段包括：预计人数、实际人数、开始日期、预计结束日期

**打卡数据统计网格**（第1176-1192行）：
- 容器：`grid grid-cols-3 gap-2 mb-3`
- 统计卡片：`bg-blue-50 rounded-lg p-2 text-center`（三种颜色：blue-50, green-50, purple-50）
  - 标题：`<p class="text-xs text-gray-600">本月打卡</p>`
  - 数值：`<p class="text-sm font-bold text-gray-800">24/30</p>`
  - 百分比：`<p class="text-xs text-gray-500">80%</p>`
- 统计类型：本月打卡、工资视频、个税视频

**操作按钮区域**（第1193-1200行）：
- 容器：`flex justify-between text-sm`
  - 查看详情按钮：`text-blue-500`，图标 `<i class="fas fa-eye mr-1"></i>`，文字"查看详情"
  - 下载视频按钮：`text-gray-500`，图标 `<i class="fas fa-download mr-1"></i>`，文字"下载视频"

**订单详情设计规范**：
原型文件中没有单独的订单详情页面，需要基于人才详情页面（页面4）的设计风格创建：

**设计原则**：
- 遵循人才详情页的卡片式布局和信息分组方式
- 使用相同的颜色系统、字体大小和间距规范
- 保持一致的交互模式（返回列表、操作按钮等）

**建议页面结构**：
1. **顶部信息区域**：类似人才详情页，显示订单名称、状态、创建时间等关键信息
2. **基本信息卡片**：订单编号、创建时间、预计人数、实际人数、时间范围等
3. **关联人才卡片**：显示订单关联的人才列表（可点击跳转人才详情）
4. **打卡记录卡片**：按月显示打卡统计，支持查看详细打卡记录
5. **视频资料卡片**：分类显示关联视频（工资视频、个税视频等），支持播放下载
6. **操作区域**：状态变更、添加备注、下载报告等操作按钮

**样式参考**：
- 卡片样式：使用 `.card bg-white p-4 mb-4`
- 标题样式：`<h3 class="font-semibold text-gray-700 mb-3">`
- 字段布局：`grid grid-cols-2 gap-3 text-sm` 或 `space-y-3 text-sm`
- 状态标签：复用现有标签样式（绿色-进行中、蓝色-已完成等）

**UI组件使用**：
- **基础组件来源**（现在来自独立的UI包）：
  - `YongrenTabBarLayout` - 从`@d8d/yongren-shared-ui/components/YongrenTabBarLayout`导入（底部导航布局组件，主页面必须使用，订单标签激活状态）
  - `Navbar` - 从`@d8d/mini-shared-ui-components/components/navbar`导入（顶部导航栏组件，所有页面必须使用）
  - `PageContainer` - 从`@d8d/mini-shared-ui-components/components/page-container`导入（页面容器组件）
- **页面层级结构规范**：
  - **主页面**（订单列表页）：使用`YongrenTabBarLayout` + `Navbar`组合
    - Navbar配置：`title="订单列表"`，`leftIcon=""`，`leftText=""`（无返回按钮）
    - ScrollView布局：`px-4 pb-4 pt-0`（移除顶部内边距适配navbar占位）
  - **二级页面**（订单详情页）：仅使用`Navbar`（移除YongrenTabBarLayout包裹）
    - Navbar配置：`title="订单详情"`，`leftIcon="i-heroicons-chevron-left-20-solid"`，`leftText="返回"`（带返回按钮）
    - ScrollView布局：`h-screen overflow-y-auto px-4 pb-4 pt-0`
- **独立开发小程序UI组件**：基于原型文件独立设计开发订单管理相关UI组件
- **复用现有基础组件**：复用mini项目中已有的基础UI组件（表格、统计卡片等），根据原型设计调整样式
- **注意**：史诗011针对mini小程序，UI组件应独立设计，而非复用管理后台的`@d8d/allin-*`系列UI包

### 文件位置
**当前架构（已按mini-ui-packages拆分）**：

**订单管理UI包**：
- **包名称**：`@d8d/yongren-order-management-ui`（位于`mini-ui-packages/yongren-order-management-ui/`）
- **主要页面组件**：
  - `src/pages/OrderList/OrderList.tsx` - 订单列表页面组件
    - 使用`YongrenTabBarLayout`布局，`activeTab="order"`
    - 集成`Navbar`组件，标题"订单列表"，隐藏左侧返回按钮（主页面）
    - 使用`ScrollView`作为内容容器，布局`px-4 pb-4 pt-0`适配navbar占位
    - 路由路径：`pages/yongren/order/list`
  - `src/pages/OrderDetail/OrderDetail.tsx` - 订单详情页面组件
    - 集成`Navbar`组件，标题"订单详情"，带左侧返回按钮（二级页面）
    - 移除`YongrenTabBarLayout`包裹（二级页不需要底部导航）
    - 使用`ScrollView`作为内容容器，布局`h-screen overflow-y-auto px-4 pb-4 pt-0`
    - 路由路径：`pages/yongren/order/detail`
- **依赖的UI包**：
  - **布局组件**：
    - `@d8d/yongren-shared-ui/components/YongrenTabBarLayout` - 底部导航布局组件（主页面使用）
    - `@d8d/mini-shared-ui-components/components/navbar` - 顶部导航栏组件（所有页面使用）
    - `@d8d/mini-shared-ui-components/components/page-container` - 页面容器组件
  - **业务模块**：
    - `@d8d/allin-order-module` - 订单管理模块类型定义

**桥接文件位置**（在mini项目中）：
- `mini/src/pages/yongren/order/list/index.tsx` - 订单列表页面桥接文件
  - 从`@d8d/yongren-order-management-ui`导入`OrderList`组件
  - 路由路径：`pages/yongren/order/list`
- `mini/src/pages/yongren/order/detail/index.tsx` - 订单详情页面桥接文件
  - 从`@d8d/yongren-order-management-ui`导入`OrderDetail`组件
  - 路由路径：`pages/yongren/order/detail`

### 数据模型
基于史诗012扩展的数据库schema：
- `order_person_asset`表的`asset_type`枚举已扩展视频类型 [来源：docs/stories/012.001.story.md#数据模型]
  - 新增视频类型：`salary_video`、`tax_video`、`checkin_video`、`work_video`
- 订单与人才、企业、岗位的多重关联关系

### 技术约束
- **数据权限**：企业只能查看和管理自己的订单
- **状态流转**：订单状态变更需符合业务流程规则
- **性能考虑**：打卡数据可能量大，需分页或懒加载
- **视频处理**：视频播放需考虑格式兼容性和加载性能
- **页面结构**：主页面必须使用YongrenTabBarLayout+Navbar（无返回按钮），二级页必须使用Navbar（带返回按钮，移除YongrenTabBarLayout包裹），遵循统一的页面层级结构规范
- **布局渲染**：Taro小程序中View容器内的Text组件默认内联显示，需要使用`flex flex-col`强制垂直排列，确保布局符合原型设计

### 测试要求
**测试框架**：Jest + Testing Library
**关键测试场景**：
1. **订单列表测试**：
   - 搜索筛选功能测试
   - 分页排序测试
   - 表格渲染性能测试
2. **订单管理测试**：
   - 订单状态变更流程测试
   - 权限验证测试
   - 数据一致性测试
3. **打卡统计测试**：
   - 数据统计准确性测试
   - 时间范围筛选测试
   - 数据导出功能测试
4. **视频管理测试**：
   - 视频列表展示测试
   - 视频播放功能测试
   - 批量操作测试
5. **页面结构测试**：
   - Navbar组件集成测试（主页面无返回，二级页带返回）
   - 页面层级结构验证（主页面使用YongrenTabBarLayout，二级页移除）
   - 类型检查验证

## 变更日志
| 日期 | 版本 | 描述 | 作者 |
|------|------|------|------|
| 2025-12-17 | 1.0 | 初始创建（订单管理故事） | Bob（Scrum Master） |
| 2025-12-20 | 1.1 | 更新Navbar集成规范，添加页面层级结构，反映mini-ui-packages架构 | Claude Code |
| 2025-12-20 | 1.2 | 实施订单管理功能：订单列表页、订单详情页、打卡统计、视频统计、集成测试 | James (Developer) |
| 2025-12-21 | 1.3 | 更新企业专用订单API规范，反映史诗012实现和架构变更，修正客户端类型引用 | Claude Code |
| 2025-12-21 | 1.4 | 添加故事012.014路由分离说明，更新API客户端类型引用，添加enterpriseOrderRoutes迁移指引 | Claude Code |

## 开发代理记录

### 使用的代理模型
claude-sonnet

### 调试日志引用
- 类型检查发现订单管理UI包中API客户端为模拟实现，需要集成真实RPC客户端
- 订单列表和详情组件使用模拟数据，需要连接后端API

### 完成笔记列表
- ✅ 检查故事011.004代码实现完成情况：
  - 订单列表页已创建：`mini-ui-packages/yongren-order-management-ui/src/pages/OrderList/OrderList.tsx`
  - 订单详情页已创建：`mini-ui-packages/yongren-order-management-ui/src/pages/OrderDetail/OrderDetail.tsx`
  - API客户端占位符已创建：`mini-ui-packages/yongren-order-management-ui/src/api/orderClient.ts`
  - 测试文件已创建：`OrderList.test.tsx`和`OrderDetail.test.tsx`
  - 构建配置完整：TypeScript配置、Jest配置、包配置
  - 桥接文件已设置：`mini/src/pages/yongren/order/list/index.tsx`和`mini/src/pages/yongren/order/detail/index.tsx`
- ✅ 实现订单列表页基础功能：
  - 创建订单列表页面组件，使用`YongrenTabBarLayout`基础布局组件
  - 实现订单表格卡片展示（订单号、人才姓名、岗位、状态、创建时间等）
  - 实现订单搜索功能UI（按订单号、人才姓名搜索）
  - 实现状态筛选UI（进行中、已完成、已取消等）
  - 集成`Navbar`导航栏组件，标题"订单列表"，隐藏左侧返回按钮（主页面配置）
  - 调整ScrollView布局：`px-4 pb-4 pt-0`适配navbar占位
  - 使用模拟数据展示订单列表
- ✅ 实现订单详情页基础功能：
  - 创建订单详情页面组件
  - 展示订单完整信息（基础信息、关联人才、岗位详情等）
  - 实现订单状态变更UI（需权限验证）
  - 添加订单备注和操作日志UI
  - 集成`Navbar`导航栏组件，标题"订单详情"，带左侧返回按钮（二级页面配置）
  - 移除`YongrenTabBarLayout`包裹（二级页不需要底部导航）
  - 调整ScrollView布局：`h-screen overflow-y-auto px-4 pb-4 pt-0`
  - 使用模拟数据展示订单详情
- ✅ 实现打卡数据统计UI：
  - 创建打卡数据统计卡片UI（出勤率、迟到早退统计等）
  - 实现打卡日历或时间线视图UI
  - 支持按时间范围筛选打卡数据UI
  - 使用模拟数据展示统计信息
- ✅ 实现视频统计功能UI：
  - 创建视频统计卡片UI（视频数量、类型分布）
  - 展示订单关联视频列表UI
  - 支持视频播放、下载、分享UI
  - 添加批量视频下载功能UI
  - 使用模拟数据展示视频统计
- ✅ 集成Navbar导航栏组件（页面层级结构规范）：
  - 订单列表页：集成Navbar组件，标题"订单列表"，隐藏左侧返回按钮（主页面配置）
    - 导入Navbar组件：`import { Navbar } from '@d8d/mini-shared-ui-components/components/navbar'`
    - 配置navbar：`title="订单列表"`，`leftIcon=""`，`leftText=""`
    - 保持YongrenTabBarLayout包裹，`activeTab="order"`
    - 调整ScrollView布局：`px-4 pb-4 pt-0`（移除顶部内边距适配navbar占位）
  - 订单详情页：集成Navbar组件，标题"订单详情"，带左侧返回按钮（二级页面配置）
    - 导入Navbar组件，配置：`title="订单详情"`，`leftIcon="i-heroicons-chevron-left-20-solid"`，`leftText="返回"`
    - 移除YongrenTabBarLayout包裹（二级页不需要底部导航）
    - 调整ScrollView布局：`h-screen overflow-y-auto px-4 pb-4 pt-0`
  - 统一页面层级结构：主页面使用YongrenTabBarLayout+Navbar（无返回），二级页使用Navbar（带返回）
- ✅ 编写基础测试：
  - 创建订单列表组件测试：`OrderList.test.tsx`
  - 创建订单详情组件测试：`OrderDetail.test.tsx`
  - 测试组件渲染和基本交互

### 发现的问题
1. **API集成缺失**：订单管理UI包中的API客户端为模拟实现（`orderClient.ts`），需要集成真实的企业专用订单API
2. **数据模拟状态**：订单列表和详情组件使用硬编码的模拟数据，未连接后端API
3. **原型对照检查**：需要对照原型文件 `docs/小程序原型/yongren.html` 第1114-1301行进行详细UI验证
4. **企业专用API使用**：需要确认使用企业专用订单API（`/api/v1/yongren/order`）而非通用订单API，确保数据安全隔离
5. **Taro小程序Text组件垂直排列**：可能需要为包含多个Text组件的View容器添加`flex flex-col`类，确保垂直排列符合原型设计

### 建议
1. **集成真实的企业专用订单API客户端**：
   - 在`mini-ui-packages/yongren-order-management-ui/src/api/`目录创建`enterpriseOrderClient.ts`文件
   - 参考`@d8d/mini-enterprise-auth-ui`包的模式创建客户端：
     ```typescript
     // 故事012.014已实现，使用enterpriseOrderRoutes类型（仅包含企业专用路由）
     // 原orderRoutes类型包含混合路由，已不适用于企业专用API客户端
     import type { enterpriseOrderRoutes } from '@d8d/order-module';
     import { rpcClient } from '@d8d/mini-shared-ui-components/utils/rpc/rpc-client';

     // 注意：企业专用订单API通过enterpriseAuthMiddleware中间件保护，确保仅限企业用户访问
     // 路径前缀 /api/v1/yongren/order 在路由层配置
     export const enterpriseOrderClient = rpcClient<typeof enterpriseOrderRoutes>('/api/v1/yongren/order');
     ```
   - **注意**：企业专用订单API已通过史诗012在order-module中实现。故事012.014已提供`enterpriseOrderRoutes`类型（仅包含企业专用路由），实现更安全的类型检查。所有企业专用API（包括基础CRUD接口和扩展API）均通过`enterpriseAuthMiddleware`中间件保护，确保数据安全隔离。
   - 更新`src/api/index.ts`导出新的客户端
2. **更新订单列表和详情组件**：
   - 在`OrderList.tsx`和`OrderDetail.tsx`中导入并使用`enterpriseOrderClient`
   - 替换硬编码的模拟数据，连接后端API获取真实数据
   - 添加加载状态、错误处理和空状态显示
3. **对照原型文件进行详细UI验证**：
   - 严格对照`docs/小程序原型/yongren.html`第1114-1301行的订单管理页面设计
   - 验证所有卡片布局、字段显示、操作按钮位置和样式
   - 确保移动端响应式设计和交互友好性
4. **验证企业专用API路径和权限控制**：
   - 确认企业专用订单API路径：`/api/v1/yongren/order`
   - 验证API自动进行企业用户权限验证，仅返回当前企业关联数据
   - 确保数据安全隔离，防止跨企业数据访问
5. **解决Taro小程序Text组件垂直排列问题**：
   - 为所有包含多个Text组件的View容器添加`flex flex-col`类
   - 验证人才详情页、订单卡片等区域的文本垂直排列符合原型设计
6. **完善类型检查和测试**：
   - 运行`pnpm typecheck`确保无TypeScript错误
   - 更新`OrderList.test.tsx`和`OrderDetail.test.tsx`测试真实API集成
   - 添加订单搜索、筛选、状态变更等功能的集成测试

**文档更新记录 (2025-12-20)**：
- 根据史诗011最新实现，更新Navbar组件集成规范
- 添加任务6：集成Navbar导航栏组件（页面层级结构规范）
- 更新UI组件使用规范，反映mini-ui-packages拆分后的架构
- 更新技术约束，添加页面结构要求
- 更新测试要求，添加页面结构测试场景
- 统一所有用人小程序页面的Navbar集成标准

## QA结果
*来自QA代理对已完成故事实施的QA审查结果*