|
|
@@ -16,8 +16,9 @@ Draft
|
|
|
5. 完成状态管理转换:数值计算状态
|
|
|
6. 完成表单转换:复杂数值验证
|
|
|
7. 配置package.json:依赖`@d8d/area-management-ui`
|
|
|
-8. 编写组件测试:验证数值计算和验证
|
|
|
-9. 通过类型检查和基本测试验证
|
|
|
+8. **创建薪资选择器组件**:作为可复用组件供其他UI包调用,支持按区域查询薪资
|
|
|
+9. 编写组件测试:验证数值计算和验证
|
|
|
+10. 通过类型检查和基本测试验证
|
|
|
|
|
|
**集成测试要求**:
|
|
|
- 测试文件:`tests/integration/salary.integration.test.tsx`
|
|
|
@@ -31,6 +32,14 @@ Draft
|
|
|
- 表单验证包含区域ID验证
|
|
|
- 测试区域选择功能
|
|
|
|
|
|
+**薪资选择器组件要求**:
|
|
|
+- 组件文件:`src/components/SalarySelector.tsx`
|
|
|
+- 功能:根据区域选择(省份、城市)查询并显示薪资水平
|
|
|
+- 集成:与`AreaSelect`组件配合使用,支持区域选择后自动查询薪资
|
|
|
+- 导出:作为可复用组件供其他UI包(如订单管理UI)调用
|
|
|
+- 测试文件:`tests/integration/salary-selector.integration.test.tsx`
|
|
|
+- 测试覆盖:区域选择、薪资查询、错误处理、组件复用
|
|
|
+
|
|
|
## Tasks / Subtasks
|
|
|
- [ ] 任务1:创建薪资管理UI包基础结构 (AC: 1, 7)
|
|
|
- [ ] 创建目录:`allin-packages/salary-management-ui/`
|
|
|
@@ -62,18 +71,29 @@ Draft
|
|
|
- [ ] 集成数值计算逻辑:基本工资、津贴、保险、公积金等计算
|
|
|
- [ ] 实现复杂数值验证:正数验证、范围验证等
|
|
|
|
|
|
-- [ ] 任务5:编写集成测试 (AC: 8)
|
|
|
- - [ ] 创建测试文件:`tests/integration/salary.integration.test.tsx`
|
|
|
+- [ ] 任务5:创建薪资选择器组件 (AC: 8)
|
|
|
+ - [ ] 分析订单管理模块中的薪资选择需求:查看`allin_system-master/client/app/admin/dashboard/order/OrderDetailModal.tsx`和`AddOrderModal.tsx`
|
|
|
+ - [ ] 参考现有选择器组件模式:`allin-packages/platform-management-ui/src/components/PlatformSelector.tsx`
|
|
|
+ - [ ] 创建薪资选择器组件:`src/components/SalarySelector.tsx`
|
|
|
+ - [ ] 集成区域选择器:与`AreaSelect`组件配合,支持区域选择后自动查询薪资
|
|
|
+ - [ ] 实现薪资查询逻辑:调用`getByProvinceCity` API查询薪资水平
|
|
|
+ - [ ] 添加组件导出:在`src/components/index.ts`中导出`SalarySelector`组件
|
|
|
+
|
|
|
+- [ ] 任务6:编写集成测试 (AC: 9)
|
|
|
+ - [ ] 创建主测试文件:`tests/integration/salary.integration.test.tsx`
|
|
|
- [ ] 实现完整CRUD流程测试:创建薪资 → 查询薪资列表 → 更新薪资 → 删除薪资
|
|
|
- [ ] 实现区域选择器集成测试:验证省份→城市→区县三级联动
|
|
|
- [ ] 实现数值计算测试:验证薪资计算逻辑
|
|
|
- [ ] 实现错误处理测试:API错误、网络错误、验证错误
|
|
|
+ - [ ] 创建薪资选择器测试文件:`tests/integration/salary-selector.integration.test.tsx`
|
|
|
+ - [ ] 实现薪资选择器测试:区域选择、薪资查询、错误处理、组件复用
|
|
|
|
|
|
-- [ ] 任务6:验证和测试 (AC: 9)
|
|
|
+- [ ] 任务7:验证和测试 (AC: 10)
|
|
|
- [ ] 运行`pnpm typecheck`确保无类型错误
|
|
|
- [ ] 运行`pnpm test`确保所有集成测试通过
|
|
|
- [ ] 验证区域选择器组件集成正常工作
|
|
|
- [ ] 验证数值计算和表单验证功能
|
|
|
+ - [ ] 验证薪资选择器组件可被其他UI包导入使用
|
|
|
|
|
|
## Dev Notes
|
|
|
|
|
|
@@ -103,6 +123,10 @@ Draft
|
|
|
|
|
|
### 源系统文件路径
|
|
|
- **需要移植的源文件**:`allin_system-master/client/app/admin/dashboard/salary/page.tsx`
|
|
|
+- **薪资选择器需求分析文件**:
|
|
|
+ - `allin_system-master/client/app/admin/dashboard/order/OrderDetailModal.tsx` - 使用`getSalaryByLocation`函数
|
|
|
+ - `allin_system-master/client/app/admin/dashboard/order/AddOrderModal.tsx` - 使用`getSalaryByLocation`函数
|
|
|
+ - `allin_system-master/client/app/admin/dashboard/order/orderService.ts` - `getSalaryByLocation`函数实现
|
|
|
- **需要对照参考的文件**:
|
|
|
- `allin-packages/platform-management-ui/src/components/PlatformManagement.tsx`
|
|
|
- `allin-packages/platform-management-ui/src/api/platformClient.ts`
|
|
|
@@ -111,6 +135,9 @@ Draft
|
|
|
- `allin-packages/company-management-ui/src/components/CompanyManagement.tsx`
|
|
|
- `allin-packages/company-management-ui/src/api/companyClient.ts`
|
|
|
- `allin-packages/company-management-ui/src/types/index.ts`
|
|
|
+- **选择器组件参考文件**:
|
|
|
+ - `allin-packages/platform-management-ui/src/components/PlatformSelector.tsx` - 平台选择器组件模式
|
|
|
+ - `allin-packages/company-management-ui/src/components/CompanySelector.tsx` - 公司选择器组件模式
|
|
|
- **区域选择器组件文件**:
|
|
|
- `packages/area-management-ui/src/components/AreaSelect.tsx`
|
|
|
- `packages/area-management-ui/src/api/areaClient.ts`
|
|
|
@@ -154,6 +181,38 @@ Draft
|
|
|
- **总额计算**:前端计算显示总额(基本工资 + 津贴 - 保险 - 公积金)
|
|
|
- **表单验证**:使用Zod Schema进行数值范围验证
|
|
|
|
|
|
+### 薪资选择器组件设计
|
|
|
+- **组件目的**:供订单管理UI包使用,根据区域选择查询薪资水平
|
|
|
+- **功能需求**(基于订单管理模块分析):
|
|
|
+ 1. 根据省份和城市查询薪资水平
|
|
|
+ 2. 显示查询到的薪资详细信息(基本工资、津贴、保险、公积金、总额)
|
|
|
+ 3. 支持手动调整薪资(订单模块中允许手动修改)
|
|
|
+ 4. 集成区域选择器,支持区域选择后自动查询
|
|
|
+- **组件接口**:
|
|
|
+ ```typescript
|
|
|
+ interface SalarySelectorProps {
|
|
|
+ value?: {
|
|
|
+ provinceId?: number;
|
|
|
+ cityId?: number;
|
|
|
+ salary?: number; // 查询到的薪资或手动调整的薪资
|
|
|
+ salaryDetail?: SalaryLevel; // 完整的薪资详情(可选)
|
|
|
+ };
|
|
|
+ onChange?: (value: {
|
|
|
+ provinceId?: number;
|
|
|
+ cityId?: number;
|
|
|
+ salary?: number;
|
|
|
+ salaryDetail?: SalaryLevel;
|
|
|
+ }) => void;
|
|
|
+ disabled?: boolean;
|
|
|
+ allowManualAdjust?: boolean; // 是否允许手动调整薪资
|
|
|
+ }
|
|
|
+ ```
|
|
|
+- **实现要点**:
|
|
|
+ 1. 使用`AreaSelect`组件进行区域选择
|
|
|
+ 2. 区域选择后自动调用`getByProvinceCity` API查询薪资
|
|
|
+ 3. 显示薪资详情,支持手动调整(如果允许)
|
|
|
+ 4. 导出为可复用组件
|
|
|
+
|
|
|
### Testing
|
|
|
**测试标准**:
|
|
|
- **测试框架**:Vitest + Testing Library
|
|
|
@@ -174,10 +233,21 @@ Draft
|
|
|
- 测试数值计算和验证逻辑
|
|
|
- 覆盖各种错误场景
|
|
|
|
|
|
+**薪资选择器测试要求**:
|
|
|
+- **测试文件**:`tests/integration/salary-selector.integration.test.tsx`
|
|
|
+- **测试场景**:
|
|
|
+ 1. 区域选择后自动查询薪资
|
|
|
+ 2. 薪资详情显示正确性
|
|
|
+ 3. 手动调整薪资功能(如果允许)
|
|
|
+ 4. 错误处理:区域不存在、API错误等
|
|
|
+ 5. 组件复用:验证其他UI包可以正确导入和使用
|
|
|
+- **参考测试**:`allin-packages/platform-management-ui/tests/integration/platform-selector.integration.test.tsx`
|
|
|
+
|
|
|
## Change Log
|
|
|
| Date | Version | Description | Author |
|
|
|
|------|---------|-------------|--------|
|
|
|
| 2025-12-03 | 1.0 | 初始创建故事008.004 | Scrum Master Bob |
|
|
|
+| 2025-12-03 | 1.1 | 添加薪资选择器组件任务,基于订单管理模块需求分析 | Scrum Master Bob |
|
|
|
|
|
|
## Dev Agent Record
|
|
|
*This section is populated by the development agent during implementation*
|