Parcourir la source

fix(story012.004): 修复统计模块测试并更新故事状态

- 修复statistics-module集成测试中的实体字段映射错误
  - OrderPerson实体:disabledPersonId → personId,添加缺失的joinDate字段
  - OrderPersonAsset实体:orderPersonId → orderId + personId,添加缺失的必填字段
- 更新故事012.004状态为Implemented
- 添加开发代理记录描述测试修复过程
- 验证所有集成测试通过:order-module (34/34) 和 statistics-module (7/7)

🤖 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 il y a 1 semaine
Parent
commit
eda3ddfdbb

+ 6 - 0
allin-packages/statistics-module/package.json

@@ -57,6 +57,12 @@
     "typescript": "^5.8.3",
     "vitest": "^3.2.4",
     "@d8d/shared-test-util": "workspace:*",
+    "@d8d/user-module": "workspace:*",
+    "@d8d/file-module": "workspace:*",
+    "@d8d/bank-names-module": "workspace:*",
+    "@d8d/allin-company-module": "workspace:*",
+    "@d8d/allin-platform-module": "workspace:*",
+    "@d8d/allin-enums": "workspace:*",
     "@typescript-eslint/eslint-plugin": "^8.18.1",
     "@typescript-eslint/parser": "^8.18.1",
     "eslint": "^9.17.0"

+ 17 - 12
allin-packages/statistics-module/tests/integration/statistics.integration.test.ts

@@ -4,16 +4,14 @@ import { IntegrationTestDatabase, setupIntegrationDatabaseHooksWithEntities } fr
 import { JWTUtil } from '@d8d/shared-utils';
 import { UserEntity, Role } from '@d8d/user-module';
 import { File } from '@d8d/file-module';
-import { DisabledPerson } from '@d8d/allin-disability-module';
+import { DisabledPerson, DisabledBankCard, DisabledPhoto, DisabledRemark, DisabledVisit } from '@d8d/allin-disability-module';
 import { BankName } from '@d8d/bank-names-module';
 import { Company } from '@d8d/allin-company-module/entities';
 import { Platform } from '@d8d/allin-platform-module';
 import { DataSource } from 'typeorm';
 import statisticsRoutes from '../../src/routes/statistics.routes';
-import { EmploymentOrder } from '@d8d/allin-order-module/entities/employment-order.entity';
-import { OrderPerson } from '@d8d/allin-order-module/entities/order-person.entity';
-import { OrderPersonAsset } from '@d8d/allin-order-module/entities/order-person-asset.entity';
-import { WorkStatus } from '@d8d/allin-enums';
+import { EmploymentOrder, OrderPerson, OrderPersonAsset } from '@d8d/allin-order-module/entities';
+import { WorkStatus, OrderStatus } from '@d8d/allin-enums';
 
 // 设置集成测试钩子
 setupIntegrationDatabaseHooksWithEntities([
@@ -23,6 +21,10 @@ setupIntegrationDatabaseHooksWithEntities([
   Platform,
   Company,
   DisabledPerson,
+  DisabledBankCard,
+  DisabledPhoto,
+  DisabledRemark,
+  DisabledVisit,
   BankName,
   EmploymentOrder,
   OrderPerson,
@@ -104,7 +106,7 @@ describe('数据统计API集成测试', () => {
     testDisabledPerson = disabledPersonRepository.create({
       name: '测试残疾人',
       gender: '男',
-      idCard: `test_id_${Date.now()}`,
+      idCard: `tid_${Date.now() % 1000000}`,
       disabilityType: '视力残疾',
       disabilityLevel: '三级',
       province: '北京市',
@@ -114,15 +116,16 @@ describe('数据统计API集成测试', () => {
       idAddress: '测试地址',
       phone: '13800138000',
       canDirectContact: 1,
-      disabilityId: `CJZ${Date.now()}`
+      disabilityId: `CJZ${Date.now() % 1000000}`
     });
     await disabledPersonRepository.save(testDisabledPerson);
 
     // 创建测试平台
     const platformRepository = dataSource.getRepository(Platform);
     const testPlatform = platformRepository.create({
-      name: '测试平台',
-      code: 'TEST',
+      platformName: '测试平台',
+      contactPerson: '测试联系人',
+      contactPhone: '13800138000',
       status: 1
     });
     await platformRepository.save(testPlatform);
@@ -135,7 +138,7 @@ describe('数据统计API集成测试', () => {
       companyId: testCompany.id,
       channelId: 1,
       expectedStartDate: new Date(),
-      orderStatus: 'active',
+      orderStatus: OrderStatus.CONFIRMED,
       workStatus: WorkStatus.WORKING
     });
     await orderRepository.save(testOrder);
@@ -144,7 +147,8 @@ describe('数据统计API集成测试', () => {
     const orderPersonRepository = dataSource.getRepository(OrderPerson);
     testOrderPerson = orderPersonRepository.create({
       orderId: testOrder.id,
-      disabledPersonId: testDisabledPerson.id,
+      personId: testDisabledPerson.id,
+      joinDate: new Date(),
       salaryDetail: 5000,
       workStatus: WorkStatus.WORKING
     });
@@ -153,7 +157,8 @@ describe('数据统计API集成测试', () => {
     // 创建测试订单人员资产(打卡视频)
     const orderPersonAssetRepository = dataSource.getRepository(OrderPersonAsset);
     const testAsset = orderPersonAssetRepository.create({
-      orderPersonId: testOrderPerson.id,
+      orderId: testOrder.id,
+      personId: testDisabledPerson.id,
       assetType: 'checkin_video',
       assetFileType: 'video',
       fileId: testFile.id

+ 10 - 1
docs/stories/012.004.story.md

@@ -1,7 +1,7 @@
 # 故事 012.004:订单统计与数据统计API
 
 ## 状态
-Approved
+Implemented
 
 ## 故事
 **作为**企业用户,
@@ -245,6 +245,9 @@ Approved
 - **类型检查错误**:statistics-module中存在路由响应类型不匹配问题,主要涉及Hono框架的响应类型兼容性
 - **实体字段名错误**:测试中发现公司实体字段`companyName`与`name`不匹配,残疾人实体字段`jobStatus`类型为数字而非字符串
 - **模块导入问题**:部分模块类型声明缺失,如`@d8d/allin-disability-module/schemas`缺少`DisabilityType`、`Gender`、`JobStatus`导出
+- **测试数据创建错误**:修复statistics-module集成测试中的实体字段映射问题:
+  - OrderPerson实体:`disabledPersonId`应为`personId`,缺少必填字段`joinDate`
+  - OrderPersonAsset实体:`orderPersonId`应为`orderId`和`personId`两个字段,缺少必填字段`orderId`和`personId`
 
 ### 完成笔记列表
 1. ✅ **订单统计API扩展完成**
@@ -277,6 +280,12 @@ Approved
    - 添加 `parseWithAwait` 验证所有响应数据
    - 修复路由响应类型和错误格式一致性
 
+6. ✅ **测试修复与验证完成**
+   - 修复statistics-module集成测试中的所有实体字段映射错误
+   - 添加缺失的必填字段:`joinDate`、`orderId`、`personId`
+   - 验证所有集成测试通过:order-module (34/34) 和 statistics-module (7/7)
+   - 安装并验证所有依赖包正常工作
+
 ### 文件列表
 
 #### 新增文件 (statistics-module)

+ 15 - 0
pnpm-lock.yaml

@@ -1036,9 +1036,24 @@ importers:
         specifier: ^4.1.12
         version: 4.1.12
     devDependencies:
+      '@d8d/allin-enums':
+        specifier: workspace:*
+        version: link:../enums
+      '@d8d/allin-platform-module':
+        specifier: workspace:*
+        version: link:../platform-module
+      '@d8d/bank-names-module':
+        specifier: workspace:*
+        version: link:../../packages/bank-names-module
+      '@d8d/file-module':
+        specifier: workspace:*
+        version: link:../../packages/file-module
       '@d8d/shared-test-util':
         specifier: workspace:*
         version: link:../../packages/shared-test-util
+      '@d8d/user-module':
+        specifier: workspace:*
+        version: link:../../packages/user-module
       '@types/node':
         specifier: ^22.10.2
         version: 22.19.1