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

fix: 统一管理后台与企业小程序工作状态显示名称

修复管理后台订单详情中人员工作状态的显示名称与企业小程序不一致的问题:

- "已入职" → "待入职" (pre_working)
- "工作中" → "在职" (working)
- "未入职" → "未就业" (not_working)

修改文件:
- allin-packages/enums/src/enums/work-status.enum.ts - 更新 WorkStatusLabels
- allin-packages/order-management-ui/src/components/OrderDetailModal.tsx - 更新显示文本
- web/tests/e2e/pages/admin/order-management.page.ts - 更新测试映射
- web/tests/e2e/specs/cross-platform/status-update-sync.spec.ts - 更新测试断言

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

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
yourname 1 неделя назад
Родитель
Сommit
0996c93ce5

+ 127 - 0
_bmad-output/implementation-artifacts/13-27-work-status-labels-unify.md

@@ -0,0 +1,127 @@
+# Story 13.27: 统一工作状态显示名称
+
+Status: in-progress
+
+## Story
+
+作为系统用户,
+我希望管理后台与企业小程序的人员工作状态显示名称保持一致,
+以便避免混淆和提高用户体验。
+
+## Acceptance Criteria
+
+### AC1: 核心枚举定义更新
+**Given** 系统有统一的工作状态枚举定义
+**When** 用户查看任何平台的工作状态显示
+**Then** 应使用统一的显示名称:
+- `pre_working` → **待入职**
+- `working` → **在职**
+- `resigned` → **已离职**
+- `not_working` → **未就业**
+
+### AC2: 管理后台前端显示统一
+**Given** 管理后台订单详情组件使用工作状态枚举
+**When** 用户在管理后台查看人员工作状态
+**Then** 显示的文本应与企业小程序一致
+
+### AC3: E2E 测试更新
+**Given** 跨端同步测试使用工作状态显示名称
+**When** 运行 E2E 测试验证跨端数据同步
+**Then** 测试应使用更新后的显示名称进行验证
+
+### AC4: 类型检查和构建通过
+**Given** 修改了核心枚举定义
+**When** 运行类型检查和构建
+**Then** 所有检查应通过,没有类型错误
+
+## Tasks / Subtasks
+
+- [x] **任务 1: 更新核心枚举定义** (AC: #1)
+  - [x] 1.1 修改 `WorkStatusLabels`: `待就业` → `待入职`
+  - [x] 1.2 修改 `WorkStatusLabels`: `已就业` → `在职`
+  - [x] 1.3 验证枚举包类型检查通过
+
+- [x] **任务 2: 更新管理后台前端显示** (AC: #2)
+  - [x] 2.1 修改 `OrderDetailModal.tsx` SelectItem: `已入职` → `待入职`
+  - [x] 2.2 修改 `OrderDetailModal.tsx` SelectItem: `工作中` → `在职`
+
+- [x] **任务 3: 更新 E2E 测试页面对象** (AC: #3)
+  - [x] 3.1 更新 `order-management.page.ts` 中的 `WORK_STATUS_LABELS`
+
+- [x] **任务 4: 更新跨平台状态同步测试** (AC: #3)
+  - [x] 4.1 更新 `status-update-sync.spec.ts` 中的状态文本检查
+
+- [ ] **任务 5: 运行完整验证** (AC: #4)
+  - [ ] 5.1 运行 E2E 测试验证跨端数据同步
+  - [ ] 5.2 验证类型检查通过
+  - [ ] 5.3 验证构建成功
+
+## Dev Notes
+
+### 修改文件列表
+
+1. **核心枚举定义** - `allin-packages/enums/src/enums/work-status.enum.ts`
+   ```typescript
+   export const WorkStatusLabels: Record<WorkStatus, string> = {
+     [WorkStatus.NOT_WORKING]: '未就业',
+     [WorkStatus.PRE_WORKING]: '待入职',  // 原: 待就业
+     [WorkStatus.WORKING]: '在职',         // 原: 已就业
+     [WorkStatus.RESIGNED]: '已离职'
+   };
+   ```
+
+2. **管理后台前端** - `allin-packages/order-management-ui/src/components/OrderDetailModal.tsx`
+   - 修改 SelectItem 显示文本: `已入职` → `待入职`
+   - 修改 SelectItem 显示文本: `工作中` → `在职`
+
+3. **E2E 测试页面对象** - `web/tests/e2e/pages/admin/order-management.page.ts`
+   - 更新 `WORK_STATUS_LABELS` 映射
+
+4. **跨平台状态同步测试** - `web/tests/e2e/specs/cross-platform/status-update-sync.spec.ts`
+   - 更新状态文本检查
+
+### 相关 Epic 和 Story
+
+**Epic 13: 跨端数据同步测试**
+- Story 13.4: 人员状态更新跨端同步 ✅
+- Story 13.27: 统一工作状态显示名称 ← 当前 Story
+
+### 参考文档
+
+- 枚举定义: `allin-packages/enums/src/enums/work-status.enum.ts`
+- 管理后台组件: `allin-packages/order-management-ui/src/components/OrderDetailModal.tsx`
+- E2E 测试页面对象: `web/tests/e2e/pages/admin/order-management.page.ts`
+- 跨平台同步测试: `web/tests/e2e/specs/cross-platform/status-update-sync.spec.ts`
+
+## Dev Agent Record
+
+### Debug Log References
+
+**2026-01-19 Story 创建和开发**:
+- ✅ 核心枚举定义已更新
+- ✅ 管理后台前端已更新
+- ✅ E2E 测试页面对象已更新
+- ✅ 跨平台状态同步测试已更新
+- ⏳ 等待 E2E 测试验证
+
+### Completion Notes List
+
+**2026-01-19**:
+- 统一工作状态显示名称
+- 修改 4 个文件
+- 枚举包类型检查通过
+- 等待 E2E 测试验证
+
+### File List
+
+**Modified files**:
+- `/mnt/code/188-179-template-6/allin-packages/enums/src/enums/work-status.enum.ts`
+- `/mnt/code/188-179-template-6/allin-packages/order-management-ui/src/components/OrderDetailModal.tsx`
+- `/mnt/code/188-179-template-6/web/tests/e2e/pages/admin/order-management.page.ts`
+- `/mnt/code/188-179-template-6/web/tests/e2e/specs/cross-platform/status-update-sync.spec.ts`
+
+## Change Log
+
+- 2026-01-19: Story 13.27 创建
+  - 统一工作状态显示名称
+  - 状态:in-progress

+ 2 - 2
allin-packages/enums/src/enums/work-status.enum.ts

@@ -24,8 +24,8 @@ export enum WorkStatus {
  */
 export const WorkStatusLabels: Record<WorkStatus, string> = {
   [WorkStatus.NOT_WORKING]: '未就业',
-  [WorkStatus.PRE_WORKING]: '待就业',
-  [WorkStatus.WORKING]: '已就业',
+  [WorkStatus.PRE_WORKING]: '待入职',
+  [WorkStatus.WORKING]: '在职',
   [WorkStatus.RESIGNED]: '已离职'
 };
 

+ 2 - 2
allin-packages/order-management-ui/src/components/OrderDetailModal.tsx

@@ -706,13 +706,13 @@ const OrderDetailModal: React.FC<OrderDetailModalProps> = ({
                                       value={WorkStatus.PRE_WORKING}
                                       data-testid={`work-status-option-pre-working-${person.personId}`}
                                     >
-                                      入职
+                                      入职
                                     </SelectItem>
                                     <SelectItem
                                       value={WorkStatus.WORKING}
                                       data-testid={`work-status-option-working-${person.personId}`}
                                     >
-                                      工作中
+                                      在职
                                     </SelectItem>
                                     <SelectItem
                                       value={WorkStatus.RESIGNED}

+ 3 - 3
web/tests/e2e/pages/admin/order-management.page.ts

@@ -46,9 +46,9 @@ export type WorkStatus = typeof WORK_STATUS[keyof typeof WORK_STATUS];
  * 工作状态显示名称映射
  */
 export const WORK_STATUS_LABELS: Record<WorkStatus, string> = {
-  not_working: '未入职',
-  pre_working: '入职',
-  working: '工作中',
+  not_working: '未就业',
+  pre_working: '入职',
+  working: '在职',
   resigned: '已离职',
 } as const;
 

+ 4 - 4
web/tests/e2e/specs/cross-platform/status-update-sync.spec.ts

@@ -140,7 +140,7 @@ const testState: TestState = {
   personName: null,
   personPhone: null,
   originalWorkStatus: null,
-  newWorkStatus: WORK_STATUS.WORKING, // 默认测试:未入职 → 工作中
+  newWorkStatus: WORK_STATUS.WORKING, // 默认测试:未就业 → 在职
 };
 
 test.describe.serial('跨端数据同步测试 - 后台更新人员状态到双小程序', () => {
@@ -205,11 +205,11 @@ test.describe.serial('跨端数据同步测试 - 后台更新人员状态到双
       let currentStatus: WorkStatus;
 
       // 根据状态文本映射到 WORK_STATUS 枚举
-      if (currentStatusText?.includes('未入职')) {
+      if (currentStatusText?.includes('未就业') || currentStatusText?.includes('未入职')) {
         currentStatus = WORK_STATUS.NOT_WORKING;
-      } else if (currentStatusText?.includes('入职')) {
+      } else if (currentStatusText?.includes('入职')) {
         currentStatus = WORK_STATUS.PRE_WORKING;
-      } else if (currentStatusText?.includes('工作中')) {
+      } else if (currentStatusText?.includes('在职')) {
         currentStatus = WORK_STATUS.WORKING;
       } else if (currentStatusText?.includes('已离职')) {
         currentStatus = WORK_STATUS.RESIGNED;