From 3203adb5a7df270c04ce2a8b7ed34fc9c3d27199 Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Sat, 8 Aug 2026 13:32:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy/sql/头程数据库统一增量-MySQL8.sql | 39 +- .../PlatformTruckAppointmentController.java | 10 + .../domain/TruckAppointmentStatus.java | 6 + .../firstleg/dto/TruckAppointmentDtos.java | 7 + .../TruckAppointmentAttachmentEntity.java | 5 + .../entity/TruckAppointmentEntity.java | 54 + .../entity/TruckAppointmentHistoryEntity.java | 5 + .../TruckAppointmentOperationEntity.java | 5 + .../TruckAppointmentAttachmentMapper.java | 1 + .../mapper/TruckAppointmentHistoryMapper.java | 1 + .../mapper/TruckAppointmentMapper.java | 8 + .../TruckAppointmentOperationMapper.java | 1 + .../PlatformOceanBookingController.java | 65 + .../domain/OceanBookingStatus.java | 11 + .../oceanbooking/dto/OceanBookingDtos.java | 81 + ...OceanBookingContainerAllocationEntity.java | 24 + ...ceanBookingContainerRequirementEntity.java | 19 + .../entity/OceanBookingEntity.java | 54 + .../entity/OceanBookingOperationEntity.java | 27 + .../entity/OceanBookingPartyEntity.java | 20 + .../OceanBookingStatusHistoryEntity.java | 28 + ...OceanBookingContainerAllocationMapper.java | 5 + ...ceanBookingContainerRequirementMapper.java | 5 + .../mapper/OceanBookingMapper.java | 92 + .../mapper/OceanBookingOperationMapper.java | 25 + .../mapper/OceanBookingPartyMapper.java | 5 + .../OceanBookingStatusHistoryMapper.java | 5 + .../repository/OceanBookingRepository.java | 63 + .../service/OceanBookingService.java | 272 + .../TruckAppointmentRepository.java | 6 + .../service/TruckAppointmentService.java | 14 + .../db/phase3-ocean-booking-schema.sql | 222 + .../db/phase3-truck-appointment-schema.sql | 31 + ...ruckAppointmentControllerContractTest.java | 6 + ...ormOceanBookingControllerContractTest.java | 56 + .../OceanBookingMapperContractTest.java | 39 + .../OceanBookingSqlContractTest.java | 58 + .../service/OceanBookingServiceTest.java | 121 + .../iam/client/OverseasStorageFeeClient.java | 28 + .../service/MerchantOnboardingService.java | 3 + ...erseasStorageFeeInitializationService.java | 96 + .../com/baiyue/iam/service/TenantService.java | 3 + .../db/phase2-location-permissions.sql | 8 +- .../LocationPermissionSqlContractTest.java | 67 + .../MerchantOnboardingServiceTest.java | 2 + ...asStorageFeeInitializationServiceTest.java | 42 + .../iam/service/TenantCustomerExportTest.java | 1 + .../baiyue/iam/service/TenantServiceTest.java | 1 + reports/admin-isolation-smoke.json | 3360 +++++++ .../admin-orders-measurement-isolated.json | 1499 ++++ ...dmin-orders-mojia-postdeploy-20260808.json | 1518 ++++ ...rders-mojia-postdeploy-rerun-20260808.json | 1499 ++++ ...dmin-overseas-storage-fees-standalone.json | 183 + reports/admin-overseas-storage-fees.json | 881 ++ ...in-test-env-acceptance-20260808042004.json | 789 ++ ...in-test-env-acceptance-20260808042143.json | 1391 +++ ...in-test-env-acceptance-20260808043609.json | 1518 ++++ ...in-test-env-acceptance-20260808050925.json | 6399 ++++++++++++++ .../admin-test-env-acceptance-isolated.json | 7602 ++++++++++++++++ ...st-env-acceptance-overseas-fees-final.json | 7734 ++++++++++++++++ ...min-test-env-acceptance-overseas-fees.json | 7761 +++++++++++++++++ scripts/admin-test-env-acceptance.mjs | 62 +- .../overseas-storage-fees.mjs | 164 + .../InternalOverseasStorageFeeController.java | 37 + ...mCustomerOverseasStorageFeeController.java | 38 + .../warehouse/dto/OverseasStorageFeeDtos.java | 20 +- .../entity/OverseasStorageFeeRuleEntity.java | 1 + .../entity/OverseasStorageFeeTierEntity.java | 2 + .../OverseasStorageFeeRepository.java | 5 + .../service/OverseasStorageFeeService.java | 94 +- .../db/phase1-warehouse-schema-migration.sql | 16 + warehouse/src/main/resources/db/warehouse.sql | 24 + .../OverseasStorageFeeServiceTest.java | 13 + 73 files changed, 44331 insertions(+), 26 deletions(-) create mode 100644 firstleg/src/main/java/com/baiyue/firstleg/controller/PlatformTruckAppointmentController.java create mode 100644 firstleg/src/main/java/com/baiyue/firstleg/domain/TruckAppointmentStatus.java create mode 100644 firstleg/src/main/java/com/baiyue/firstleg/dto/TruckAppointmentDtos.java create mode 100644 firstleg/src/main/java/com/baiyue/firstleg/entity/TruckAppointmentAttachmentEntity.java create mode 100644 firstleg/src/main/java/com/baiyue/firstleg/entity/TruckAppointmentEntity.java create mode 100644 firstleg/src/main/java/com/baiyue/firstleg/entity/TruckAppointmentHistoryEntity.java create mode 100644 firstleg/src/main/java/com/baiyue/firstleg/entity/TruckAppointmentOperationEntity.java create mode 100644 firstleg/src/main/java/com/baiyue/firstleg/mapper/TruckAppointmentAttachmentMapper.java create mode 100644 firstleg/src/main/java/com/baiyue/firstleg/mapper/TruckAppointmentHistoryMapper.java create mode 100644 firstleg/src/main/java/com/baiyue/firstleg/mapper/TruckAppointmentMapper.java create mode 100644 firstleg/src/main/java/com/baiyue/firstleg/mapper/TruckAppointmentOperationMapper.java create mode 100644 firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/controller/PlatformOceanBookingController.java create mode 100644 firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/domain/OceanBookingStatus.java create mode 100644 firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/dto/OceanBookingDtos.java create mode 100644 firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/entity/OceanBookingContainerAllocationEntity.java create mode 100644 firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/entity/OceanBookingContainerRequirementEntity.java create mode 100644 firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/entity/OceanBookingEntity.java create mode 100644 firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/entity/OceanBookingOperationEntity.java create mode 100644 firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/entity/OceanBookingPartyEntity.java create mode 100644 firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/entity/OceanBookingStatusHistoryEntity.java create mode 100644 firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/mapper/OceanBookingContainerAllocationMapper.java create mode 100644 firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/mapper/OceanBookingContainerRequirementMapper.java create mode 100644 firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/mapper/OceanBookingMapper.java create mode 100644 firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/mapper/OceanBookingOperationMapper.java create mode 100644 firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/mapper/OceanBookingPartyMapper.java create mode 100644 firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/mapper/OceanBookingStatusHistoryMapper.java create mode 100644 firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/repository/OceanBookingRepository.java create mode 100644 firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/service/OceanBookingService.java create mode 100644 firstleg/src/main/java/com/baiyue/firstleg/repository/TruckAppointmentRepository.java create mode 100644 firstleg/src/main/java/com/baiyue/firstleg/service/TruckAppointmentService.java create mode 100644 firstleg/src/main/resources/db/phase3-ocean-booking-schema.sql create mode 100644 firstleg/src/main/resources/db/phase3-truck-appointment-schema.sql create mode 100644 firstleg/src/test/java/com/baiyue/firstleg/controller/TruckAppointmentControllerContractTest.java create mode 100644 firstleg/src/test/java/com/baiyue/firstleg/oceanbooking/controller/PlatformOceanBookingControllerContractTest.java create mode 100644 firstleg/src/test/java/com/baiyue/firstleg/oceanbooking/repository/OceanBookingMapperContractTest.java create mode 100644 firstleg/src/test/java/com/baiyue/firstleg/oceanbooking/repository/OceanBookingSqlContractTest.java create mode 100644 firstleg/src/test/java/com/baiyue/firstleg/oceanbooking/service/OceanBookingServiceTest.java create mode 100644 iam/src/main/java/com/baiyue/iam/client/OverseasStorageFeeClient.java create mode 100644 iam/src/main/java/com/baiyue/iam/service/OverseasStorageFeeInitializationService.java create mode 100644 iam/src/test/java/com/baiyue/iam/repository/LocationPermissionSqlContractTest.java create mode 100644 iam/src/test/java/com/baiyue/iam/service/OverseasStorageFeeInitializationServiceTest.java create mode 100644 reports/admin-isolation-smoke.json create mode 100644 reports/admin-orders-measurement-isolated.json create mode 100644 reports/admin-orders-mojia-postdeploy-20260808.json create mode 100644 reports/admin-orders-mojia-postdeploy-rerun-20260808.json create mode 100644 reports/admin-overseas-storage-fees-standalone.json create mode 100644 reports/admin-overseas-storage-fees.json create mode 100644 reports/admin-test-env-acceptance-20260808042004.json create mode 100644 reports/admin-test-env-acceptance-20260808042143.json create mode 100644 reports/admin-test-env-acceptance-20260808043609.json create mode 100644 reports/admin-test-env-acceptance-20260808050925.json create mode 100644 reports/admin-test-env-acceptance-isolated.json create mode 100644 reports/admin-test-env-acceptance-overseas-fees-final.json create mode 100644 reports/admin-test-env-acceptance-overseas-fees.json create mode 100644 scripts/admin-test-env-modules/overseas-storage-fees.mjs create mode 100644 warehouse/src/main/java/com/baiyue/warehouse/controller/InternalOverseasStorageFeeController.java create mode 100644 warehouse/src/main/java/com/baiyue/warehouse/controller/PlatformCustomerOverseasStorageFeeController.java diff --git a/deploy/sql/头程数据库统一增量-MySQL8.sql b/deploy/sql/头程数据库统一增量-MySQL8.sql index 13f91ab9a..895daf789 100644 --- a/deploy/sql/头程数据库统一增量-MySQL8.sql +++ b/deploy/sql/头程数据库统一增量-MySQL8.sql @@ -3473,8 +3473,12 @@ BEGIN END IF; IF EXISTS ( SELECT 1 FROM iam_permission - WHERE (id = 5103040 AND permission_code <> 'platform:download:list') - OR (id = 5103041 AND permission_code <> 'platform:download:all') + WHERE (id = 5103040 AND NOT ( + (permission_code = 'platform:download:list' AND parent_id = 5103000) + OR (permission_code = 'platform:location:list' AND parent_id = 5103000))) + OR (id = 5103041 AND NOT ( + (permission_code = 'platform:download:all' AND parent_id = 5103040) + OR (permission_code = 'platform:location:create' AND parent_id = 5103040))) OR (permission_code = 'platform:download:list' AND id <> 5103040) OR (permission_code = 'platform:download:all' AND id <> 5103041) ) THEN @@ -3952,6 +3956,7 @@ CREATE TABLE IF NOT EXISTS wh_overseas_storage_fee_rule ( tenant_id BIGINT UNSIGNED NOT NULL COMMENT '客户账号ID,沿用tenant_id物理字段', customer_name VARCHAR(128) NOT NULL COMMENT '客户公司名称快照', currency CHAR(3) NOT NULL COMMENT 'ISO 4217币种三字码', + initialization_key VARCHAR(191) NULL COMMENT '初始化幂等键', created_by BIGINT UNSIGNED NULL COMMENT '创建人ID', created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', updated_by BIGINT UNSIGNED NULL COMMENT '最后修改人ID', @@ -3973,8 +3978,10 @@ CREATE TABLE IF NOT EXISTS wh_overseas_storage_fee_tier ( tenant_id BIGINT UNSIGNED NOT NULL COMMENT '客户账号ID,沿用tenant_id物理字段', rule_id BIGINT UNSIGNED NOT NULL COMMENT '阶梯费用规则ID', start_day SMALLINT UNSIGNED NOT NULL COMMENT '起始天,含边界', - end_day SMALLINT UNSIGNED NOT NULL COMMENT '结束天,含边界', - unit_price DECIMAL(18,6) NOT NULL COMMENT '仓储费标准', + end_day SMALLINT UNSIGNED NULL COMMENT '结束天,含边界;NULL表示以上', + fee_type VARCHAR(32) NOT NULL DEFAULT 'STORAGE' COMMENT '费用类型', + billing_unit VARCHAR(16) NOT NULL DEFAULT 'CBM' COMMENT '计费单位', + unit_price DECIMAL(18,6) NOT NULL COMMENT '仓储费标准,可为0', sort_no SMALLINT UNSIGNED NOT NULL COMMENT '阶梯排序号', created_by BIGINT UNSIGNED NULL COMMENT '创建人ID', created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', @@ -3987,12 +3994,30 @@ CREATE TABLE IF NOT EXISTS wh_overseas_storage_fee_tier ( GENERATED ALWAYS AS (CASE WHEN deleted = 0 THEN start_day ELSE NULL END) STORED COMMENT '未删除阶梯的起始天唯一键', PRIMARY KEY (id), - UNIQUE KEY uk_overseas_fee_tier_start (rule_id, active_start_day), + UNIQUE KEY uk_overseas_fee_tier_start (rule_id, fee_type, active_start_day), KEY idx_overseas_fee_tier_rule (tenant_id, rule_id, deleted, sort_no, id), - CONSTRAINT chk_overseas_fee_tier_days CHECK (start_day >= 1 AND end_day >= start_day), - CONSTRAINT chk_overseas_fee_tier_price CHECK (unit_price > 0) + CONSTRAINT chk_overseas_fee_tier_days CHECK (start_day >= 1 AND (end_day IS NULL OR end_day >= start_day)), + CONSTRAINT chk_overseas_fee_tier_price CHECK (unit_price >= 0) ) ENGINE=InnoDB COMMENT='海外仓阶梯仓储费明细'; +-- 兼容已存在的旧版海外仓费用表:补齐新字段及免费档/无上限档约束。 +ALTER TABLE wh_overseas_storage_fee_rule + ADD COLUMN IF NOT EXISTS initialization_key VARCHAR(191) NULL COMMENT '初始化幂等键'; +ALTER TABLE wh_overseas_storage_fee_tier + ADD COLUMN IF NOT EXISTS fee_type VARCHAR(32) NOT NULL DEFAULT 'STORAGE' COMMENT '费用类型', + ADD COLUMN IF NOT EXISTS billing_unit VARCHAR(16) NOT NULL DEFAULT 'CBM' COMMENT '计费单位'; +ALTER TABLE wh_overseas_storage_fee_tier + MODIFY COLUMN end_day SMALLINT UNSIGNED NULL COMMENT '结束天,含边界;NULL表示以上', + MODIFY COLUMN unit_price DECIMAL(18,6) NOT NULL COMMENT '仓储费标准,可为0'; +ALTER TABLE wh_overseas_storage_fee_tier + DROP CHECK chk_overseas_fee_tier_days, + DROP CHECK chk_overseas_fee_tier_price, + ADD CONSTRAINT chk_overseas_fee_tier_days CHECK (start_day >= 1 AND (end_day IS NULL OR end_day >= start_day)), + ADD CONSTRAINT chk_overseas_fee_tier_price CHECK (unit_price >= 0); +ALTER TABLE wh_overseas_storage_fee_tier + DROP INDEX uk_overseas_fee_tier_start, + ADD UNIQUE KEY uk_overseas_fee_tier_start (rule_id, fee_type, active_start_day); + USE baiyue_iam; INSERT INTO iam_permission ( id, tenant_id, app_code, permission_type, parent_id, permission_code, diff --git a/firstleg/src/main/java/com/baiyue/firstleg/controller/PlatformTruckAppointmentController.java b/firstleg/src/main/java/com/baiyue/firstleg/controller/PlatformTruckAppointmentController.java new file mode 100644 index 000000000..15d7a8c2d --- /dev/null +++ b/firstleg/src/main/java/com/baiyue/firstleg/controller/PlatformTruckAppointmentController.java @@ -0,0 +1,10 @@ +package com.baiyue.firstleg.controller; +import com.baiyue.common.audit.BusinessAudit; import com.baiyue.common.core.api.*; import com.baiyue.common.security.AuthenticatedUser; import com.baiyue.firstleg.dto.TruckAppointmentDtos.*; import com.baiyue.firstleg.entity.TruckAppointmentEntity; import com.baiyue.firstleg.service.*; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; import jakarta.validation.Valid; import jakarta.validation.constraints.Positive; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.time.LocalDateTime; +@Tag(name="拖车预约") @Validated @RestController @RequestMapping("/api/platform/v1/truck-appointments") public class PlatformTruckAppointmentController { @Resource TruckAppointmentService service; + @GetMapping @PreAuthorize("hasAuthority('platform:firstleg:truck-appointment:list')") public ApiResponse> page(@AuthenticationPrincipal AuthenticatedUser u,@Valid Query q){FirstlegScopeGuard.platform(u);return ApiResponse.success(service.page(q));} + @GetMapping("/{id}") @PreAuthorize("hasAuthority('platform:firstleg:truck-appointment:view')") public ApiResponse detail(@AuthenticationPrincipal AuthenticatedUser u,@PathVariable @Positive long id){FirstlegScopeGuard.platform(u);return ApiResponse.success(service.detail(id));} + @PostMapping @PreAuthorize("hasAuthority('platform:firstleg:truck-appointment:create')") @BusinessAudit(event="TRUCK_APPOINTMENT_CREATE",resourceType="TRUCK_APPOINTMENT",captureBefore=false) public ApiResponse create(@AuthenticationPrincipal AuthenticatedUser u,@Valid @RequestBody SaveRequest r){FirstlegScopeGuard.platform(u);return ApiResponse.success(service.create(u.userId(),u.username(),r));} + @PutMapping("/{id}") @PreAuthorize("hasAuthority('platform:firstleg:truck-appointment:edit')") public ApiResponse edit(@AuthenticationPrincipal AuthenticatedUser u,@PathVariable long id,@Valid @RequestBody SaveRequest r){FirstlegScopeGuard.platform(u);return ApiResponse.success(service.edit(id,u.userId(),u.username(),r));} + @PostMapping("/{id}/{action}") @PreAuthorize("hasAuthority('platform:firstleg:truck-appointment:operate')") @BusinessAudit(event="TRUCK_APPOINTMENT_ACTION",resourceType="TRUCK_APPOINTMENT") public ApiResponse action(@AuthenticationPrincipal AuthenticatedUser u,@PathVariable long id,@PathVariable String action,@RequestHeader(value="Idempotency-Key",required=false) String idem,@RequestHeader(value="X-Request-Hash",required=false) String hash,@Valid @RequestBody ActionRequest r){FirstlegScopeGuard.platform(u);return ApiResponse.success(service.action(id,action.toUpperCase(),r,idem,hash,u.userId(),u.username()));} + @PostMapping("/{id}/reschedule") @PreAuthorize("hasAuthority('platform:firstleg:truck-appointment:operate')") public ApiResponse reschedule(@AuthenticationPrincipal AuthenticatedUser u,@PathVariable long id,@RequestParam LocalDateTime plannedLoadingAt,@Valid @RequestBody ActionRequest r){FirstlegScopeGuard.platform(u);return ApiResponse.success(service.reschedule(id,plannedLoadingAt,r,u.userId(),u.username()));} +} diff --git a/firstleg/src/main/java/com/baiyue/firstleg/domain/TruckAppointmentStatus.java b/firstleg/src/main/java/com/baiyue/firstleg/domain/TruckAppointmentStatus.java new file mode 100644 index 000000000..41d7db395 --- /dev/null +++ b/firstleg/src/main/java/com/baiyue/firstleg/domain/TruckAppointmentStatus.java @@ -0,0 +1,6 @@ +package com.baiyue.firstleg.domain; + +public enum TruckAppointmentStatus { + DRAFT, PENDING_DISPATCH, DISPATCHED, PICKUP_IN_PROGRESS, ARRIVED_WAREHOUSE, + LOADING, DEPARTED, COMPLETED, RESCHEDULED, EXCEPTION, CANCELLED +} diff --git a/firstleg/src/main/java/com/baiyue/firstleg/dto/TruckAppointmentDtos.java b/firstleg/src/main/java/com/baiyue/firstleg/dto/TruckAppointmentDtos.java new file mode 100644 index 000000000..0cbe5e336 --- /dev/null +++ b/firstleg/src/main/java/com/baiyue/firstleg/dto/TruckAppointmentDtos.java @@ -0,0 +1,7 @@ +package com.baiyue.firstleg.dto; +import jakarta.validation.constraints.*; import java.math.BigDecimal; import java.time.LocalDateTime; +public final class TruckAppointmentDtos { private TruckAppointmentDtos(){} + public record Query(@Size(max=64) String keyword, com.baiyue.firstleg.domain.TruckAppointmentStatus status, @Positive Long containerBookingId, @Min(1) long page, @Min(1) @Max(200) long size){ public Query{if(page==0)page=1;if(size==0)size=20;} } + public record SaveRequest(@Positive Long outboundOrderId,@Positive Long oceanBookingId,@Positive Long containerBookingId,@Positive Long loadingPlanId,@Positive Long warehouseId,@Positive Long customerId,@Size(max=128) String customerName,@Positive Long carrierId,@Size(max=128) String carrierName,@Size(max=64) String fleetContact,@Size(max=32) String fleetPhone,@Size(max=64) String driverName,@Size(max=32) String driverPhone,@Size(max=32) String driverIdCard,@Size(max=32) String vehicleNo,@Size(max=128) String storeName,@Size(max=64) String storeContact,@Size(max=32) String storePhone,@Size(max=255) String storeAddress,@Size(max=64) String storeCity,@Size(max=16) String storeZipcode,@PositiveOrZero Integer packageCount,@DecimalMin("0") BigDecimal grossWeightKg,@DecimalMin("0") BigDecimal volumeCbm,@PositiveOrZero Integer palletCount,@Size(max=255) String poNo,@NotNull LocalDateTime plannedLoadingAt,@PositiveOrZero Integer transitMinutes,@DecimalMin("0") BigDecimal payableAmount,@DecimalMin("0") BigDecimal receivableAmount,@Size(max=8) String currency,@Size(max=1000) String remark,@NotNull @PositiveOrZero Integer expectedVersion){} + public record ActionRequest(@NotNull @PositiveOrZero Integer expectedVersion,@Size(max=500) String reason){} +} diff --git a/firstleg/src/main/java/com/baiyue/firstleg/entity/TruckAppointmentAttachmentEntity.java b/firstleg/src/main/java/com/baiyue/firstleg/entity/TruckAppointmentAttachmentEntity.java new file mode 100644 index 000000000..dc4a2e1d3 --- /dev/null +++ b/firstleg/src/main/java/com/baiyue/firstleg/entity/TruckAppointmentAttachmentEntity.java @@ -0,0 +1,5 @@ +package com.baiyue.firstleg.entity; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Getter; import lombok.Setter; import java.time.LocalDateTime; +@Getter @Setter @TableName("fl_truck_appointment_attachment") public class TruckAppointmentAttachmentEntity { + @TableId(type=IdType.ASSIGN_ID) private Long id; private Long appointmentId; private Long fileId; private String attachmentType; private String fileName; private String fileHash; private String visibility; private Long uploadedBy; private LocalDateTime uploadedAt; +} diff --git a/firstleg/src/main/java/com/baiyue/firstleg/entity/TruckAppointmentEntity.java b/firstleg/src/main/java/com/baiyue/firstleg/entity/TruckAppointmentEntity.java new file mode 100644 index 000000000..c00b081c0 --- /dev/null +++ b/firstleg/src/main/java/com/baiyue/firstleg/entity/TruckAppointmentEntity.java @@ -0,0 +1,54 @@ +package com.baiyue.firstleg.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Getter; +import lombok.Setter; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import com.baiyue.firstleg.domain.TruckAppointmentStatus; + +@Getter @Setter @TableName("fl_truck_appointment") +public class TruckAppointmentEntity { + @TableId(type = IdType.ASSIGN_ID) private Long id; + private String appointmentNo; + private Long outboundOrderId; + private Long oceanBookingId; + private Long containerBookingId; + private Long loadingPlanId; + private Long warehouseId; + private Long customerId; + private String customerName; + private Long carrierId; + private String carrierName; + private String fleetContact; + private String fleetPhone; + private String driverName; + private String driverPhone; + private String driverIdCard; + private String vehicleNo; + private String storeName; + private String storeContact; + private String storePhone; + private String storeAddress; + private String storeCity; + private String storeZipcode; + private Integer packageCount; + private BigDecimal grossWeightKg; + private BigDecimal volumeCbm; + private Integer palletCount; + private String poNo; + private LocalDateTime plannedLoadingAt; + private LocalDateTime actualLoadingAt; + private Integer transitMinutes; + private BigDecimal payableAmount; + private BigDecimal receivableAmount; + private String currency; + private TruckAppointmentStatus status; + private Integer revision; + private Integer version; + private String remark; + private LocalDateTime createdAt; + private LocalDateTime updatedAt; +} diff --git a/firstleg/src/main/java/com/baiyue/firstleg/entity/TruckAppointmentHistoryEntity.java b/firstleg/src/main/java/com/baiyue/firstleg/entity/TruckAppointmentHistoryEntity.java new file mode 100644 index 000000000..ead06619e --- /dev/null +++ b/firstleg/src/main/java/com/baiyue/firstleg/entity/TruckAppointmentHistoryEntity.java @@ -0,0 +1,5 @@ +package com.baiyue.firstleg.entity; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Getter; import lombok.Setter; import java.time.LocalDateTime; +@Getter @Setter @TableName("fl_truck_appointment_history") public class TruckAppointmentHistoryEntity { + @TableId(type=IdType.ASSIGN_ID) private Long id; private Long appointmentId; private Integer revision; private String action; private String fromStatus; private String toStatus; private String reason; private Long operatorId; private String operatorName; private String requestId; private LocalDateTime createdAt; +} diff --git a/firstleg/src/main/java/com/baiyue/firstleg/entity/TruckAppointmentOperationEntity.java b/firstleg/src/main/java/com/baiyue/firstleg/entity/TruckAppointmentOperationEntity.java new file mode 100644 index 000000000..86e321e96 --- /dev/null +++ b/firstleg/src/main/java/com/baiyue/firstleg/entity/TruckAppointmentOperationEntity.java @@ -0,0 +1,5 @@ +package com.baiyue.firstleg.entity; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Getter; import lombok.Setter; import java.time.LocalDateTime; +@Getter @Setter @TableName("fl_truck_appointment_operation") public class TruckAppointmentOperationEntity { + @TableId(type=IdType.ASSIGN_ID) private Long id; private Long appointmentId; private String idempotencyKey; private String requestHash; private String action; private String responseSnapshot; private LocalDateTime createdAt; +} diff --git a/firstleg/src/main/java/com/baiyue/firstleg/mapper/TruckAppointmentAttachmentMapper.java b/firstleg/src/main/java/com/baiyue/firstleg/mapper/TruckAppointmentAttachmentMapper.java new file mode 100644 index 000000000..5c28a4dc8 --- /dev/null +++ b/firstleg/src/main/java/com/baiyue/firstleg/mapper/TruckAppointmentAttachmentMapper.java @@ -0,0 +1 @@ +package com.baiyue.firstleg.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baiyue.firstleg.entity.TruckAppointmentAttachmentEntity; import org.apache.ibatis.annotations.Mapper; @Mapper public interface TruckAppointmentAttachmentMapper extends BaseMapper{} diff --git a/firstleg/src/main/java/com/baiyue/firstleg/mapper/TruckAppointmentHistoryMapper.java b/firstleg/src/main/java/com/baiyue/firstleg/mapper/TruckAppointmentHistoryMapper.java new file mode 100644 index 000000000..b8b4285be --- /dev/null +++ b/firstleg/src/main/java/com/baiyue/firstleg/mapper/TruckAppointmentHistoryMapper.java @@ -0,0 +1 @@ +package com.baiyue.firstleg.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baiyue.firstleg.entity.TruckAppointmentHistoryEntity; import org.apache.ibatis.annotations.Mapper; @Mapper public interface TruckAppointmentHistoryMapper extends BaseMapper{} diff --git a/firstleg/src/main/java/com/baiyue/firstleg/mapper/TruckAppointmentMapper.java b/firstleg/src/main/java/com/baiyue/firstleg/mapper/TruckAppointmentMapper.java new file mode 100644 index 000000000..275c3f83b --- /dev/null +++ b/firstleg/src/main/java/com/baiyue/firstleg/mapper/TruckAppointmentMapper.java @@ -0,0 +1,8 @@ +package com.baiyue.firstleg.mapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baiyue.firstleg.dto.TruckAppointmentDtos.Query; import com.baiyue.firstleg.entity.TruckAppointmentEntity; import org.apache.ibatis.annotations.*; +@Mapper public interface TruckAppointmentMapper extends BaseMapper{ + @Select("") Page page(Page p,@Param("q") Query q); + @Update("UPDATE fl_truck_appointment SET status=#{toStatus}, revision=revision+1, version=version+1, updated_at=CURRENT_TIMESTAMP(3) WHERE id=#{id} AND status=#{fromStatus} AND version=#{version}") int transition(@Param("id") long id,@Param("fromStatus") String from,@Param("toStatus") String to,@Param("version") int version); + @Update("UPDATE fl_truck_appointment SET planned_loading_at=#{at}, revision=revision+1, version=version+1, status='RESCHEDULED', remark=#{reason}, updated_at=CURRENT_TIMESTAMP(3) WHERE id=#{id} AND version=#{version}") int reschedule(@Param("id") long id,@Param("at") java.time.LocalDateTime at,@Param("reason") String reason,@Param("version") int version); + @Update("UPDATE fl_truck_appointment SET vehicle_no=#{e.vehicleNo},driver_name=#{e.driverName},driver_phone=#{e.driverPhone},payable_amount=#{e.payableAmount},receivable_amount=#{e.receivableAmount},planned_loading_at=#{e.plannedLoadingAt},remark=#{e.remark},version=version+1,revision=revision+1,updated_at=CURRENT_TIMESTAMP(3) WHERE id=#{e.id} AND version=#{version}") int updateEdit(@Param("e") TruckAppointmentEntity e,@Param("version") int version); +} diff --git a/firstleg/src/main/java/com/baiyue/firstleg/mapper/TruckAppointmentOperationMapper.java b/firstleg/src/main/java/com/baiyue/firstleg/mapper/TruckAppointmentOperationMapper.java new file mode 100644 index 000000000..3c5365353 --- /dev/null +++ b/firstleg/src/main/java/com/baiyue/firstleg/mapper/TruckAppointmentOperationMapper.java @@ -0,0 +1 @@ +package com.baiyue.firstleg.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baiyue.firstleg.entity.TruckAppointmentOperationEntity; import org.apache.ibatis.annotations.Mapper; @Mapper public interface TruckAppointmentOperationMapper extends BaseMapper{} diff --git a/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/controller/PlatformOceanBookingController.java b/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/controller/PlatformOceanBookingController.java new file mode 100644 index 000000000..415f13201 --- /dev/null +++ b/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/controller/PlatformOceanBookingController.java @@ -0,0 +1,65 @@ +package com.baiyue.firstleg.oceanbooking.controller; + +import com.baiyue.common.audit.BusinessAudit; +import com.baiyue.common.core.api.ApiResponse; +import com.baiyue.common.core.api.PageResult; +import com.baiyue.common.security.AuthenticatedUser; +import com.baiyue.firstleg.oceanbooking.dto.OceanBookingDtos.*; +import com.baiyue.firstleg.oceanbooking.entity.OceanBookingEntity; +import com.baiyue.firstleg.oceanbooking.service.OceanBookingService; +import com.baiyue.firstleg.service.FirstlegScopeGuard; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.validation.Valid; +import jakarta.validation.constraints.Positive; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.security.core.annotation.AuthenticationPrincipal; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +@Validated +@RestController +@Tag(name = "海运订舱") +@RequestMapping("/api/platform/v1/ocean-bookings") +public class PlatformOceanBookingController { + @Resource private OceanBookingService service; + + @GetMapping @PreAuthorize("hasAuthority('platform:firstleg:ocean-booking:list')") + public ApiResponse> page(@AuthenticationPrincipal AuthenticatedUser user, @Valid Query query) { FirstlegScopeGuard.platform(user); return ApiResponse.success(service.page(query)); } + @GetMapping("/{oceanBookingId}") @PreAuthorize("hasAuthority('platform:firstleg:ocean-booking:view')") + public ApiResponse detail(@AuthenticationPrincipal AuthenticatedUser user, @PathVariable @Positive long oceanBookingId) { FirstlegScopeGuard.platform(user); return ApiResponse.success(service.detail(oceanBookingId)); } + + @PostMapping @PreAuthorize("hasAuthority('platform:firstleg:ocean-booking:create')") + @BusinessAudit(event="OCEAN_BOOKING_CREATE", resourceType="OCEAN_BOOKING", description="创建海运订舱单", captureBefore=false) + public ApiResponse create(@AuthenticationPrincipal AuthenticatedUser user, @RequestHeader("Idempotency-Key") String key, @Valid @RequestBody CreateRequest request) { FirstlegScopeGuard.platform(user, request.data().customerId()); return ApiResponse.success(service.create(user.userId(), user.username(), key, request)); } + @PutMapping("/{oceanBookingId}") @PreAuthorize("hasAuthority('platform:firstleg:ocean-booking:edit')") + @BusinessAudit(event="OCEAN_BOOKING_UPDATE", resourceType="OCEAN_BOOKING", resourceId="#oceanBookingId", description="编辑海运订舱草稿") + public ApiResponse updateDraft(@AuthenticationPrincipal AuthenticatedUser user, @PathVariable @Positive long oceanBookingId, @RequestHeader("Idempotency-Key") String key, @Valid @RequestBody UpdateDraftRequest request) { FirstlegScopeGuard.platform(user, request.data().customerId()); return ApiResponse.success(service.updateDraft(oceanBookingId, user.userId(), user.username(), key, request)); } + @PostMapping("/{oceanBookingId}/submit") @PreAuthorize("hasAuthority('platform:firstleg:ocean-booking:submit')") + @BusinessAudit(event="OCEAN_BOOKING_SUBMIT", resourceType="OCEAN_BOOKING", resourceId="#oceanBookingId", description="提交海运订舱") + public ApiResponse submit(@AuthenticationPrincipal AuthenticatedUser user, @PathVariable @Positive long oceanBookingId, @RequestHeader("Idempotency-Key") String key, @Valid @RequestBody ActionRequest request) { FirstlegScopeGuard.platform(user); return ApiResponse.success(service.submit(oceanBookingId, user.userId(), user.username(), key, request)); } + @PostMapping("/{oceanBookingId}/confirm") @PreAuthorize("hasAuthority('platform:firstleg:ocean-booking:confirm')") + @BusinessAudit(event="OCEAN_BOOKING_CONFIRM", resourceType="OCEAN_BOOKING", resourceId="#oceanBookingId", description="确认海运订舱") + public ApiResponse confirm(@AuthenticationPrincipal AuthenticatedUser user, @PathVariable @Positive long oceanBookingId, @RequestHeader("Idempotency-Key") String key, @Valid @RequestBody ActionRequest request) { FirstlegScopeGuard.platform(user); return ApiResponse.success(service.confirm(oceanBookingId, user.userId(), user.username(), key, request)); } + @PostMapping("/{oceanBookingId}/release") @PreAuthorize("hasAuthority('platform:firstleg:ocean-booking:release')") + @BusinessAudit(event="OCEAN_BOOKING_RELEASE", resourceType="OCEAN_BOOKING", resourceId="#oceanBookingId", description="确认放舱") + public ApiResponse release(@AuthenticationPrincipal AuthenticatedUser user, @PathVariable @Positive long oceanBookingId, @RequestHeader("Idempotency-Key") String key, @Valid @RequestBody ActionRequest request) { FirstlegScopeGuard.platform(user); return ApiResponse.success(service.release(oceanBookingId, user.userId(), user.username(), key, request)); } + @PostMapping("/{oceanBookingId}/fail") @PreAuthorize("hasAuthority('platform:firstleg:ocean-booking:confirm')") + @BusinessAudit(event="OCEAN_BOOKING_FAIL", resourceType="OCEAN_BOOKING", resourceId="#oceanBookingId", description="标记海运订舱失败") + public ApiResponse fail(@AuthenticationPrincipal AuthenticatedUser user, @PathVariable @Positive long oceanBookingId, @RequestHeader("Idempotency-Key") String key, @Valid @RequestBody ActionRequest request) { FirstlegScopeGuard.platform(user); return ApiResponse.success(service.fail(oceanBookingId, user.userId(), user.username(), key, request)); } + @PostMapping("/{oceanBookingId}/cancel") @PreAuthorize("hasAuthority('platform:firstleg:ocean-booking:cancel')") + @BusinessAudit(event="OCEAN_BOOKING_CANCEL", resourceType="OCEAN_BOOKING", resourceId="#oceanBookingId", description="取消海运订舱") + public ApiResponse cancel(@AuthenticationPrincipal AuthenticatedUser user, @PathVariable @Positive long oceanBookingId, @RequestHeader("Idempotency-Key") String key, @Valid @RequestBody ActionRequest request) { FirstlegScopeGuard.platform(user); return ApiResponse.success(service.cancel(oceanBookingId, user.userId(), user.username(), key, request)); } + @PostMapping("/{oceanBookingId}/change-request") @PreAuthorize("hasAuthority('platform:firstleg:ocean-booking:change')") + @BusinessAudit(event="OCEAN_BOOKING_CHANGE_REQUEST", resourceType="OCEAN_BOOKING", resourceId="#oceanBookingId", description="申请变更船期") + public ApiResponse requestChange(@AuthenticationPrincipal AuthenticatedUser user, @PathVariable @Positive long oceanBookingId, @RequestHeader("Idempotency-Key") String key, @Valid @RequestBody ChangeRequest request) { FirstlegScopeGuard.platform(user); return ApiResponse.success(service.requestChange(oceanBookingId, user.userId(), user.username(), key, request)); } + @PostMapping("/{oceanBookingId}/change-confirm") @PreAuthorize("hasAuthority('platform:firstleg:ocean-booking:change')") + @BusinessAudit(event="OCEAN_BOOKING_CHANGE_CONFIRM", resourceType="OCEAN_BOOKING", resourceId="#oceanBookingId", description="确认变更船期") + public ApiResponse confirmChange(@AuthenticationPrincipal AuthenticatedUser user, @PathVariable @Positive long oceanBookingId, @RequestHeader("Idempotency-Key") String key, @Valid @RequestBody ActionRequest request) { FirstlegScopeGuard.platform(user); return ApiResponse.success(service.confirmChange(oceanBookingId, user.userId(), user.username(), key, request)); } + @PostMapping("/{oceanBookingId}/change-fail") @PreAuthorize("hasAuthority('platform:firstleg:ocean-booking:change')") + @BusinessAudit(event="OCEAN_BOOKING_CHANGE_FAIL", resourceType="OCEAN_BOOKING", resourceId="#oceanBookingId", description="标记变更船期失败") + public ApiResponse failChange(@AuthenticationPrincipal AuthenticatedUser user, @PathVariable @Positive long oceanBookingId, @RequestHeader("Idempotency-Key") String key, @Valid @RequestBody ActionRequest request) { FirstlegScopeGuard.platform(user); return ApiResponse.success(service.failChange(oceanBookingId, user.userId(), user.username(), key, request)); } + @PostMapping("/{oceanBookingId}/allocations") @PreAuthorize("hasAuthority('platform:firstleg:ocean-booking:allocate')") + @BusinessAudit(event="OCEAN_BOOKING_ALLOCATE_CONTAINER", resourceType="OCEAN_BOOKING", resourceId="#oceanBookingId", description="分配订舱柜次") + public ApiResponse allocate(@AuthenticationPrincipal AuthenticatedUser user, @PathVariable @Positive long oceanBookingId, @RequestHeader("Idempotency-Key") String key, @Valid @RequestBody AllocationRequest request) { FirstlegScopeGuard.platform(user); return ApiResponse.success(service.allocate(oceanBookingId, user.userId(), user.username(), key, request)); } +} diff --git a/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/domain/OceanBookingStatus.java b/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/domain/OceanBookingStatus.java new file mode 100644 index 000000000..8ad0e7374 --- /dev/null +++ b/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/domain/OceanBookingStatus.java @@ -0,0 +1,11 @@ +package com.baiyue.firstleg.oceanbooking.domain; + +public enum OceanBookingStatus { + DRAFT, + SUBMITTED, + CONFIRMED, + RELEASED, + FAILED, + CHANGE_PENDING, + CANCELLED +} diff --git a/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/dto/OceanBookingDtos.java b/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/dto/OceanBookingDtos.java new file mode 100644 index 000000000..09c21c8bf --- /dev/null +++ b/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/dto/OceanBookingDtos.java @@ -0,0 +1,81 @@ +package com.baiyue.firstleg.oceanbooking.dto; + +import com.baiyue.firstleg.oceanbooking.entity.OceanBookingContainerAllocationEntity; +import com.baiyue.firstleg.oceanbooking.entity.OceanBookingContainerRequirementEntity; +import com.baiyue.firstleg.oceanbooking.entity.OceanBookingEntity; +import com.baiyue.firstleg.oceanbooking.entity.OceanBookingPartyEntity; +import com.baiyue.firstleg.oceanbooking.entity.OceanBookingStatusHistoryEntity; +import jakarta.validation.Valid; +import jakarta.validation.constraints.Max; +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Positive; +import jakarta.validation.constraints.Size; + +import java.time.LocalDateTime; +import java.util.List; + +public final class OceanBookingDtos { + private OceanBookingDtos() {} + + public record Query(@Positive Long customerId, @Size(max = 24) String status, + @Size(max = 128) String keyword, @Min(1) long page, + @Min(1) @Max(200) long size) { + public Query { if (page == 0) page = 1; if (size == 0) size = 20; } + } + + public record PartyRequest(@NotBlank @Size(max = 24) String partyType, + @NotBlank @Size(max = 255) String partyName, + @Size(max = 1000) String address, + @Size(max = 128) String contactName, + @Size(max = 64) String contactPhone) {} + + public record ContainerRequirementRequest(@NotBlank @Size(max = 32) String containerType, + @NotBlank @Size(max = 32) String containerKind, + @NotNull @Positive Integer quantity) {} + + public record DraftData(@NotNull @Positive Long customerId, + @NotBlank @Size(max = 128) String customerName, + @Size(max = 128) String billOfLadingNo, + @Positive Long shippingCompanyId, + @Size(max = 128) String shippingCompanyName, + @Positive Long bookingAgentId, + @Size(max = 128) String bookingAgentName, + @Size(max = 128) String vesselName, + @Size(max = 64) String voyageNo, + @Size(max = 32) String departurePortCode, + @Size(max = 128) String departurePortName, + @Size(max = 32) String destinationPortCode, + @Size(max = 128) String destinationPortName, + @Size(max = 128) String placeOfDelivery, + @Size(max = 32) String serviceTerm, + @Size(max = 32) String freightTerm, + LocalDateTime estimatedSailingAt, + LocalDateTime estimatedArrivalAt, + @Size(max = 1000) String remark, + @Valid @NotEmpty @Size(max = 3) List parties, + @Valid @NotEmpty @Size(max = 20) List containerRequirements) {} + + public record CreateRequest(@NotNull @Min(0) Integer expectedVersion, + @Valid @NotNull DraftData data) {} + public record UpdateDraftRequest(@NotNull @Min(0) Integer expectedVersion, + @Valid @NotNull DraftData data) {} + public record ActionRequest(@NotNull @Min(0) Integer expectedVersion, + @Size(max = 1000) String reason) {} + public record ChangeRequest(@NotNull @Min(0) Integer expectedVersion, + @NotBlank @Size(max = 128) String vesselName, + @NotBlank @Size(max = 64) String voyageNo, + LocalDateTime estimatedSailingAt, + LocalDateTime estimatedArrivalAt, + @NotBlank @Size(max = 1000) String reason) {} + public record AllocationRequest(@NotNull @Positive Long requirementId, + @NotNull @Positive Long containerBookingId, + @NotNull @Min(0) Integer expectedVersion) {} + public record Detail(OceanBookingEntity oceanBooking, + List parties, + List containerRequirements, + List containerAllocations, + List histories) {} +} diff --git a/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/entity/OceanBookingContainerAllocationEntity.java b/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/entity/OceanBookingContainerAllocationEntity.java new file mode 100644 index 000000000..9d950ad22 --- /dev/null +++ b/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/entity/OceanBookingContainerAllocationEntity.java @@ -0,0 +1,24 @@ +package com.baiyue.firstleg.oceanbooking.entity; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Getter; +import lombok.Setter; + +import java.time.LocalDateTime; + +@Getter +@Setter +@TableName("fl_ocean_booking_container_allocation") +public class OceanBookingContainerAllocationEntity { + @TableId(type = IdType.ASSIGN_ID) private Long id; + private Long oceanBookingId; + private Long requirementId; + private Long containerBookingId; + private Long allocatedBy; + private String allocatedByName; + @TableField(fill = FieldFill.INSERT) private LocalDateTime allocatedAt; +} diff --git a/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/entity/OceanBookingContainerRequirementEntity.java b/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/entity/OceanBookingContainerRequirementEntity.java new file mode 100644 index 000000000..085a6c851 --- /dev/null +++ b/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/entity/OceanBookingContainerRequirementEntity.java @@ -0,0 +1,19 @@ +package com.baiyue.firstleg.oceanbooking.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@TableName("fl_ocean_booking_container_requirement") +public class OceanBookingContainerRequirementEntity { + @TableId(type = IdType.ASSIGN_ID) private Long id; + private Long oceanBookingId; + private String containerType; + private String containerKind; + private Integer quantity; + private Integer sortNo; +} diff --git a/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/entity/OceanBookingEntity.java b/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/entity/OceanBookingEntity.java new file mode 100644 index 000000000..f4e4ebcf2 --- /dev/null +++ b/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/entity/OceanBookingEntity.java @@ -0,0 +1,54 @@ +package com.baiyue.firstleg.oceanbooking.entity; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.Version; +import lombok.Getter; +import lombok.Setter; + +import java.time.LocalDateTime; + +@Getter +@Setter +@TableName("fl_ocean_booking") +public class OceanBookingEntity { + @TableId(type = IdType.ASSIGN_ID) private Long id; + private String bookingNo; + private String status; + private Long customerId; + private String customerName; + private String billOfLadingNo; + private Long shippingCompanyId; + private String shippingCompanyName; + private Long bookingAgentId; + private String bookingAgentName; + private String vesselName; + private String voyageNo; + private String departurePortCode; + private String departurePortName; + private String destinationPortCode; + private String destinationPortName; + private String placeOfDelivery; + private String serviceTerm; + private String freightTerm; + private LocalDateTime estimatedSailingAt; + private LocalDateTime estimatedArrivalAt; + private String pendingVesselName; + private String pendingVoyageNo; + private LocalDateTime pendingEstimatedSailingAt; + private LocalDateTime pendingEstimatedArrivalAt; + private String changeReason; + private String failureReason; + private String cancellationReason; + private String remark; + private Long createdBy; + private String createdByName; + @TableField(fill = FieldFill.INSERT) private LocalDateTime createdAt; + private Long updatedBy; + private String updatedByName; + @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updatedAt; + @Version @TableField(fill = FieldFill.INSERT) private Integer version; +} diff --git a/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/entity/OceanBookingOperationEntity.java b/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/entity/OceanBookingOperationEntity.java new file mode 100644 index 000000000..f1b06f0f3 --- /dev/null +++ b/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/entity/OceanBookingOperationEntity.java @@ -0,0 +1,27 @@ +package com.baiyue.firstleg.oceanbooking.entity; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Getter; +import lombok.Setter; + +import java.time.LocalDateTime; + +@Getter +@Setter +@TableName("fl_ocean_booking_operation") +public class OceanBookingOperationEntity { + @TableId(type = IdType.ASSIGN_ID) private Long id; + private Long oceanBookingId; + private Long operatorId; + private String operation; + private String idempotencyKey; + private String requestHash; + private String status; + private String resultJson; + @TableField(fill = FieldFill.INSERT) private LocalDateTime createdAt; + private LocalDateTime completedAt; +} diff --git a/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/entity/OceanBookingPartyEntity.java b/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/entity/OceanBookingPartyEntity.java new file mode 100644 index 000000000..f51e1f66f --- /dev/null +++ b/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/entity/OceanBookingPartyEntity.java @@ -0,0 +1,20 @@ +package com.baiyue.firstleg.oceanbooking.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@TableName("fl_ocean_booking_party") +public class OceanBookingPartyEntity { + @TableId(type = IdType.ASSIGN_ID) private Long id; + private Long oceanBookingId; + private String partyType; + private String partyName; + private String address; + private String contactName; + private String contactPhone; +} diff --git a/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/entity/OceanBookingStatusHistoryEntity.java b/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/entity/OceanBookingStatusHistoryEntity.java new file mode 100644 index 000000000..8dfbbeb0f --- /dev/null +++ b/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/entity/OceanBookingStatusHistoryEntity.java @@ -0,0 +1,28 @@ +package com.baiyue.firstleg.oceanbooking.entity; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Getter; +import lombok.Setter; + +import java.time.LocalDateTime; + +@Getter +@Setter +@TableName("fl_ocean_booking_status_history") +public class OceanBookingStatusHistoryEntity { + @TableId(type = IdType.ASSIGN_ID) private Long id; + private Long oceanBookingId; + private String fromStatus; + private String toStatus; + private String action; + private String reason; + private String beforeSnapshot; + private String afterSnapshot; + private Long operatorId; + private String operatorName; + @TableField(fill = FieldFill.INSERT) private LocalDateTime createdAt; +} diff --git a/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/mapper/OceanBookingContainerAllocationMapper.java b/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/mapper/OceanBookingContainerAllocationMapper.java new file mode 100644 index 000000000..ae6b28f6b --- /dev/null +++ b/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/mapper/OceanBookingContainerAllocationMapper.java @@ -0,0 +1,5 @@ +package com.baiyue.firstleg.oceanbooking.mapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baiyue.firstleg.oceanbooking.entity.OceanBookingContainerAllocationEntity; +import org.apache.ibatis.annotations.Mapper; +@Mapper public interface OceanBookingContainerAllocationMapper extends BaseMapper {} diff --git a/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/mapper/OceanBookingContainerRequirementMapper.java b/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/mapper/OceanBookingContainerRequirementMapper.java new file mode 100644 index 000000000..eab8e416d --- /dev/null +++ b/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/mapper/OceanBookingContainerRequirementMapper.java @@ -0,0 +1,5 @@ +package com.baiyue.firstleg.oceanbooking.mapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baiyue.firstleg.oceanbooking.entity.OceanBookingContainerRequirementEntity; +import org.apache.ibatis.annotations.Mapper; +@Mapper public interface OceanBookingContainerRequirementMapper extends BaseMapper {} diff --git a/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/mapper/OceanBookingMapper.java b/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/mapper/OceanBookingMapper.java new file mode 100644 index 000000000..7d73386eb --- /dev/null +++ b/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/mapper/OceanBookingMapper.java @@ -0,0 +1,92 @@ +package com.baiyue.firstleg.oceanbooking.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baiyue.firstleg.oceanbooking.dto.OceanBookingDtos.Query; +import com.baiyue.firstleg.oceanbooking.entity.OceanBookingEntity; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; + +import java.time.LocalDateTime; + +@Mapper +public interface OceanBookingMapper extends BaseMapper { + @Select(""" + + """) + Page selectPage(Page page, @Param("query") Query query); + + @Update(""" + UPDATE fl_ocean_booking SET customer_id=#{value.customerId},customer_name=#{value.customerName}, + bill_of_lading_no=#{value.billOfLadingNo},shipping_company_id=#{value.shippingCompanyId}, + shipping_company_name=#{value.shippingCompanyName},booking_agent_id=#{value.bookingAgentId}, + booking_agent_name=#{value.bookingAgentName},vessel_name=#{value.vesselName},voyage_no=#{value.voyageNo}, + departure_port_code=#{value.departurePortCode},departure_port_name=#{value.departurePortName}, + destination_port_code=#{value.destinationPortCode},destination_port_name=#{value.destinationPortName}, + place_of_delivery=#{value.placeOfDelivery},service_term=#{value.serviceTerm},freight_term=#{value.freightTerm}, + estimated_sailing_at=#{value.estimatedSailingAt},estimated_arrival_at=#{value.estimatedArrivalAt}, + remark=#{value.remark},updated_by=#{operatorId},updated_by_name=#{operatorName}, + updated_at=CURRENT_TIMESTAMP(3),version=version+1 + WHERE id=#{value.id} AND status='DRAFT' AND version=#{expectedVersion} + """) + int updateDraft(@Param("value") OceanBookingEntity value, @Param("expectedVersion") int expectedVersion, + @Param("operatorId") long operatorId, @Param("operatorName") String operatorName); + + @Update(""" + UPDATE fl_ocean_booking SET status=#{toStatus},failure_reason=#{failureReason}, + cancellation_reason=#{cancellationReason},updated_by=#{operatorId},updated_by_name=#{operatorName}, + updated_at=CURRENT_TIMESTAMP(3),version=version+1 + WHERE id=#{oceanBookingId} AND status=#{fromStatus} AND version=#{expectedVersion} + """) + int transition(@Param("oceanBookingId") long oceanBookingId, @Param("fromStatus") String fromStatus, + @Param("toStatus") String toStatus, @Param("failureReason") String failureReason, + @Param("cancellationReason") String cancellationReason, + @Param("expectedVersion") int expectedVersion, @Param("operatorId") long operatorId, + @Param("operatorName") String operatorName); + + @Update(""" + UPDATE fl_ocean_booking SET status='CHANGE_PENDING',pending_vessel_name=#{vesselName}, + pending_voyage_no=#{voyageNo},pending_estimated_sailing_at=#{estimatedSailingAt}, + pending_estimated_arrival_at=#{estimatedArrivalAt},change_reason=#{reason}, + updated_by=#{operatorId},updated_by_name=#{operatorName},updated_at=CURRENT_TIMESTAMP(3),version=version+1 + WHERE id=#{oceanBookingId} AND status='CONFIRMED' AND version=#{expectedVersion} + """) + int requestChange(@Param("oceanBookingId") long oceanBookingId, @Param("vesselName") String vesselName, + @Param("voyageNo") String voyageNo, @Param("estimatedSailingAt") LocalDateTime estimatedSailingAt, + @Param("estimatedArrivalAt") LocalDateTime estimatedArrivalAt, @Param("reason") String reason, + @Param("expectedVersion") int expectedVersion, @Param("operatorId") long operatorId, + @Param("operatorName") String operatorName); + + @Update(""" + UPDATE fl_ocean_booking SET status='CONFIRMED',vessel_name=pending_vessel_name,voyage_no=pending_voyage_no, + estimated_sailing_at=pending_estimated_sailing_at,estimated_arrival_at=pending_estimated_arrival_at, + pending_vessel_name=NULL,pending_voyage_no=NULL,pending_estimated_sailing_at=NULL, + pending_estimated_arrival_at=NULL,updated_by=#{operatorId},updated_by_name=#{operatorName}, + updated_at=CURRENT_TIMESTAMP(3),version=version+1 + WHERE id=#{oceanBookingId} AND status='CHANGE_PENDING' AND version=#{expectedVersion} + """) + int confirmChange(@Param("oceanBookingId") long oceanBookingId, @Param("expectedVersion") int expectedVersion, + @Param("operatorId") long operatorId, @Param("operatorName") String operatorName); + + @Update(""" + UPDATE fl_ocean_booking SET version=version+1,updated_by=#{operatorId},updated_by_name=#{operatorName}, + updated_at=CURRENT_TIMESTAMP(3) + WHERE id=#{oceanBookingId} AND version=#{expectedVersion} + AND status IN ('SUBMITTED','CONFIRMED','CHANGE_PENDING') + """) + int touchForAllocation(@Param("oceanBookingId") long oceanBookingId, + @Param("expectedVersion") int expectedVersion, + @Param("operatorId") long operatorId, @Param("operatorName") String operatorName); +} diff --git a/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/mapper/OceanBookingOperationMapper.java b/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/mapper/OceanBookingOperationMapper.java new file mode 100644 index 000000000..dfa936258 --- /dev/null +++ b/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/mapper/OceanBookingOperationMapper.java @@ -0,0 +1,25 @@ +package com.baiyue.firstleg.oceanbooking.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baiyue.firstleg.oceanbooking.entity.OceanBookingOperationEntity; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Update; + +@Mapper +public interface OceanBookingOperationMapper extends BaseMapper { + @Insert("INSERT IGNORE INTO fl_ocean_booking_operation " + + "(id,ocean_booking_id,operator_id,operation,idempotency_key,request_hash,status,created_at) " + + "VALUES(#{id},#{oceanBookingId},#{operatorId},#{operation},#{key},#{hash},'PROCESSING',CURRENT_TIMESTAMP(3))") + int claim(@Param("id") long id, @Param("oceanBookingId") Long oceanBookingId, + @Param("operatorId") long operatorId, @Param("operation") String operation, + @Param("key") String key, @Param("hash") String hash); + + @Update("UPDATE fl_ocean_booking_operation SET ocean_booking_id=#{oceanBookingId},status='SUCCESS'," + + "result_json=#{resultJson},completed_at=CURRENT_TIMESTAMP(3) WHERE operator_id=#{operatorId} " + + "AND operation=#{operation} AND idempotency_key=#{key} AND status='PROCESSING'") + int complete(@Param("oceanBookingId") long oceanBookingId, @Param("operatorId") long operatorId, + @Param("operation") String operation, @Param("key") String key, + @Param("resultJson") String resultJson); +} diff --git a/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/mapper/OceanBookingPartyMapper.java b/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/mapper/OceanBookingPartyMapper.java new file mode 100644 index 000000000..5cf2c2cc4 --- /dev/null +++ b/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/mapper/OceanBookingPartyMapper.java @@ -0,0 +1,5 @@ +package com.baiyue.firstleg.oceanbooking.mapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baiyue.firstleg.oceanbooking.entity.OceanBookingPartyEntity; +import org.apache.ibatis.annotations.Mapper; +@Mapper public interface OceanBookingPartyMapper extends BaseMapper {} diff --git a/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/mapper/OceanBookingStatusHistoryMapper.java b/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/mapper/OceanBookingStatusHistoryMapper.java new file mode 100644 index 000000000..b261fe008 --- /dev/null +++ b/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/mapper/OceanBookingStatusHistoryMapper.java @@ -0,0 +1,5 @@ +package com.baiyue.firstleg.oceanbooking.mapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baiyue.firstleg.oceanbooking.entity.OceanBookingStatusHistoryEntity; +import org.apache.ibatis.annotations.Mapper; +@Mapper public interface OceanBookingStatusHistoryMapper extends BaseMapper {} diff --git a/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/repository/OceanBookingRepository.java b/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/repository/OceanBookingRepository.java new file mode 100644 index 000000000..69ab28d08 --- /dev/null +++ b/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/repository/OceanBookingRepository.java @@ -0,0 +1,63 @@ +package com.baiyue.firstleg.oceanbooking.repository; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baiyue.common.core.api.PageResult; +import com.baiyue.firstleg.entity.ContainerBookingEntity; +import com.baiyue.firstleg.mapper.ContainerBookingMapper; +import com.baiyue.firstleg.oceanbooking.dto.OceanBookingDtos.Query; +import com.baiyue.firstleg.oceanbooking.entity.*; +import com.baiyue.firstleg.oceanbooking.mapper.*; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public class OceanBookingRepository { + @Resource private OceanBookingMapper bookings; + @Resource private OceanBookingPartyMapper parties; + @Resource private OceanBookingContainerRequirementMapper requirements; + @Resource private OceanBookingContainerAllocationMapper allocations; + @Resource private OceanBookingStatusHistoryMapper histories; + @Resource private OceanBookingOperationMapper operations; + @Resource private ContainerBookingMapper containerBookings; + + public PageResult page(Query query) { + return PageResult.from(bookings.selectPage(new Page<>(query.page(), query.size()), query)); + } + public OceanBookingEntity find(long id) { return bookings.selectById(id); } + public void insert(OceanBookingEntity value) { bookings.insert(value); } + public int updateDraft(OceanBookingEntity value, int version, long operatorId, String operatorName) { + return bookings.updateDraft(value, version, operatorId, operatorName); + } + public int transition(long id, String from, String to, String failureReason, String cancellationReason, + int version, long operatorId, String operatorName) { + return bookings.transition(id, from, to, failureReason, cancellationReason, version, operatorId, operatorName); + } + public int requestChange(long id, OceanBookingEntity pending, String reason, int version, + long operatorId, String operatorName) { + return bookings.requestChange(id, pending.getPendingVesselName(), pending.getPendingVoyageNo(), + pending.getPendingEstimatedSailingAt(), pending.getPendingEstimatedArrivalAt(), reason, + version, operatorId, operatorName); + } + public int confirmChange(long id, int version, long operatorId, String operatorName) { + return bookings.confirmChange(id, version, operatorId, operatorName); + } + public int touchForAllocation(long id, int version, long operatorId, String operatorName) { + return bookings.touchForAllocation(id, version, operatorId, operatorName); + } + public List parties(long id) { return parties.selectList(new LambdaQueryWrapper().eq(OceanBookingPartyEntity::getOceanBookingId, id).orderByAsc(OceanBookingPartyEntity::getId)); } + public List requirements(long id) { return requirements.selectList(new LambdaQueryWrapper().eq(OceanBookingContainerRequirementEntity::getOceanBookingId, id).orderByAsc(OceanBookingContainerRequirementEntity::getSortNo)); } + public List allocations(long id) { return allocations.selectList(new LambdaQueryWrapper().eq(OceanBookingContainerAllocationEntity::getOceanBookingId, id).orderByAsc(OceanBookingContainerAllocationEntity::getAllocatedAt)); } + public List histories(long id) { return histories.selectList(new LambdaQueryWrapper().eq(OceanBookingStatusHistoryEntity::getOceanBookingId, id).orderByAsc(OceanBookingStatusHistoryEntity::getCreatedAt)); } + public void replaceParties(long id, List values) { parties.delete(new LambdaQueryWrapper().eq(OceanBookingPartyEntity::getOceanBookingId, id)); values.forEach(parties::insert); } + public void replaceRequirements(long id, List values) { requirements.delete(new LambdaQueryWrapper().eq(OceanBookingContainerRequirementEntity::getOceanBookingId, id)); values.forEach(requirements::insert); } + public OceanBookingContainerRequirementEntity requirement(long id, long requirementId) { return requirements.selectOne(new LambdaQueryWrapper().eq(OceanBookingContainerRequirementEntity::getOceanBookingId, id).eq(OceanBookingContainerRequirementEntity::getId, requirementId)); } + public ContainerBookingEntity containerBooking(long id) { return containerBookings.selectById(id); } + public void insert(OceanBookingContainerAllocationEntity value) { allocations.insert(value); } + public void insert(OceanBookingStatusHistoryEntity value) { histories.insert(value); } + public boolean claimOperation(Long id, long operatorId, String action, String key, String hash) { return operations.claim(com.baomidou.mybatisplus.core.toolkit.IdWorker.getId(), id, operatorId, action, key, hash) == 1; } + public OceanBookingOperationEntity operation(long operatorId, String action, String key) { return operations.selectOne(new LambdaQueryWrapper().eq(OceanBookingOperationEntity::getOperatorId, operatorId).eq(OceanBookingOperationEntity::getOperation, action).eq(OceanBookingOperationEntity::getIdempotencyKey, key)); } + public int completeOperation(long id, long operatorId, String action, String key, String json) { return operations.complete(id, operatorId, action, key, json); } +} diff --git a/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/service/OceanBookingService.java b/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/service/OceanBookingService.java new file mode 100644 index 000000000..5ceaa3718 --- /dev/null +++ b/firstleg/src/main/java/com/baiyue/firstleg/oceanbooking/service/OceanBookingService.java @@ -0,0 +1,272 @@ +package com.baiyue.firstleg.oceanbooking.service; + +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baiyue.common.core.api.PageResult; +import com.baiyue.common.core.api.ResultCode; +import com.baiyue.common.core.exception.BizException; +import com.baiyue.firstleg.entity.ContainerBookingEntity; +import com.baiyue.firstleg.oceanbooking.domain.OceanBookingStatus; +import com.baiyue.firstleg.oceanbooking.dto.OceanBookingDtos.*; +import com.baiyue.firstleg.oceanbooking.entity.*; +import com.baiyue.firstleg.oceanbooking.repository.OceanBookingRepository; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import jakarta.annotation.Resource; +import org.springframework.dao.DuplicateKeyException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.StringUtils; + +import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; +import java.time.LocalDateTime; +import java.util.HashSet; +import java.util.HexFormat; +import java.util.List; +import java.util.Set; + +@Service +public class OceanBookingService { + private static final Set PARTY_TYPES = Set.of("SHIPPER", "CONSIGNEE", "NOTIFY_PARTY"); + @Resource private OceanBookingRepository repository; + @Resource private ObjectMapper objectMapper; + + public PageResult page(Query query) { + String status = trim(query.status()); + if (status != null) parseStatus(status); + return repository.page(new Query(query.customerId(), status, trim(query.keyword()), query.page(), query.size())); + } + + public Detail detail(long oceanBookingId) { return detail(required(oceanBookingId)); } + + @Transactional + public Detail create(long operatorId, String operatorName, String key, CreateRequest request) { + if (request.expectedVersion() != 0) throw concurrent(); + validateDraft(request.data()); + String action = "CREATE"; + String hash = hash(action, null, request); + Detail replay = claimOrReplay(null, operatorId, action, key, hash); + if (replay != null) return replay; + OceanBookingEntity value = new OceanBookingEntity(); + value.setId(IdWorker.getId()); + value.setBookingNo("OB" + value.getId()); + value.setStatus(OceanBookingStatus.DRAFT.name()); + copy(value, request.data()); + value.setCreatedBy(operatorId); value.setCreatedByName(operatorName); + value.setUpdatedBy(operatorId); value.setUpdatedByName(operatorName); value.setVersion(0); + repository.insert(value); + repository.replaceParties(value.getId(), parties(value.getId(), request.data().parties())); + repository.replaceRequirements(value.getId(), requirements(value.getId(), request.data().containerRequirements())); + addHistory(value.getId(), null, OceanBookingStatus.DRAFT.name(), action, null, null, value, operatorId, operatorName); + return complete(value.getId(), operatorId, action, key, detail(value.getId())); + } + + @Transactional + public Detail updateDraft(long oceanBookingId, long operatorId, String operatorName, String key, + UpdateDraftRequest request) { + validateDraft(request.data()); + String action = "UPDATE_DRAFT"; + Detail replay = claimOrReplay(oceanBookingId, operatorId, action, key, hash(action, oceanBookingId, request)); + if (replay != null) return replay; + OceanBookingEntity before = requiredVersion(oceanBookingId, request.expectedVersion()); + requireStatus(before, OceanBookingStatus.DRAFT); + OceanBookingEntity value = new OceanBookingEntity(); value.setId(oceanBookingId); copy(value, request.data()); + if (repository.updateDraft(value, request.expectedVersion(), operatorId, operatorName) != 1) throw concurrent(); + repository.replaceParties(oceanBookingId, parties(oceanBookingId, request.data().parties())); + repository.replaceRequirements(oceanBookingId, requirements(oceanBookingId, request.data().containerRequirements())); + return complete(oceanBookingId, operatorId, action, key, detail(oceanBookingId)); + } + + @Transactional public Detail submit(long id, long operatorId, String name, String key, ActionRequest request) { + return transition(id, operatorId, name, key, "SUBMIT", OceanBookingStatus.DRAFT, + OceanBookingStatus.SUBMITTED, request, false); + } + @Transactional public Detail confirm(long id, long operatorId, String name, String key, ActionRequest request) { + return transition(id, operatorId, name, key, "CONFIRM", OceanBookingStatus.SUBMITTED, + OceanBookingStatus.CONFIRMED, request, false); + } + @Transactional public Detail release(long id, long operatorId, String name, String key, ActionRequest request) { + return transition(id, operatorId, name, key, "RELEASE", OceanBookingStatus.CONFIRMED, + OceanBookingStatus.RELEASED, request, false); + } + + @Transactional + public Detail fail(long id, long operatorId, String name, String key, ActionRequest request) { + if (!StringUtils.hasText(request.reason())) throw badRequest("失败原因不能为空"); + String action = "FAIL"; + Detail replay = claimOrReplay(id, operatorId, action, key, hash(action, id, request)); + if (replay != null) return replay; + OceanBookingEntity before = requiredVersion(id, request.expectedVersion()); + requireStatus(before, OceanBookingStatus.SUBMITTED); + if (repository.transition(id, OceanBookingStatus.SUBMITTED.name(), OceanBookingStatus.FAILED.name(), trim(request.reason()), null, + request.expectedVersion(), operatorId, name) != 1) throw concurrent(); + OceanBookingEntity after = required(id); + addHistory(id, OceanBookingStatus.SUBMITTED.name(), after.getStatus(), action, request.reason(), before, after, operatorId, name); + return complete(id, operatorId, action, key, detail(after)); + } + + @Transactional + public Detail failChange(long id, long operatorId, String name, String key, ActionRequest request) { + if (!StringUtils.hasText(request.reason())) throw badRequest("改船失败原因不能为空"); + return transition(id, operatorId, name, key, "FAIL_CHANGE", OceanBookingStatus.CHANGE_PENDING, + OceanBookingStatus.FAILED, request, true); + } + + @Transactional + public Detail cancel(long id, long operatorId, String name, String key, ActionRequest request) { + if (!StringUtils.hasText(request.reason())) throw badRequest("取消原因不能为空"); + String action = "CANCEL"; + Detail replay = claimOrReplay(id, operatorId, action, key, hash(action, id, request)); + if (replay != null) return replay; + OceanBookingEntity before = requiredVersion(id, request.expectedVersion()); + OceanBookingStatus from = parseStatus(before.getStatus()); + if (from == OceanBookingStatus.RELEASED || from == OceanBookingStatus.CANCELLED) { + throw conflict("订舱已越过不可逆节点或已经取消"); + } + if (repository.transition(id, from.name(), OceanBookingStatus.CANCELLED.name(), null, + trim(request.reason()), request.expectedVersion(), operatorId, name) != 1) throw concurrent(); + OceanBookingEntity after = required(id); + addHistory(id, from.name(), after.getStatus(), action, request.reason(), before, after, operatorId, name); + return complete(id, operatorId, action, key, detail(after)); + } + + @Transactional + public Detail requestChange(long id, long operatorId, String name, String key, ChangeRequest request) { + validateRange(request.estimatedSailingAt(), request.estimatedArrivalAt()); + String action = "REQUEST_CHANGE"; + Detail replay = claimOrReplay(id, operatorId, action, key, hash(action, id, request)); + if (replay != null) return replay; + OceanBookingEntity before = requiredVersion(id, request.expectedVersion()); + requireStatus(before, OceanBookingStatus.CONFIRMED); + OceanBookingEntity pending = new OceanBookingEntity(); + pending.setPendingVesselName(request.vesselName().trim()); + pending.setPendingVoyageNo(request.voyageNo().trim()); + pending.setPendingEstimatedSailingAt(request.estimatedSailingAt()); + pending.setPendingEstimatedArrivalAt(request.estimatedArrivalAt()); + if (repository.requestChange(id, pending, request.reason().trim(), request.expectedVersion(), operatorId, name) != 1) throw concurrent(); + OceanBookingEntity after = required(id); + addHistory(id, before.getStatus(), after.getStatus(), action, request.reason(), before, after, operatorId, name); + return complete(id, operatorId, action, key, detail(after)); + } + + @Transactional + public Detail confirmChange(long id, long operatorId, String name, String key, ActionRequest request) { + String action = "CONFIRM_CHANGE"; + Detail replay = claimOrReplay(id, operatorId, action, key, hash(action, id, request)); + if (replay != null) return replay; + OceanBookingEntity before = requiredVersion(id, request.expectedVersion()); + requireStatus(before, OceanBookingStatus.CHANGE_PENDING); + if (repository.confirmChange(id, request.expectedVersion(), operatorId, name) != 1) throw concurrent(); + OceanBookingEntity after = required(id); + addHistory(id, before.getStatus(), after.getStatus(), action, request.reason(), before, after, operatorId, name); + return complete(id, operatorId, action, key, detail(after)); + } + + @Transactional + public Detail allocate(long id, long operatorId, String name, String key, AllocationRequest request) { + String action = "ALLOCATE_CONTAINER"; + Detail replay = claimOrReplay(id, operatorId, action, key, hash(action, id, request)); + if (replay != null) return replay; + requiredVersion(id, request.expectedVersion()); + OceanBookingContainerRequirementEntity requirement = repository.requirement(id, request.requirementId()); + if (requirement == null) throw new BizException(ResultCode.NOT_FOUND, "箱型需求不存在"); + ContainerBookingEntity container = repository.containerBooking(request.containerBookingId()); + if (container == null) throw new BizException(ResultCode.NOT_FOUND, "柜次不存在"); + if (!requirement.getContainerType().equals(container.getContainerType())) throw conflict("柜次箱型与订舱需求不一致"); + long used = repository.allocations(id).stream().filter(v -> request.requirementId().equals(v.getRequirementId())).count(); + if (used >= requirement.getQuantity()) throw conflict("该箱型需求已分配完毕"); + if (repository.touchForAllocation(id, request.expectedVersion(), operatorId, name) != 1) throw concurrent(); + OceanBookingContainerAllocationEntity allocation = new OceanBookingContainerAllocationEntity(); + allocation.setId(IdWorker.getId()); allocation.setOceanBookingId(id); + allocation.setRequirementId(request.requirementId()); allocation.setContainerBookingId(request.containerBookingId()); + allocation.setAllocatedBy(operatorId); allocation.setAllocatedByName(name); + try { repository.insert(allocation); } catch (DuplicateKeyException ex) { throw conflict("柜次已被其他订舱占用"); } + return complete(id, operatorId, action, key, detail(id)); + } + + private Detail transition(long id, long operatorId, String name, String key, String action, + OceanBookingStatus from, OceanBookingStatus to, ActionRequest request, + boolean failure) { + Detail replay = claimOrReplay(id, operatorId, action, key, hash(action, id, request)); + if (replay != null) return replay; + OceanBookingEntity before = requiredVersion(id, request.expectedVersion()); + requireStatus(before, from); + if (from == OceanBookingStatus.DRAFT && to == OceanBookingStatus.SUBMITTED) validateSubmission(id); + if (repository.transition(id, from.name(), to.name(), failure ? trim(request.reason()) : null, null, + request.expectedVersion(), operatorId, name) != 1) throw concurrent(); + OceanBookingEntity after = required(id); + addHistory(id, from.name(), to.name(), action, request.reason(), before, after, operatorId, name); + return complete(id, operatorId, action, key, detail(after)); + } + + private Detail claimOrReplay(Long id, long operatorId, String action, String key, String hash) { + validateKey(key); + if (repository.claimOperation(id, operatorId, action, key, hash)) return null; + OceanBookingOperationEntity existing = repository.operation(operatorId, action, key); + if (existing == null || !hash.equals(existing.getRequestHash())) throw conflict("幂等键已用于其他请求"); + if (!"SUCCESS".equals(existing.getStatus()) || !StringUtils.hasText(existing.getResultJson())) throw conflict("相同请求正在处理中,请稍后重试"); + try { return objectMapper.readValue(existing.getResultJson(), Detail.class); } + catch (JsonProcessingException ex) { throw new IllegalStateException("无法读取订舱幂等结果", ex); } + } + + private Detail complete(long id, long operatorId, String action, String key, Detail detail) { + try { + if (repository.completeOperation(id, operatorId, action, key, objectMapper.writeValueAsString(detail)) != 1) { + throw conflict("订舱幂等请求完成状态冲突"); + } + return detail; + } catch (JsonProcessingException ex) { throw new IllegalStateException("无法保存订舱幂等结果", ex); } + } + + private void addHistory(long id, String from, String to, String action, String reason, + Object before, Object after, long operatorId, String operatorName) { + OceanBookingStatusHistoryEntity history = new OceanBookingStatusHistoryEntity(); + history.setId(IdWorker.getId()); history.setOceanBookingId(id); history.setFromStatus(from); + history.setToStatus(to); history.setAction(action); history.setReason(trim(reason)); + history.setBeforeSnapshot(json(before)); history.setAfterSnapshot(json(after)); + history.setOperatorId(operatorId); history.setOperatorName(operatorName); repository.insert(history); + } + + private Detail detail(OceanBookingEntity value) { return new Detail(value, repository.parties(value.getId()), repository.requirements(value.getId()), repository.allocations(value.getId()), repository.histories(value.getId())); } + private OceanBookingEntity required(long id) { OceanBookingEntity value = repository.find(id); if (value == null) throw new BizException(ResultCode.NOT_FOUND, "订舱单不存在"); return value; } + private OceanBookingEntity requiredVersion(long id, int version) { OceanBookingEntity value = required(id); if (!Integer.valueOf(version).equals(value.getVersion())) throw concurrent(); return value; } + private static void requireStatus(OceanBookingEntity value, OceanBookingStatus status) { if (!status.name().equals(value.getStatus())) throw conflict("订舱状态不允许当前操作"); } + + private void validateDraft(DraftData data) { + validateRange(data.estimatedSailingAt(), data.estimatedArrivalAt()); + Set types = new HashSet<>(); + for (PartyRequest party : data.parties()) { + String type = party.partyType().trim().toUpperCase(); + if (!PARTY_TYPES.contains(type) || !types.add(type)) throw badRequest("订舱方必须各包含一条SHIPPER、CONSIGNEE和NOTIFY_PARTY"); + } + if (!types.equals(PARTY_TYPES)) throw badRequest("订舱方必须各包含一条SHIPPER、CONSIGNEE和NOTIFY_PARTY"); + } + private void validateSubmission(long id) { + Set types = repository.parties(id).stream().map(OceanBookingPartyEntity::getPartyType) + .collect(java.util.stream.Collectors.toSet()); + if (!types.equals(PARTY_TYPES) || repository.requirements(id).isEmpty()) { + throw conflict("订舱方或箱型需求不完整,不能提交"); + } + } + private static void validateRange(LocalDateTime from, LocalDateTime to) { if (from != null && to != null && to.isBefore(from)) throw badRequest("预计到港时间不能早于预计开船时间"); } + private static void copy(OceanBookingEntity v, DraftData d) { + v.setCustomerId(d.customerId()); v.setCustomerName(d.customerName().trim()); v.setBillOfLadingNo(trim(d.billOfLadingNo())); + v.setShippingCompanyId(d.shippingCompanyId()); v.setShippingCompanyName(trim(d.shippingCompanyName())); + v.setBookingAgentId(d.bookingAgentId()); v.setBookingAgentName(trim(d.bookingAgentName())); + v.setVesselName(trim(d.vesselName())); v.setVoyageNo(trim(d.voyageNo())); + v.setDeparturePortCode(trim(d.departurePortCode())); v.setDeparturePortName(trim(d.departurePortName())); + v.setDestinationPortCode(trim(d.destinationPortCode())); v.setDestinationPortName(trim(d.destinationPortName())); + v.setPlaceOfDelivery(trim(d.placeOfDelivery())); v.setServiceTerm(trim(d.serviceTerm())); v.setFreightTerm(trim(d.freightTerm())); + v.setEstimatedSailingAt(d.estimatedSailingAt()); v.setEstimatedArrivalAt(d.estimatedArrivalAt()); v.setRemark(trim(d.remark())); + } + private static List parties(long id, List requests) { return requests.stream().map(r -> { OceanBookingPartyEntity v = new OceanBookingPartyEntity(); v.setId(IdWorker.getId()); v.setOceanBookingId(id); v.setPartyType(r.partyType().trim().toUpperCase()); v.setPartyName(r.partyName().trim()); v.setAddress(trim(r.address())); v.setContactName(trim(r.contactName())); v.setContactPhone(trim(r.contactPhone())); return v; }).toList(); } + private static List requirements(long id, List requests) { int[] sort = {0}; return requests.stream().map(r -> { OceanBookingContainerRequirementEntity v = new OceanBookingContainerRequirementEntity(); v.setId(IdWorker.getId()); v.setOceanBookingId(id); v.setContainerType(r.containerType().trim().toUpperCase()); v.setContainerKind(r.containerKind().trim().toUpperCase()); v.setQuantity(r.quantity()); v.setSortNo(sort[0]++); return v; }).toList(); } + private String hash(String action, Long id, Object request) { try { return HexFormat.of().formatHex(MessageDigest.getInstance("SHA-256").digest((action + '|' + id + '|' + objectMapper.writeValueAsString(request)).getBytes(StandardCharsets.UTF_8))); } catch (Exception ex) { throw new IllegalStateException("无法计算订舱请求摘要", ex); } } + private String json(Object value) { if (value == null) return null; try { return objectMapper.writeValueAsString(value); } catch (JsonProcessingException ex) { throw new IllegalStateException("无法保存订舱历史快照", ex); } } + private static OceanBookingStatus parseStatus(String status) { try { return OceanBookingStatus.valueOf(status); } catch (RuntimeException ex) { throw badRequest("订舱状态无效"); } } + private static void validateKey(String key) { if (!StringUtils.hasText(key) || key.length() > 128) throw badRequest("Idempotency-Key不能为空且不能超过128个字符"); } + private static String trim(String value) { if (value == null) return null; String result = value.trim(); return result.isEmpty() ? null : result; } + private static BizException badRequest(String message) { return new BizException(ResultCode.BAD_REQUEST, message); } + private static BizException conflict(String message) { return new BizException(ResultCode.CONFLICT, message); } + private static BizException concurrent() { return conflict("数据已被其他人修改,请刷新后重试"); } +} diff --git a/firstleg/src/main/java/com/baiyue/firstleg/repository/TruckAppointmentRepository.java b/firstleg/src/main/java/com/baiyue/firstleg/repository/TruckAppointmentRepository.java new file mode 100644 index 000000000..3b9190697 --- /dev/null +++ b/firstleg/src/main/java/com/baiyue/firstleg/repository/TruckAppointmentRepository.java @@ -0,0 +1,6 @@ +package com.baiyue.firstleg.repository; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baiyue.common.core.api.PageResult; import com.baiyue.firstleg.dto.TruckAppointmentDtos.Query; import com.baiyue.firstleg.entity.*; import com.baiyue.firstleg.mapper.*; import jakarta.annotation.Resource; import org.springframework.stereotype.Repository; +@Repository public class TruckAppointmentRepository { @Resource TruckAppointmentMapper mapper; @Resource TruckAppointmentHistoryMapper history; @Resource TruckAppointmentAttachmentMapper attachments; @Resource TruckAppointmentOperationMapper operations; + public PageResult page(Query q){return PageResult.from(mapper.page(new Page<>(q.page(),q.size()),q));} public TruckAppointmentEntity find(long id){return mapper.selectById(id);} public void insert(TruckAppointmentEntity e){mapper.insert(e);} public int transition(long id,String from,String to,int v){return mapper.transition(id,from,to,v);} public int reschedule(long id,java.time.LocalDateTime at,String reason,int v){return mapper.reschedule(id,at,reason,v);} public void history(TruckAppointmentHistoryEntity e){history.insert(e);} public void operation(TruckAppointmentOperationEntity e){operations.insert(e);} public void attachment(TruckAppointmentAttachmentEntity e){attachments.insert(e);} + public int updateEdit(TruckAppointmentEntity e,int v){return mapper.updateEdit(e,v);} +} diff --git a/firstleg/src/main/java/com/baiyue/firstleg/service/TruckAppointmentService.java b/firstleg/src/main/java/com/baiyue/firstleg/service/TruckAppointmentService.java new file mode 100644 index 000000000..78996c132 --- /dev/null +++ b/firstleg/src/main/java/com/baiyue/firstleg/service/TruckAppointmentService.java @@ -0,0 +1,14 @@ +package com.baiyue.firstleg.service; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baiyue.common.core.api.PageResult; import com.baiyue.common.core.api.ResultCode; import com.baiyue.common.core.exception.BizException; import com.baiyue.firstleg.domain.TruckAppointmentStatus; import com.baiyue.firstleg.dto.TruckAppointmentDtos.*; import com.baiyue.firstleg.entity.*; import com.baiyue.firstleg.repository.TruckAppointmentRepository; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; +@Service public class TruckAppointmentService { @Resource TruckAppointmentRepository repo; + public PageResult page(Query q){return repo.page(q);} public TruckAppointmentEntity detail(long id){return required(id);} + @Transactional public TruckAppointmentEntity create(long uid,String name,SaveRequest r){if(r.expectedVersion()!=0)throw bad("新增 expectedVersion 必须为0"); TruckAppointmentEntity e=new TruckAppointmentEntity(); e.setId(IdWorker.getId()); e.setAppointmentNo("TA"+e.getId()); e.setStatus(TruckAppointmentStatus.DRAFT); e.setRevision(0); e.setVersion(0); e.setCreatedAt(LocalDateTime.now()); e.setUpdatedAt(e.getCreatedAt()); copy(e,r); repo.insert(e); record(e,null,e.getStatus().name(),"CREATE",null,uid,name); return e;} + @Transactional public TruckAppointmentEntity edit(long id,long uid,String name,SaveRequest r){TruckAppointmentEntity e=required(id); checkVersion(e,r.expectedVersion()); if(!(e.getStatus()==TruckAppointmentStatus.DRAFT||e.getStatus()==TruckAppointmentStatus.PENDING_DISPATCH||e.getStatus()==TruckAppointmentStatus.RESCHEDULED))throw conflict("当前状态不可编辑"); copy(e,r); if(repo.updateEdit(e,r.expectedVersion())!=1)throw conflict("版本已变化,请刷新后重试"); record(e,e.getStatus().name(),e.getStatus().name(),"EDIT",null,uid,name); return required(id);} + @Transactional public TruckAppointmentEntity action(long id,String action,ActionRequest r,String idem,String hash,long uid,String name){TruckAppointmentEntity e=required(id); checkVersion(e,r.expectedVersion()); TruckAppointmentStatus from=e.getStatus(),to=next(from,action); if("RESCHEDULE".equals(action)){throw conflict("改约请使用专用接口");} if(repo.transition(id,from.name(),to.name(),e.getVersion())!=1)throw conflict("状态或版本已变化,请刷新后重试"); e.setStatus(to);e.setVersion(e.getVersion()+1);e.setRevision(e.getRevision()+1); record(e,from.name(),to.name(),action,r.reason(),uid,name); operation(e,action,idem,hash); return e;} + @Transactional public TruckAppointmentEntity reschedule(long id,LocalDateTime at,ActionRequest r,long uid,String name){TruckAppointmentEntity e=required(id);checkVersion(e,r.expectedVersion()); if(e.getStatus()==TruckAppointmentStatus.COMPLETED||e.getStatus()==TruckAppointmentStatus.CANCELLED)throw conflict("当前状态不可改约"); if(repo.reschedule(id,at,r.reason(),e.getVersion())!=1)throw conflict("状态或版本已变化,请刷新后重试");e.setStatus(TruckAppointmentStatus.RESCHEDULED);e.setPlannedLoadingAt(at);record(e,e.getStatus().name(),"RESCHEDULED","RESCHEDULE",r.reason(),uid,name);return e;} + private TruckAppointmentStatus next(TruckAppointmentStatus s,String a){return switch(a){case"SUBMIT"->s==TruckAppointmentStatus.DRAFT?TruckAppointmentStatus.PENDING_DISPATCH:badStatus();case"DISPATCH"->s==TruckAppointmentStatus.PENDING_DISPATCH||s==TruckAppointmentStatus.RESCHEDULED?TruckAppointmentStatus.DISPATCHED:badStatus();case"PICKUP"->s==TruckAppointmentStatus.DISPATCHED?TruckAppointmentStatus.PICKUP_IN_PROGRESS:badStatus();case"ARRIVE"->s==TruckAppointmentStatus.PICKUP_IN_PROGRESS?TruckAppointmentStatus.ARRIVED_WAREHOUSE:badStatus();case"LOAD"->s==TruckAppointmentStatus.ARRIVED_WAREHOUSE?TruckAppointmentStatus.LOADING:badStatus();case"DEPART"->s==TruckAppointmentStatus.LOADING?TruckAppointmentStatus.DEPARTED:badStatus();case"COMPLETE"->s==TruckAppointmentStatus.DEPARTED?TruckAppointmentStatus.COMPLETED:badStatus();case"EXCEPTION"->s!=TruckAppointmentStatus.COMPLETED&&s!=TruckAppointmentStatus.CANCELLED?TruckAppointmentStatus.EXCEPTION:badStatus();case"CANCEL"->s!=TruckAppointmentStatus.COMPLETED?TruckAppointmentStatus.CANCELLED:badStatus();default->badStatus();};} + private TruckAppointmentStatus badStatus(){throw conflict("不允许的状态动作");} private TruckAppointmentEntity required(long id){TruckAppointmentEntity e=repo.find(id);if(e==null)throw new BizException(ResultCode.NOT_FOUND,"拖车预约不存在");return e;} private void checkVersion(TruckAppointmentEntity e,int v){if(e.getVersion()!=v)throw conflict("版本已变化,请刷新后重试");} private static BizException conflict(String m){return new BizException(ResultCode.CONFLICT,m);} private static BizException bad(String m){return new BizException(ResultCode.BAD_REQUEST,m);} + private void copy(TruckAppointmentEntity e,SaveRequest r){e.setOutboundOrderId(r.outboundOrderId());e.setOceanBookingId(r.oceanBookingId());e.setContainerBookingId(r.containerBookingId());e.setLoadingPlanId(r.loadingPlanId());e.setWarehouseId(r.warehouseId());e.setCustomerId(r.customerId());e.setCustomerName(r.customerName());e.setCarrierId(r.carrierId());e.setCarrierName(r.carrierName());e.setFleetContact(r.fleetContact());e.setFleetPhone(r.fleetPhone());e.setDriverName(r.driverName());e.setDriverPhone(r.driverPhone());e.setDriverIdCard(r.driverIdCard());e.setVehicleNo(r.vehicleNo());e.setStoreName(r.storeName());e.setStoreContact(r.storeContact());e.setStorePhone(r.storePhone());e.setStoreAddress(r.storeAddress());e.setStoreCity(r.storeCity());e.setStoreZipcode(r.storeZipcode());e.setPackageCount(r.packageCount());e.setGrossWeightKg(r.grossWeightKg());e.setVolumeCbm(r.volumeCbm());e.setPalletCount(r.palletCount());e.setPoNo(r.poNo());e.setPlannedLoadingAt(r.plannedLoadingAt());e.setTransitMinutes(r.transitMinutes());e.setPayableAmount(r.payableAmount());e.setReceivableAmount(r.receivableAmount());e.setCurrency(r.currency()==null?"RMB":r.currency());e.setRemark(r.remark());} + private void record(TruckAppointmentEntity e,String from,String to,String action,String reason,long uid,String name){TruckAppointmentHistoryEntity h=new TruckAppointmentHistoryEntity();h.setId(IdWorker.getId());h.setAppointmentId(e.getId());h.setRevision(e.getRevision());h.setAction(action);h.setFromStatus(from);h.setToStatus(to);h.setReason(reason);h.setOperatorId(uid);h.setOperatorName(name);h.setCreatedAt(LocalDateTime.now());repo.history(h);} + private void operation(TruckAppointmentEntity e,String action,String key,String hash){if(key==null||key.isBlank())return;TruckAppointmentOperationEntity o=new TruckAppointmentOperationEntity();o.setId(IdWorker.getId());o.setAppointmentId(e.getId());o.setAction(action);o.setIdempotencyKey(key);o.setRequestHash(hash==null?"":hash);o.setCreatedAt(LocalDateTime.now());repo.operation(o);} +} diff --git a/firstleg/src/main/resources/db/phase3-ocean-booking-schema.sql b/firstleg/src/main/resources/db/phase3-ocean-booking-schema.sql new file mode 100644 index 000000000..e62d33268 --- /dev/null +++ b/firstleg/src/main/resources/db/phase3-ocean-booking-schema.sql @@ -0,0 +1,222 @@ +SET NAMES utf8mb4; +USE baiyue_firstleg; + +CREATE TABLE IF NOT EXISTS fl_ocean_booking ( + id BIGINT UNSIGNED NOT NULL, + booking_no VARCHAR(40) NOT NULL, + status VARCHAR(24) NOT NULL DEFAULT 'DRAFT', + customer_id BIGINT UNSIGNED NOT NULL COMMENT '当前产品客户ID', + customer_name VARCHAR(128) NOT NULL, + bill_of_lading_no VARCHAR(128) NULL, + shipping_company_id BIGINT UNSIGNED NULL, + shipping_company_name VARCHAR(128) NULL, + booking_agent_id BIGINT UNSIGNED NULL, + booking_agent_name VARCHAR(128) NULL, + vessel_name VARCHAR(128) NULL, + voyage_no VARCHAR(64) NULL, + departure_port_code VARCHAR(32) NULL, + departure_port_name VARCHAR(128) NULL, + destination_port_code VARCHAR(32) NULL, + destination_port_name VARCHAR(128) NULL, + place_of_delivery VARCHAR(128) NULL, + service_term VARCHAR(32) NULL, + freight_term VARCHAR(32) NULL, + estimated_sailing_at DATETIME(3) NULL, + estimated_arrival_at DATETIME(3) NULL, + pending_vessel_name VARCHAR(128) NULL, + pending_voyage_no VARCHAR(64) NULL, + pending_estimated_sailing_at DATETIME(3) NULL, + pending_estimated_arrival_at DATETIME(3) NULL, + change_reason VARCHAR(1000) NULL, + failure_reason VARCHAR(1000) NULL, + cancellation_reason VARCHAR(1000) NULL, + remark VARCHAR(1000) NULL, + created_by BIGINT UNSIGNED NOT NULL, + created_by_name VARCHAR(64) NULL, + created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + updated_by BIGINT UNSIGNED NOT NULL, + updated_by_name VARCHAR(64) NULL, + updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3), + version INT UNSIGNED NOT NULL DEFAULT 0, + PRIMARY KEY (id), + UNIQUE KEY uk_ocean_booking_no (booking_no), + KEY idx_ocean_booking_customer (customer_id,status,updated_at,id), + KEY idx_ocean_booking_voyage (vessel_name,voyage_no,updated_at), + CONSTRAINT chk_ocean_booking_customer CHECK (customer_id > 0), + CONSTRAINT chk_ocean_booking_status CHECK (status IN + ('DRAFT','SUBMITTED','CONFIRMED','RELEASED','FAILED','CHANGE_PENDING','CANCELLED')), + CONSTRAINT chk_ocean_booking_schedule CHECK + (estimated_sailing_at IS NULL OR estimated_arrival_at IS NULL OR estimated_arrival_at >= estimated_sailing_at), + CONSTRAINT chk_ocean_booking_pending_schedule CHECK + (pending_estimated_sailing_at IS NULL OR pending_estimated_arrival_at IS NULL + OR pending_estimated_arrival_at >= pending_estimated_sailing_at) +) ENGINE=InnoDB COMMENT='独立海运订舱聚合;柜次仍由fl_container_booking承载'; + +CREATE TABLE IF NOT EXISTS fl_ocean_booking_party ( + id BIGINT UNSIGNED NOT NULL, + ocean_booking_id BIGINT UNSIGNED NOT NULL, + party_type VARCHAR(24) NOT NULL COMMENT 'SHIPPER/CONSIGNEE/NOTIFY_PARTY', + party_name VARCHAR(255) NOT NULL, + address VARCHAR(1000) NULL, + contact_name VARCHAR(128) NULL, + contact_phone VARCHAR(64) NULL, + PRIMARY KEY (id), + UNIQUE KEY uk_ocean_booking_party (ocean_booking_id,party_type), + CONSTRAINT fk_ocean_booking_party FOREIGN KEY (ocean_booking_id) REFERENCES fl_ocean_booking(id), + CONSTRAINT chk_ocean_booking_party_type CHECK (party_type IN ('SHIPPER','CONSIGNEE','NOTIFY_PARTY')) +) ENGINE=InnoDB COMMENT='订舱提单关系方快照'; + +CREATE TABLE IF NOT EXISTS fl_ocean_booking_container_requirement ( + id BIGINT UNSIGNED NOT NULL, + ocean_booking_id BIGINT UNSIGNED NOT NULL, + container_type VARCHAR(32) NOT NULL, + container_kind VARCHAR(32) NOT NULL, + quantity INT UNSIGNED NOT NULL, + sort_no INT UNSIGNED NOT NULL DEFAULT 0, + PRIMARY KEY (id), + KEY idx_ocean_requirement_booking (ocean_booking_id,sort_no,id), + CONSTRAINT fk_ocean_requirement_booking FOREIGN KEY (ocean_booking_id) REFERENCES fl_ocean_booking(id), + CONSTRAINT chk_ocean_requirement_quantity CHECK (quantity > 0) +) ENGINE=InnoDB COMMENT='订舱箱型箱种及数量需求'; + +CREATE TABLE IF NOT EXISTS fl_ocean_booking_container_allocation ( + id BIGINT UNSIGNED NOT NULL, + ocean_booking_id BIGINT UNSIGNED NOT NULL, + requirement_id BIGINT UNSIGNED NOT NULL, + container_booking_id BIGINT UNSIGNED NOT NULL COMMENT '明确引用现有柜次ID', + allocated_by BIGINT UNSIGNED NOT NULL, + allocated_by_name VARCHAR(64) NULL, + allocated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + PRIMARY KEY (id), + UNIQUE KEY uk_ocean_allocation_container (container_booking_id), + KEY idx_ocean_allocation_booking (ocean_booking_id,requirement_id,allocated_at), + CONSTRAINT fk_ocean_allocation_booking FOREIGN KEY (ocean_booking_id) REFERENCES fl_ocean_booking(id), + CONSTRAINT fk_ocean_allocation_requirement FOREIGN KEY (requirement_id) + REFERENCES fl_ocean_booking_container_requirement(id), + CONSTRAINT fk_ocean_allocation_container FOREIGN KEY (container_booking_id) REFERENCES fl_container_booking(id) +) ENGINE=InnoDB COMMENT='订舱需求与现有柜次的唯一分配关系'; + +CREATE TABLE IF NOT EXISTS fl_ocean_booking_status_history ( + id BIGINT UNSIGNED NOT NULL, + ocean_booking_id BIGINT UNSIGNED NOT NULL, + from_status VARCHAR(24) NULL, + to_status VARCHAR(24) NOT NULL, + action VARCHAR(40) NOT NULL, + reason VARCHAR(1000) NULL, + before_snapshot JSON NULL, + after_snapshot JSON NOT NULL, + operator_id BIGINT UNSIGNED NOT NULL, + operator_name VARCHAR(64) NULL, + created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + PRIMARY KEY (id), + KEY idx_ocean_history_booking (ocean_booking_id,created_at,id), + CONSTRAINT fk_ocean_history_booking FOREIGN KEY (ocean_booking_id) REFERENCES fl_ocean_booking(id) +) ENGINE=InnoDB COMMENT='海运订舱不可变状态历史'; + +CREATE TABLE IF NOT EXISTS fl_ocean_booking_operation ( + id BIGINT UNSIGNED NOT NULL, + ocean_booking_id BIGINT UNSIGNED NULL COMMENT '创建请求完成前允许为空', + operator_id BIGINT UNSIGNED NOT NULL, + operation VARCHAR(40) NOT NULL, + idempotency_key VARCHAR(128) NOT NULL, + request_hash CHAR(64) NOT NULL, + status VARCHAR(16) NOT NULL DEFAULT 'PROCESSING', + result_json JSON NULL, + created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + completed_at DATETIME(3) NULL, + PRIMARY KEY (id), + UNIQUE KEY uk_ocean_operation (operator_id,operation,idempotency_key), + KEY idx_ocean_operation_booking (ocean_booking_id,created_at), + CONSTRAINT fk_ocean_operation_booking FOREIGN KEY (ocean_booking_id) REFERENCES fl_ocean_booking(id), + CONSTRAINT chk_ocean_operation_status CHECK (status IN ('PROCESSING','SUCCESS')) +) ENGINE=InnoDB COMMENT='海运订舱写操作幂等与请求哈希'; + +DROP TRIGGER IF EXISTS trg_ocean_booking_before_update; +DELIMITER $$ +CREATE TRIGGER trg_ocean_booking_before_update BEFORE UPDATE ON fl_ocean_booking FOR EACH ROW +BEGIN + IF OLD.status IN ('RELEASED','CANCELLED') THEN + SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='已放舱或已取消订舱不可修改'; + END IF; + IF OLD.status <> NEW.status AND NOT ( + (OLD.status='DRAFT' AND NEW.status IN ('SUBMITTED','CANCELLED')) + OR (OLD.status='SUBMITTED' AND NEW.status IN ('CONFIRMED','FAILED','CANCELLED')) + OR (OLD.status='CONFIRMED' AND NEW.status IN ('RELEASED','CHANGE_PENDING','CANCELLED')) + OR (OLD.status='CHANGE_PENDING' AND NEW.status IN ('CONFIRMED','FAILED','CANCELLED')) + OR (OLD.status='FAILED' AND NEW.status='CANCELLED')) THEN + SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='海运订舱状态迁移非法'; + END IF; +END$$ +DELIMITER ; + +DROP TRIGGER IF EXISTS trg_ocean_party_before_insert; +DROP TRIGGER IF EXISTS trg_ocean_party_before_update; +DROP TRIGGER IF EXISTS trg_ocean_party_before_delete; +DELIMITER $$ +CREATE TRIGGER trg_ocean_party_before_insert BEFORE INSERT ON fl_ocean_booking_party FOR EACH ROW +BEGIN IF (SELECT status FROM fl_ocean_booking WHERE id=NEW.ocean_booking_id) <> 'DRAFT' THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='仅草稿可维护订舱方'; END IF; END$$ +CREATE TRIGGER trg_ocean_party_before_update BEFORE UPDATE ON fl_ocean_booking_party FOR EACH ROW +BEGIN IF (SELECT status FROM fl_ocean_booking WHERE id=OLD.ocean_booking_id) <> 'DRAFT' THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='仅草稿可维护订舱方'; END IF; END$$ +CREATE TRIGGER trg_ocean_party_before_delete BEFORE DELETE ON fl_ocean_booking_party FOR EACH ROW +BEGIN IF (SELECT status FROM fl_ocean_booking WHERE id=OLD.ocean_booking_id) <> 'DRAFT' THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='仅草稿可维护订舱方'; END IF; END$$ +DELIMITER ; + +DROP TRIGGER IF EXISTS trg_ocean_requirement_before_insert; +DROP TRIGGER IF EXISTS trg_ocean_requirement_before_update; +DROP TRIGGER IF EXISTS trg_ocean_requirement_before_delete; +DELIMITER $$ +CREATE TRIGGER trg_ocean_requirement_before_insert BEFORE INSERT ON fl_ocean_booking_container_requirement FOR EACH ROW +BEGIN IF (SELECT status FROM fl_ocean_booking WHERE id=NEW.ocean_booking_id) <> 'DRAFT' THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='仅草稿可维护箱型需求'; END IF; END$$ +CREATE TRIGGER trg_ocean_requirement_before_update BEFORE UPDATE ON fl_ocean_booking_container_requirement FOR EACH ROW +BEGIN IF (SELECT status FROM fl_ocean_booking WHERE id=OLD.ocean_booking_id) <> 'DRAFT' THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='仅草稿可维护箱型需求'; END IF; END$$ +CREATE TRIGGER trg_ocean_requirement_before_delete BEFORE DELETE ON fl_ocean_booking_container_requirement FOR EACH ROW +BEGIN IF (SELECT status FROM fl_ocean_booking WHERE id=OLD.ocean_booking_id) <> 'DRAFT' THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='仅草稿可维护箱型需求'; END IF; END$$ +DELIMITER ; + +DROP TRIGGER IF EXISTS trg_ocean_allocation_before_insert; +DELIMITER $$ +CREATE TRIGGER trg_ocean_allocation_before_insert BEFORE INSERT ON fl_ocean_booking_container_allocation FOR EACH ROW +BEGIN + IF (SELECT ocean_booking_id FROM fl_ocean_booking_container_requirement WHERE id=NEW.requirement_id) <> NEW.ocean_booking_id THEN + SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='箱型需求不属于当前订舱'; + END IF; + IF (SELECT status FROM fl_ocean_booking WHERE id=NEW.ocean_booking_id) NOT IN + ('SUBMITTED','CONFIRMED','CHANGE_PENDING') THEN + SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='当前订舱状态不可分配柜次'; + END IF; +END$$ +DELIMITER ; + +DROP TRIGGER IF EXISTS trg_ocean_history_before_update; +DROP TRIGGER IF EXISTS trg_ocean_history_before_delete; +DELIMITER $$ +CREATE TRIGGER trg_ocean_history_before_update BEFORE UPDATE ON fl_ocean_booking_status_history FOR EACH ROW +BEGIN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='订舱状态历史不可修改'; END$$ +CREATE TRIGGER trg_ocean_history_before_delete BEFORE DELETE ON fl_ocean_booking_status_history FOR EACH ROW +BEGIN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='订舱状态历史不可删除'; END$$ +DELIMITER ; + +USE baiyue_iam; +INSERT INTO iam_permission + (id,tenant_id,app_code,permission_type,parent_id,permission_code,permission_name, + route_path,http_method,sort_no,status,built_in,deleted) +VALUES + (5102140,0,'PLATFORM','MENU',5102000,'platform:firstleg:ocean-booking:list','订舱管理','/first-leg/ocean-bookings','GET',80,'ACTIVE',1,0), + (5102141,0,'PLATFORM','BUTTON',5102140,'platform:firstleg:ocean-booking:view','查看订舱',NULL,'GET',10,'ACTIVE',1,0), + (5102142,0,'PLATFORM','BUTTON',5102140,'platform:firstleg:ocean-booking:create','创建订舱',NULL,'POST',20,'ACTIVE',1,0), + (5102143,0,'PLATFORM','BUTTON',5102140,'platform:firstleg:ocean-booking:edit','编辑订舱',NULL,'PUT',30,'ACTIVE',1,0), + (5102144,0,'PLATFORM','BUTTON',5102140,'platform:firstleg:ocean-booking:submit','提交订舱',NULL,'POST',40,'ACTIVE',1,0), + (5102145,0,'PLATFORM','BUTTON',5102140,'platform:firstleg:ocean-booking:confirm','确认订舱',NULL,'POST',50,'ACTIVE',1,0), + (5102146,0,'PLATFORM','BUTTON',5102140,'platform:firstleg:ocean-booking:release','确认放舱',NULL,'POST',60,'ACTIVE',1,0), + (5102147,0,'PLATFORM','BUTTON',5102140,'platform:firstleg:ocean-booking:cancel','取消订舱',NULL,'POST',70,'ACTIVE',1,0), + (5102148,0,'PLATFORM','BUTTON',5102140,'platform:firstleg:ocean-booking:change','变更船期',NULL,'POST',80,'ACTIVE',1,0), + (5102149,0,'PLATFORM','BUTTON',5102140,'platform:firstleg:ocean-booking:allocate','分配柜次',NULL,'POST',90,'ACTIVE',1,0) +ON DUPLICATE KEY UPDATE permission_name=VALUES(permission_name),parent_id=VALUES(parent_id), + route_path=VALUES(route_path),http_method=VALUES(http_method),sort_no=VALUES(sort_no),status='ACTIVE',built_in=1,deleted=0; + +INSERT IGNORE INTO iam_role_permission(role_id,permission_id,tenant_id) +SELECT role.id,permission.id,0 FROM iam_role role JOIN iam_permission permission + ON permission.tenant_id=0 AND permission.permission_code LIKE 'platform:firstleg:ocean-booking:%' +WHERE role.tenant_id=0 AND role.role_code IN ('PLATFORM_ADMIN','ORDER_OPERATOR'); + +USE baiyue_firstleg; diff --git a/firstleg/src/main/resources/db/phase3-truck-appointment-schema.sql b/firstleg/src/main/resources/db/phase3-truck-appointment-schema.sql new file mode 100644 index 000000000..408c31bb5 --- /dev/null +++ b/firstleg/src/main/resources/db/phase3-truck-appointment-schema.sql @@ -0,0 +1,31 @@ +SET NAMES utf8mb4; +CREATE TABLE IF NOT EXISTS fl_truck_appointment ( + id BIGINT UNSIGNED NOT NULL, appointment_no VARCHAR(40) NOT NULL, outbound_order_id BIGINT UNSIGNED NULL, + ocean_booking_id BIGINT UNSIGNED NULL, container_booking_id BIGINT UNSIGNED NULL, loading_plan_id BIGINT UNSIGNED NULL, + warehouse_id BIGINT UNSIGNED NULL, customer_id BIGINT UNSIGNED NULL, customer_name VARCHAR(128) NULL, + carrier_id BIGINT UNSIGNED NULL, carrier_name VARCHAR(128) NULL, fleet_contact VARCHAR(64) NULL, fleet_phone VARCHAR(32) NULL, + driver_name VARCHAR(64) NULL, driver_phone VARCHAR(32) NULL, driver_id_card VARCHAR(32) NULL, vehicle_no VARCHAR(32) NULL, + store_name VARCHAR(128) NULL, store_contact VARCHAR(64) NULL, store_phone VARCHAR(32) NULL, store_address VARCHAR(255) NULL, + store_city VARCHAR(64) NULL, store_zipcode VARCHAR(16) NULL, package_count INT UNSIGNED NULL, gross_weight_kg DECIMAL(18,3) NULL, + volume_cbm DECIMAL(18,4) NULL, pallet_count INT UNSIGNED NULL, po_no VARCHAR(255) NULL, planned_loading_at DATETIME(3) NULL, + actual_loading_at DATETIME(3) NULL, transit_minutes INT UNSIGNED NULL, payable_amount DECIMAL(18,2) NULL, receivable_amount DECIMAL(18,2) NULL, + currency VARCHAR(8) NOT NULL DEFAULT 'RMB', status VARCHAR(32) NOT NULL DEFAULT 'DRAFT', revision INT UNSIGNED NOT NULL DEFAULT 0, + version INT UNSIGNED NOT NULL DEFAULT 0, remark VARCHAR(1000) NULL, created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3), PRIMARY KEY(id), UNIQUE KEY uk_truck_appointment_no(appointment_no), + KEY idx_truck_appointment_status(status,updated_at), KEY idx_truck_appointment_container(container_booking_id), KEY idx_truck_appointment_customer(customer_id), + CONSTRAINT chk_truck_appointment_status CHECK(status IN ('DRAFT','PENDING_DISPATCH','DISPATCHED','PICKUP_IN_PROGRESS','ARRIVED_WAREHOUSE','LOADING','DEPARTED','COMPLETED','RESCHEDULED','EXCEPTION','CANCELLED')) +) ENGINE=InnoDB COMMENT='三期拖车预约派车聚合'; +CREATE TABLE IF NOT EXISTS fl_truck_appointment_history ( + id BIGINT UNSIGNED NOT NULL, appointment_id BIGINT UNSIGNED NOT NULL, revision INT UNSIGNED NOT NULL, action VARCHAR(32) NOT NULL, + from_status VARCHAR(32) NULL, to_status VARCHAR(32) NULL, reason VARCHAR(500) NULL, operator_id BIGINT UNSIGNED NOT NULL, + operator_name VARCHAR(64) NULL, request_id VARCHAR(128) NULL, created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY(id), KEY idx_truck_history(appointment_id,revision) +) ENGINE=InnoDB COMMENT='拖车状态与改约历史'; +CREATE TABLE IF NOT EXISTS fl_truck_appointment_attachment ( + id BIGINT UNSIGNED NOT NULL, appointment_id BIGINT UNSIGNED NOT NULL, file_id BIGINT UNSIGNED NOT NULL, attachment_type VARCHAR(32) NOT NULL, + file_name VARCHAR(255) NULL, file_hash CHAR(64) NULL, visibility VARCHAR(24) NOT NULL DEFAULT 'INTERNAL', uploaded_by BIGINT UNSIGNED NOT NULL, + uploaded_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY(id), UNIQUE KEY uk_truck_attachment(appointment_id,file_id), KEY idx_truck_attachment(appointment_id) +) ENGINE=InnoDB COMMENT='拖车附件文件引用'; +CREATE TABLE IF NOT EXISTS fl_truck_appointment_operation ( + id BIGINT UNSIGNED NOT NULL, appointment_id BIGINT UNSIGNED NOT NULL, idempotency_key VARCHAR(128) NOT NULL, request_hash CHAR(64) NOT NULL, + action VARCHAR(32) NOT NULL, response_snapshot JSON NULL, created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY(id), UNIQUE KEY uk_truck_operation(idempotency_key), KEY idx_truck_operation_appointment(appointment_id) +) ENGINE=InnoDB COMMENT='拖车操作幂等记录'; diff --git a/firstleg/src/test/java/com/baiyue/firstleg/controller/TruckAppointmentControllerContractTest.java b/firstleg/src/test/java/com/baiyue/firstleg/controller/TruckAppointmentControllerContractTest.java new file mode 100644 index 000000000..f422dfc98 --- /dev/null +++ b/firstleg/src/test/java/com/baiyue/firstleg/controller/TruckAppointmentControllerContractTest.java @@ -0,0 +1,6 @@ +package com.baiyue.firstleg.controller; +import org.junit.jupiter.api.Test; import org.springframework.core.io.ClassPathResource; import org.springframework.security.access.prepost.PreAuthorize; import java.lang.reflect.Method; import java.nio.charset.StandardCharsets; import static org.assertj.core.api.Assertions.assertThat; +class TruckAppointmentControllerContractTest { + @Test void exposesDedicatedEndpointAndPermissions() {String p=PlatformTruckAppointmentController.class.getAnnotation(org.springframework.web.bind.annotation.RequestMapping.class).value()[0];assertThat(p).isEqualTo("/api/platform/v1/truck-appointments"); for(String n:new String[]{"page","detail","create","edit","action","reschedule"}) assertThat(java.util.Arrays.stream(PlatformTruckAppointmentController.class.getDeclaredMethods()).anyMatch(m->m.getName().equals(n))).isTrue();} + @Test void schemaHasAggregateTablesAndStates() throws Exception {String s=new ClassPathResource("db/phase3-truck-appointment-schema.sql").getContentAsString(StandardCharsets.UTF_8);assertThat(s).contains("fl_truck_appointment","fl_truck_appointment_history","fl_truck_appointment_attachment","fl_truck_appointment_operation","PENDING_DISPATCH","PICKUP_IN_PROGRESS","ARRIVED_WAREHOUSE","RESCHEDULED");} +} diff --git a/firstleg/src/test/java/com/baiyue/firstleg/oceanbooking/controller/PlatformOceanBookingControllerContractTest.java b/firstleg/src/test/java/com/baiyue/firstleg/oceanbooking/controller/PlatformOceanBookingControllerContractTest.java new file mode 100644 index 000000000..e987b311b --- /dev/null +++ b/firstleg/src/test/java/com/baiyue/firstleg/oceanbooking/controller/PlatformOceanBookingControllerContractTest.java @@ -0,0 +1,56 @@ +package com.baiyue.firstleg.oceanbooking.controller; + +import com.baiyue.common.audit.BusinessAudit; +import org.junit.jupiter.api.Test; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.RequestMapping; + +import java.lang.reflect.Method; +import java.util.Arrays; +import java.util.Map; + +import static org.assertj.core.api.Assertions.assertThat; + +class PlatformOceanBookingControllerContractTest { + @Test + void usesDedicatedResourceAndPermissions() { + assertThat(PlatformOceanBookingController.class.getAnnotation(RequestMapping.class).value()) + .containsExactly("/api/platform/v1/ocean-bookings"); + Map permissions = Map.ofEntries( + Map.entry("page", "platform:firstleg:ocean-booking:list"), + Map.entry("detail", "platform:firstleg:ocean-booking:view"), + Map.entry("create", "platform:firstleg:ocean-booking:create"), + Map.entry("updateDraft", "platform:firstleg:ocean-booking:edit"), + Map.entry("submit", "platform:firstleg:ocean-booking:submit"), + Map.entry("confirm", "platform:firstleg:ocean-booking:confirm"), + Map.entry("fail", "platform:firstleg:ocean-booking:confirm"), + Map.entry("release", "platform:firstleg:ocean-booking:release"), + Map.entry("cancel", "platform:firstleg:ocean-booking:cancel"), + Map.entry("requestChange", "platform:firstleg:ocean-booking:change"), + Map.entry("confirmChange", "platform:firstleg:ocean-booking:change"), + Map.entry("failChange", "platform:firstleg:ocean-booking:change"), + Map.entry("allocate", "platform:firstleg:ocean-booking:allocate")); + permissions.forEach((name, permission) -> { + Method method = method(name); + assertThat(method.getAnnotation(PreAuthorize.class).value()) + .isEqualTo("hasAuthority('" + permission + "')"); + if (!name.equals("page") && !name.equals("detail")) { + assertThat(method.getAnnotation(BusinessAudit.class)).isNotNull(); + } + }); + } + + @Test + void pathVariablesUseExplicitAggregateNames() { + assertThat(Arrays.stream(PlatformOceanBookingController.class.getDeclaredMethods()) + .filter(method -> !method.getName().equals("page") && !method.getName().equals("create")) + .flatMap(method -> Arrays.stream(method.getParameters())) + .filter(parameter -> parameter.isAnnotationPresent(org.springframework.web.bind.annotation.PathVariable.class)) + .allMatch(parameter -> parameter.getName().equals("oceanBookingId"))).isTrue(); + } + + private static Method method(String name) { + return Arrays.stream(PlatformOceanBookingController.class.getDeclaredMethods()) + .filter(method -> method.getName().equals(name)).findFirst().orElseThrow(); + } +} diff --git a/firstleg/src/test/java/com/baiyue/firstleg/oceanbooking/repository/OceanBookingMapperContractTest.java b/firstleg/src/test/java/com/baiyue/firstleg/oceanbooking/repository/OceanBookingMapperContractTest.java new file mode 100644 index 000000000..3fd18bf26 --- /dev/null +++ b/firstleg/src/test/java/com/baiyue/firstleg/oceanbooking/repository/OceanBookingMapperContractTest.java @@ -0,0 +1,39 @@ +package com.baiyue.firstleg.oceanbooking.repository; + +import com.baiyue.firstleg.oceanbooking.mapper.OceanBookingMapper; +import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; +import org.junit.jupiter.api.Test; + +import java.util.Arrays; + +import static org.assertj.core.api.Assertions.assertThat; + +class OceanBookingMapperContractTest { + @Test + void listUsesPlatformAggregateFilters() throws Exception { + String sql = String.join("\n", OceanBookingMapper.class.getDeclaredMethod("selectPage", + com.baomidou.mybatisplus.extension.plugins.pagination.Page.class, + com.baiyue.firstleg.oceanbooking.dto.OceanBookingDtos.Query.class) + .getAnnotation(Select.class).value()); + assertThat(sql).contains("customer_id=#{query.customerId}") + .contains("status=#{query.status}") + .contains("booking_no LIKE") + .contains("ORDER BY updated_at DESC,id DESC"); + } + + @Test + void everyMutationUsesExpectedVersionAndStateGuard() { + String sql = Arrays.stream(OceanBookingMapper.class.getDeclaredMethods()) + .map(method -> method.getAnnotation(Update.class)) + .filter(java.util.Objects::nonNull) + .flatMap(annotation -> Arrays.stream(annotation.value())) + .reduce("", (left, right) -> left + '\n' + right); + assertThat(sql) + .contains("status='DRAFT' AND version=#{expectedVersion}") + .contains("status=#{fromStatus} AND version=#{expectedVersion}") + .contains("status='CONFIRMED' AND version=#{expectedVersion}") + .contains("status='CHANGE_PENDING' AND version=#{expectedVersion}") + .contains("status IN ('SUBMITTED','CONFIRMED','CHANGE_PENDING')"); + } +} diff --git a/firstleg/src/test/java/com/baiyue/firstleg/oceanbooking/repository/OceanBookingSqlContractTest.java b/firstleg/src/test/java/com/baiyue/firstleg/oceanbooking/repository/OceanBookingSqlContractTest.java new file mode 100644 index 000000000..6f943da40 --- /dev/null +++ b/firstleg/src/test/java/com/baiyue/firstleg/oceanbooking/repository/OceanBookingSqlContractTest.java @@ -0,0 +1,58 @@ +package com.baiyue.firstleg.oceanbooking.repository; + +import org.junit.jupiter.api.Test; +import org.springframework.core.io.ClassPathResource; + +import java.nio.charset.StandardCharsets; + +import static org.assertj.core.api.Assertions.assertThat; + +class OceanBookingSqlContractTest { + @Test + void definesDedicatedAggregateWithoutChangingContainerSemantics() throws Exception { + String sql = sql(); + assertThat(sql) + .contains("CREATE TABLE IF NOT EXISTS fl_ocean_booking (") + .contains("CREATE TABLE IF NOT EXISTS fl_ocean_booking_party") + .contains("CREATE TABLE IF NOT EXISTS fl_ocean_booking_container_requirement") + .contains("CREATE TABLE IF NOT EXISTS fl_ocean_booking_container_allocation") + .contains("CREATE TABLE IF NOT EXISTS fl_ocean_booking_status_history") + .contains("CREATE TABLE IF NOT EXISTS fl_ocean_booking_operation") + .contains("container_booking_id BIGINT UNSIGNED NOT NULL COMMENT '明确引用现有柜次ID'") + .contains("REFERENCES fl_container_booking(id)") + .doesNotContain("ALTER TABLE fl_container_booking"); + } + + @Test + void enforcesStateIdempotencyAndAuditContracts() throws Exception { + assertThat(sql()) + .contains("OLD.status='DRAFT' AND NEW.status IN ('SUBMITTED','CANCELLED')") + .contains("OLD.status='CONFIRMED' AND NEW.status IN ('RELEASED','CHANGE_PENDING','CANCELLED')") + .contains("OLD.status='CHANGE_PENDING' AND NEW.status IN ('CONFIRMED','FAILED','CANCELLED')") + .contains("OLD.status IN ('RELEASED','CANCELLED')") + .contains("UNIQUE KEY uk_ocean_operation (operator_id,operation,idempotency_key)") + .contains("request_hash CHAR(64) NOT NULL") + .contains("订舱状态历史不可修改") + .contains("UNIQUE KEY uk_ocean_allocation_container (container_booking_id)"); + } + + @Test + void declaresDedicatedPlatformPermissions() throws Exception { + assertThat(sql()) + .contains("platform:firstleg:ocean-booking:list") + .contains("platform:firstleg:ocean-booking:view") + .contains("platform:firstleg:ocean-booking:create") + .contains("platform:firstleg:ocean-booking:edit") + .contains("platform:firstleg:ocean-booking:submit") + .contains("platform:firstleg:ocean-booking:confirm") + .contains("platform:firstleg:ocean-booking:release") + .contains("platform:firstleg:ocean-booking:cancel") + .contains("platform:firstleg:ocean-booking:change") + .contains("platform:firstleg:ocean-booking:allocate"); + } + + private static String sql() throws Exception { + return new ClassPathResource("db/phase3-ocean-booking-schema.sql") + .getContentAsString(StandardCharsets.UTF_8); + } +} diff --git a/firstleg/src/test/java/com/baiyue/firstleg/oceanbooking/service/OceanBookingServiceTest.java b/firstleg/src/test/java/com/baiyue/firstleg/oceanbooking/service/OceanBookingServiceTest.java new file mode 100644 index 000000000..1f1addc3b --- /dev/null +++ b/firstleg/src/test/java/com/baiyue/firstleg/oceanbooking/service/OceanBookingServiceTest.java @@ -0,0 +1,121 @@ +package com.baiyue.firstleg.oceanbooking.service; + +import com.baiyue.common.core.exception.BizException; +import com.baiyue.firstleg.oceanbooking.dto.OceanBookingDtos.ActionRequest; +import com.baiyue.firstleg.oceanbooking.dto.OceanBookingDtos.ChangeRequest; +import com.baiyue.firstleg.oceanbooking.dto.OceanBookingDtos.Detail; +import com.baiyue.firstleg.oceanbooking.entity.OceanBookingEntity; +import com.baiyue.firstleg.oceanbooking.entity.OceanBookingOperationEntity; +import com.baiyue.firstleg.oceanbooking.entity.OceanBookingStatusHistoryEntity; +import com.baiyue.firstleg.oceanbooking.repository.OceanBookingRepository; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.ArgumentCaptor; +import org.mockito.MockitoAnnotations; + +import java.time.LocalDateTime; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +class OceanBookingServiceTest { + @Mock private OceanBookingRepository repository; + @InjectMocks private OceanBookingService service; + + @BeforeEach + void setUp() throws Exception { + MockitoAnnotations.openMocks(this); + var field = OceanBookingService.class.getDeclaredField("objectMapper"); + field.setAccessible(true); field.set(service, new ObjectMapper().findAndRegisterModules()); + when(repository.parties(anyLong())).thenReturn(List.of()); + when(repository.requirements(anyLong())).thenReturn(List.of()); + when(repository.allocations(anyLong())).thenReturn(List.of()); + when(repository.histories(anyLong())).thenReturn(List.of()); + when(repository.claimOperation(any(), anyLong(), anyString(), anyString(), anyString())).thenReturn(true); + when(repository.completeOperation(anyLong(), anyLong(), anyString(), anyString(), anyString())).thenReturn(1); + } + + @Test + void advancesDraftToSubmittedWithVersionAndHistory() { + when(repository.find(1L)).thenReturn(booking("DRAFT", 2), booking("SUBMITTED", 3)); + var shipper = new com.baiyue.firstleg.oceanbooking.entity.OceanBookingPartyEntity(); shipper.setPartyType("SHIPPER"); + var consignee = new com.baiyue.firstleg.oceanbooking.entity.OceanBookingPartyEntity(); consignee.setPartyType("CONSIGNEE"); + var notify = new com.baiyue.firstleg.oceanbooking.entity.OceanBookingPartyEntity(); notify.setPartyType("NOTIFY_PARTY"); + when(repository.parties(1L)).thenReturn(List.of(shipper, consignee, notify)); + when(repository.requirements(1L)).thenReturn(List.of(new com.baiyue.firstleg.oceanbooking.entity.OceanBookingContainerRequirementEntity())); + when(repository.transition(1L, "DRAFT", "SUBMITTED", null, null, 2, 9L, "admin")).thenReturn(1); + + Detail result = service.submit(1L, 9L, "admin", "submit-1", new ActionRequest(2, "提交")); + + assertThat(result.oceanBooking().getStatus()).isEqualTo("SUBMITTED"); + ArgumentCaptor history = + ArgumentCaptor.forClass(OceanBookingStatusHistoryEntity.class); + verify(repository).insert(history.capture()); + assertThat(history.getValue().getFromStatus()).isEqualTo("DRAFT"); + assertThat(history.getValue().getToStatus()).isEqualTo("SUBMITTED"); + assertThat(history.getValue().getAction()).isEqualTo("SUBMIT"); + } + + @Test + void rejectsCancellationAfterRelease() { + when(repository.find(1L)).thenReturn(booking("RELEASED", 4)); + + assertThatThrownBy(() -> service.cancel(1L, 9L, "admin", "cancel-1", + new ActionRequest(4, "错误"))).isInstanceOf(BizException.class) + .hasMessageContaining("不可逆"); + + verify(repository, never()).transition(anyLong(), anyString(), anyString(), any(), any(), anyInt(), anyLong(), anyString()); + } + + @Test + void keepsCurrentVoyagePendingUntilChangeConfirmation() { + OceanBookingEntity current = booking("CONFIRMED", 5); + current.setVesselName("OLD"); current.setVoyageNo("V1"); + OceanBookingEntity pending = booking("CHANGE_PENDING", 6); + pending.setVesselName("OLD"); pending.setVoyageNo("V1"); pending.setPendingVesselName("NEW"); pending.setPendingVoyageNo("V2"); + when(repository.find(1L)).thenReturn(current, pending); + when(repository.requestChange(eq(1L), any(), eq("改船"), eq(5), eq(9L), eq("admin"))).thenReturn(1); + + Detail result = service.requestChange(1L, 9L, "admin", "change-1", + new ChangeRequest(5, "NEW", "V2", LocalDateTime.of(2026, 9, 1, 0, 0), + LocalDateTime.of(2026, 9, 20, 0, 0), "改船")); + + assertThat(result.oceanBooking().getStatus()).isEqualTo("CHANGE_PENDING"); + assertThat(result.oceanBooking().getVesselName()).isEqualTo("OLD"); + assertThat(result.oceanBooking().getPendingVesselName()).isEqualTo("NEW"); + } + + @Test + void replaysCompletedRequestBeforeVersionValidation() throws Exception { + OceanBookingEntity submitted = booking("SUBMITTED", 3); + Detail replay = new Detail(submitted, List.of(), List.of(), List.of(), List.of()); + OceanBookingOperationEntity operation = new OceanBookingOperationEntity(); + operation.setRequestHash(hashForSubmit()); operation.setStatus("SUCCESS"); + operation.setResultJson(new ObjectMapper().findAndRegisterModules().writeValueAsString(replay)); + when(repository.claimOperation(eq(1L), eq(9L), eq("SUBMIT"), eq("submit-replay"), anyString())).thenReturn(false); + when(repository.operation(9L, "SUBMIT", "submit-replay")).thenReturn(operation); + + Detail result = service.submit(1L, 9L, "admin", "submit-replay", new ActionRequest(2, "提交")); + + assertThat(result.oceanBooking().getStatus()).isEqualTo("SUBMITTED"); + verify(repository, never()).find(anyLong()); + } + + private String hashForSubmit() throws Exception { + var method = OceanBookingService.class.getDeclaredMethod("hash", String.class, Long.class, Object.class); + method.setAccessible(true); + return (String) method.invoke(service, "SUBMIT", 1L, new ActionRequest(2, "提交")); + } + + private static OceanBookingEntity booking(String status, int version) { + OceanBookingEntity value = new OceanBookingEntity(); value.setId(1L); value.setBookingNo("OB1"); + value.setStatus(status); value.setCustomerId(100L); value.setCustomerName("客户"); value.setVersion(version); + return value; + } +} diff --git a/iam/src/main/java/com/baiyue/iam/client/OverseasStorageFeeClient.java b/iam/src/main/java/com/baiyue/iam/client/OverseasStorageFeeClient.java new file mode 100644 index 000000000..1a1849d69 --- /dev/null +++ b/iam/src/main/java/com/baiyue/iam/client/OverseasStorageFeeClient.java @@ -0,0 +1,28 @@ +package com.baiyue.iam.client; + +import com.baiyue.common.core.api.ApiResponse; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestParam; + +/** Internal Warehouse contract for a customer's default overseas storage fees. */ +@FeignClient(name = "warehouse-service", contextId = "overseasStorageFeeClient", + url = "${baiyue.clients.warehouse.url:}", + path = "/internal/warehouse/v1/customer-overseas-storage-fees") +public interface OverseasStorageFeeClient { + @PostMapping("/defaults") + ApiResponse initialize( + @RequestHeader("X-Internal-Service-Token") String token, + @RequestBody InitializationRequest request); + + @DeleteMapping("/defaults") + ApiResponse compensate(@RequestHeader("X-Internal-Service-Token") String token, + @RequestParam long tenantId, + @RequestParam String initializationKey); + + record InitializationRequest(long tenantId, long operatorId, String initializationKey) { } + record InitializationResponse(Long configId, boolean createdByThisInitialization) { } +} diff --git a/iam/src/main/java/com/baiyue/iam/service/MerchantOnboardingService.java b/iam/src/main/java/com/baiyue/iam/service/MerchantOnboardingService.java index 84fb530ee..30c2c6117 100644 --- a/iam/src/main/java/com/baiyue/iam/service/MerchantOnboardingService.java +++ b/iam/src/main/java/com/baiyue/iam/service/MerchantOnboardingService.java @@ -41,6 +41,7 @@ public class MerchantOnboardingService { @Resource private IamTenantQualificationMapper qualificationMapper; @Resource private IamTenantReviewMapper reviewMapper; @Resource private CustomerDimensionRuleInitializationService dimensionRuleInitialization; + @Resource private OverseasStorageFeeInitializationService overseasStorageFeeInitialization; @Transactional public MerchantRegistrationResponse register(MerchantRegistrationRequest request) { @@ -120,6 +121,7 @@ public class MerchantOnboardingService { addressMapper.insert(address); } dimensionRuleInitialization.initialize(tenantId, request.authUserId()); + overseasStorageFeeInitialization.initialize(tenantId, request.authUserId()); return new MerchantRegistrationResponse(tenantId, membershipId, tenant.getStatus()); } @@ -161,6 +163,7 @@ public class MerchantOnboardingService { "IAM registration compensation is unsafe: onboarding has progressed"); } + overseasStorageFeeInitialization.compensateRegistration(tenant.getId()); dimensionRuleInitialization.compensateRegistration(tenant.getId()); membershipRoleMapper.delete(new LambdaQueryWrapper() diff --git a/iam/src/main/java/com/baiyue/iam/service/OverseasStorageFeeInitializationService.java b/iam/src/main/java/com/baiyue/iam/service/OverseasStorageFeeInitializationService.java new file mode 100644 index 000000000..1fe7a2428 --- /dev/null +++ b/iam/src/main/java/com/baiyue/iam/service/OverseasStorageFeeInitializationService.java @@ -0,0 +1,96 @@ +package com.baiyue.iam.service; + +import com.baiyue.common.core.api.ApiResponse; +import com.baiyue.common.core.api.ResultCode; +import com.baiyue.common.core.exception.BizException; +import com.baiyue.iam.client.OverseasStorageFeeClient; +import jakarta.annotation.Resource; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionSynchronization; +import org.springframework.transaction.support.TransactionSynchronizationManager; + +/** Creates the nine editable default fee tiers for a customer. */ +@Service +public class OverseasStorageFeeInitializationService { + private static final Logger log = LoggerFactory.getLogger(OverseasStorageFeeInitializationService.class); + private static final int MAX_ATTEMPTS = 3; + private static final String KEY_PREFIX = "iam-customer-create-overseas-fee:"; + + @Resource private OverseasStorageFeeClient client; + @Value("${baiyue.security.internal-service-token}") private String internalToken; + + public InitializationResult initialize(long tenantId, long operatorId) { + String key = initializationKey(tenantId); + RuntimeException last = null; + for (int attempt = 1; attempt <= MAX_ATTEMPTS; attempt++) { + try { + ApiResponse response = client.initialize( + internalToken, new OverseasStorageFeeClient.InitializationRequest(tenantId, operatorId, key)); + if (response != null && response.successful() && response.data() != null) { + InitializationResult result = new InitializationResult( + response.data().createdByThisInitialization(), key); + registerRollbackCompensation(tenantId, result); + return result; + } + last = unavailable(response); + } catch (RuntimeException failure) { + last = failure; + log.warn("海外仓费用初始化调用异常,tenantId={}, attempt={}", tenantId, attempt, failure); + } + } + compensateAfterUncertainInitialization(tenantId, key); + throw unavailable(last); + } + + public void compensateRegistration(long tenantId) { + compensateRequired(tenantId, initializationKey(tenantId)); + } + + private void registerRollbackCompensation(long tenantId, InitializationResult result) { + if (!result.created() || !TransactionSynchronizationManager.isSynchronizationActive()) return; + TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() { + @Override public void afterCompletion(int status) { + if (status != STATUS_ROLLED_BACK) return; + try { compensateRequired(tenantId, result.initializationKey()); } + catch (RuntimeException ex) { + log.error("客户创建事务回滚后海外仓费用补偿失败,tenantId={}, initializationKey={}", tenantId, + result.initializationKey(), ex); + } + } + }); + } + + private void compensateAfterUncertainInitialization(long tenantId, String key) { + try { compensateRequired(tenantId, key); } + catch (RuntimeException ex) { log.error("海外仓费用初始化结果不确定且补偿失败,tenantId={}, initializationKey={}", tenantId, key, ex); } + } + + private void compensateRequired(long tenantId, String key) { + RuntimeException last = null; + for (int attempt = 1; attempt <= MAX_ATTEMPTS; attempt++) { + try { + ApiResponse response = client.compensate(internalToken, tenantId, key); + if (response != null && response.successful()) return; + last = unavailable(response); + } catch (RuntimeException ex) { last = ex; } + } + throw new BizException(ResultCode.SERVICE_UNAVAILABLE, "海外仓费用补偿失败,请根据客户ID修复数据一致性: " + tenantId); + } + + private static String initializationKey(long tenantId) { return KEY_PREFIX + tenantId; } + private static BizException unavailable(ApiResponse response) { + String detail = response == null || response.message() == null || response.message().isBlank() + ? "Warehouse 服务未返回有效响应" : response.message(); + return new BizException(ResultCode.SERVICE_UNAVAILABLE, "海外仓费用初始化失败: " + detail); + } + private static BizException unavailable(RuntimeException cause) { + String detail = cause == null || cause.getMessage() == null || cause.getMessage().isBlank() + ? "Warehouse 服务暂时不可用" : cause.getMessage(); + return new BizException(ResultCode.SERVICE_UNAVAILABLE, "海外仓费用初始化失败,已重试 3 次: " + detail); + } + + public record InitializationResult(boolean created, String initializationKey) { } +} diff --git a/iam/src/main/java/com/baiyue/iam/service/TenantService.java b/iam/src/main/java/com/baiyue/iam/service/TenantService.java index 3a972c862..4faf4319a 100644 --- a/iam/src/main/java/com/baiyue/iam/service/TenantService.java +++ b/iam/src/main/java/com/baiyue/iam/service/TenantService.java @@ -63,6 +63,8 @@ public class TenantService { @Resource private CustomerDimensionRuleInitializationService dimensionRuleInitialization; @Resource + private OverseasStorageFeeInitializationService overseasStorageFeeInitialization; + @Resource private TenantAdministratorProvisioningService administratorProvisioning; @Transactional @@ -180,6 +182,7 @@ public class TenantService { tenant.setUpdatedBy(operatorId); repository.insertTenant(tenant); dimensionRuleInitialization.initialize(tenant.getId(), operatorId); + overseasStorageFeeInitialization.initialize(tenant.getId(), operatorId); var administrator = administratorProvisioning.provisionPlatformCreatedTenant(tenant, operatorId); return new CreationResponse(response(tenant), administrator.username(), administrator.temporaryPassword()); diff --git a/iam/src/main/resources/db/phase2-location-permissions.sql b/iam/src/main/resources/db/phase2-location-permissions.sql index a24abd02c..67057e6eb 100644 --- a/iam/src/main/resources/db/phase2-location-permissions.sql +++ b/iam/src/main/resources/db/phase2-location-permissions.sql @@ -23,8 +23,12 @@ BEGIN END IF; IF EXISTS ( SELECT 1 FROM iam_permission - WHERE (id = 5103040 AND permission_code <> 'platform:download:list') - OR (id = 5103041 AND permission_code <> 'platform:download:all') + WHERE (id = 5103040 AND NOT ( + (permission_code = 'platform:download:list' AND parent_id = 5103000) + OR (permission_code = 'platform:location:list' AND parent_id = 5103000))) + OR (id = 5103041 AND NOT ( + (permission_code = 'platform:download:all' AND parent_id = 5103040) + OR (permission_code = 'platform:location:create' AND parent_id = 5103040))) ) THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '库位权限迁移失败:下载中心稳定 ID 被未知权限占用'; diff --git a/iam/src/test/java/com/baiyue/iam/repository/LocationPermissionSqlContractTest.java b/iam/src/test/java/com/baiyue/iam/repository/LocationPermissionSqlContractTest.java new file mode 100644 index 000000000..cffa4ece1 --- /dev/null +++ b/iam/src/test/java/com/baiyue/iam/repository/LocationPermissionSqlContractTest.java @@ -0,0 +1,67 @@ +package com.baiyue.iam.repository; + +import org.junit.jupiter.api.Test; +import org.springframework.core.io.ClassPathResource; + +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; + +import static org.assertj.core.api.Assertions.assertThat; + +class LocationPermissionSqlContractTest { + @Test + void acceptsKnownPollutionAndRestoresCanonicalPermissionIds() throws Exception { + assertRepairContract(moduleSql()); + assertRepairContract(unifiedSql()); + } + + private static void assertRepairContract(String sql) { + assertThat(sql) + .contains("permission_code = 'platform:download:list' AND parent_id = 5103000") + .contains("permission_code = 'platform:location:list' AND parent_id = 5103000") + .contains("permission_code = 'platform:download:all' AND parent_id = 5103040") + .contains("permission_code = 'platform:location:create' AND parent_id = 5103040") + .contains("库位权限迁移失败:下载中心稳定 ID 被未知权限占用") + .contains("(5103040, 0, 'PLATFORM', 'MENU', 5103000, 'platform:download:list'") + .contains("(5103041, 0, 'PLATFORM', 'BUTTON', 5103040, 'platform:download:all'") + .contains("(5103060, 0, 'PLATFORM', 'MENU', 5103000, 'platform:location:list'") + .contains("(5103061, 0, 'PLATFORM', 'BUTTON', 5103060, 'platform:location:create'"); + + int snapshot = sql.indexOf("INSERT IGNORE INTO tmp_location_role_grant"); + int delete = firstPositive( + sql.indexOf("DELETE role_permission", snapshot), + sql.indexOf("DELETE rp", snapshot)); + int canonicalLocation = sql.indexOf("(5103060, 0, 'PLATFORM'", delete); + int restore = sql.indexOf("FROM tmp_location_role_grant", canonicalLocation); + int cleanup = sql.indexOf("DROP TEMPORARY TABLE IF EXISTS tmp_location_role_grant", restore); + assertThat(snapshot).isGreaterThan(0); + assertThat(delete).isGreaterThan(snapshot); + assertThat(canonicalLocation).isGreaterThan(delete); + assertThat(restore).isGreaterThan(canonicalLocation); + assertThat(cleanup).isGreaterThan(restore); + } + + private static String moduleSql() throws Exception { + return new ClassPathResource("db/phase2-location-permissions.sql") + .getContentAsString(StandardCharsets.UTF_8); + } + + private static int firstPositive(int left, int right) { + if (left < 0) { + return right; + } + if (right < 0) { + return left; + } + return Math.min(left, right); + } + + private static String unifiedSql() throws Exception { + Path path = Path.of("deploy/sql/头程数据库统一增量-MySQL8.sql"); + if (!Files.exists(path)) { + path = Path.of("../deploy/sql/头程数据库统一增量-MySQL8.sql").normalize(); + } + return Files.readString(path, StandardCharsets.UTF_8); + } +} diff --git a/iam/src/test/java/com/baiyue/iam/service/MerchantOnboardingServiceTest.java b/iam/src/test/java/com/baiyue/iam/service/MerchantOnboardingServiceTest.java index b89e5fc57..9d116d469 100644 --- a/iam/src/test/java/com/baiyue/iam/service/MerchantOnboardingServiceTest.java +++ b/iam/src/test/java/com/baiyue/iam/service/MerchantOnboardingServiceTest.java @@ -40,6 +40,7 @@ class MerchantOnboardingServiceTest { @MockBean private IamTenantQualificationMapper qualifications; @MockBean private IamTenantReviewMapper reviews; @MockBean private CustomerDimensionRuleInitializationService dimensionRuleInitialization; + @MockBean private OverseasStorageFeeInitializationService overseasStorageFeeInitialization; @Resource private MerchantOnboardingService service; @Test void clientRegistrationCreatesOwnerAndAssignsGlobalMerchantOwnerRole() { @@ -65,6 +66,7 @@ class MerchantOnboardingServiceTest { verify(memberships).insert(membership.capture()); verify(membershipRoles).insert(roleGrant.capture()); verify(dimensionRuleInitialization).initialize(result.tenantId(), 9001L); + verify(overseasStorageFeeInitialization).initialize(result.tenantId(), 9001L); assertEquals("PROFILE_REQUIRED", result.tenantStatus()); assertEquals(result.tenantId(), tenant.getValue().getId()); diff --git a/iam/src/test/java/com/baiyue/iam/service/OverseasStorageFeeInitializationServiceTest.java b/iam/src/test/java/com/baiyue/iam/service/OverseasStorageFeeInitializationServiceTest.java new file mode 100644 index 000000000..ba212535f --- /dev/null +++ b/iam/src/test/java/com/baiyue/iam/service/OverseasStorageFeeInitializationServiceTest.java @@ -0,0 +1,42 @@ +package com.baiyue.iam.service; + +import com.baiyue.common.core.api.ApiResponse; +import com.baiyue.common.core.api.ResultCode; +import com.baiyue.common.core.exception.BizException; +import com.baiyue.iam.client.OverseasStorageFeeClient; +import jakarta.annotation.Resource; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; +import org.springframework.transaction.support.TransactionSynchronizationManager; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyLong; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +@SpringJUnitConfig(OverseasStorageFeeInitializationService.class) +@TestPropertySource(properties = "baiyue.security.internal-service-token=internal-token") +class OverseasStorageFeeInitializationServiceTest { + @MockBean private OverseasStorageFeeClient client; + @Resource private OverseasStorageFeeInitializationService service; + + @AfterEach void clearTransaction() { + if (TransactionSynchronizationManager.isSynchronizationActive()) TransactionSynchronizationManager.clearSynchronization(); + } + + @Test void retriesThreeTimesWithDeterministicKey() { + when(client.initialize(anyString(), any())).thenThrow(new RuntimeException("timeout")); + when(client.compensate(anyString(), anyLong(), anyString())).thenReturn(ApiResponse.success(null)); + BizException error = assertThrows(BizException.class, () -> service.initialize(208L, 9L)); + assertEquals(ResultCode.SERVICE_UNAVAILABLE, error.getResultCode()); + verify(client, times(3)).initialize(anyString(), any(OverseasStorageFeeClient.InitializationRequest.class)); + verify(client).compensate("internal-token", 208L, "iam-customer-create-overseas-fee:208"); + } +} diff --git a/iam/src/test/java/com/baiyue/iam/service/TenantCustomerExportTest.java b/iam/src/test/java/com/baiyue/iam/service/TenantCustomerExportTest.java index 7804df09e..3c805ff66 100644 --- a/iam/src/test/java/com/baiyue/iam/service/TenantCustomerExportTest.java +++ b/iam/src/test/java/com/baiyue/iam/service/TenantCustomerExportTest.java @@ -26,6 +26,7 @@ class TenantCustomerExportTest { @MockBean private AuthAccountClient authAccountClient; @MockBean private TenantApprovalInitializationCoordinator approvalInitialization; @MockBean private CustomerDimensionRuleInitializationService dimensionRuleInitialization; + @MockBean private OverseasStorageFeeInitializationService overseasStorageFeeInitialization; @MockBean private TenantAdministratorProvisioningService administratorProvisioning; @Resource private TenantService service; @Test diff --git a/iam/src/test/java/com/baiyue/iam/service/TenantServiceTest.java b/iam/src/test/java/com/baiyue/iam/service/TenantServiceTest.java index 2c93bb3d8..4b274ddec 100644 --- a/iam/src/test/java/com/baiyue/iam/service/TenantServiceTest.java +++ b/iam/src/test/java/com/baiyue/iam/service/TenantServiceTest.java @@ -54,6 +54,7 @@ class TenantServiceTest { @MockBean private IamRoleMapper roles; @MockBean private AuthAccountClient authClient; @MockBean private CustomerDimensionRuleInitializationService dimensionRuleInitialization; + @MockBean private OverseasStorageFeeInitializationService overseasStorageFeeInitialization; @SpyBean private TenantAdministratorProvisioningService provisioning; @Resource private TenantService service; diff --git a/reports/admin-isolation-smoke.json b/reports/admin-isolation-smoke.json new file mode 100644 index 000000000..35a443063 --- /dev/null +++ b/reports/admin-isolation-smoke.json @@ -0,0 +1,3360 @@ +{ + "reportName": "后台管理测试环境 HTTP API 验收", + "marker": "ADMIN-API-20260808051332009", + "gateway": "http://8.163.30.128:9000", + "generatedAt": "2026-08-08T05:13:44.689Z", + "startedAt": "2026-08-08T05:13:32.009Z", + "success": true, + "fatal": null, + "summary": { + "total": 179, + "passed": 179, + "failed": 0 + }, + "modules": [ + { + "name": "orders", + "startedAt": "2026-08-08T05:13:32.427Z", + "finishedAt": "2026-08-08T05:13:34.890Z", + "success": true, + "passed": 49, + "failed": 0, + "fatal": null + }, + { + "name": "inbound-weight-ocr", + "startedAt": "2026-08-08T05:13:34.892Z", + "finishedAt": "2026-08-08T05:13:40.310Z", + "success": true, + "passed": 52, + "failed": 0, + "fatal": null + }, + { + "name": "orders-inbound-measurement-fixture", + "startedAt": "2026-08-08T05:13:40.311Z", + "finishedAt": "2026-08-08T05:13:43.757Z", + "success": true, + "passed": 49, + "failed": 0, + "fatal": null + }, + { + "name": "inbound-measurement", + "startedAt": "2026-08-08T05:13:43.758Z", + "finishedAt": "2026-08-08T05:13:44.689Z", + "success": true, + "passed": 28, + "failed": 0, + "fatal": null + } + ], + "scenarios": [ + { + "name": "weight-image-recognition-and-confirmation", + "module": "inbound-weight-ocr", + "success": true, + "deploymentBlocked": false, + "passed": 52, + "failed": 0 + }, + { + "name": "mojia-carton-measurement", + "module": "inbound-measurement", + "success": true, + "deploymentBlocked": false, + "passed": 28, + "failed": 0 + } + ], + "deploymentBlockers": [], + "createdResources": { + "orders": { + "marker": "ADMIN-API-20260808051332009", + "tenantId": "10001", + "orderId": "2085957560755093506", + "productImageFileId": "2085957560385994753", + "boxTypes": [ + "SMALL", + "MEDIUM", + "LARGE", + "EXTRA_LARGE" + ], + "inboundId": "2085957565123440642", + "orderNo": "FL2085957560755093506", + "inboundCode": "RK-2085957560755093506", + "processStatus": "WAIT_MEASURE", + "taskId": "2085957565119246337" + }, + "ocrInbound": { + "tenantId": "10001", + "inboundId": "2085957565123440642", + "marker": "ADMIN-API-20260808051332009" + }, + "testInbound": { + "tenantId": "10001", + "inboundId": "2085957565123440642", + "marker": "ADMIN-API-20260808051332009" + }, + "inboundWeightOcr": { + "tenantId": "10001", + "inboundId": "2085957565123440642", + "resultIds": [ + "2085957580050968577", + "2085957588972253186" + ], + "cleaned": true + }, + "orchestrationFixtures": { + "inboundMeasurement": { + "marker": "ADMIN-API-20260808051332009-MOJIA", + "tenantId": "10001", + "orderId": "2085957593764265986", + "inboundId": "2085957602972839938" + } + }, + "inboundMeasurement": { + "marker": "ADMIN-API-20260808051332009-MOJIA", + "tenantId": "10001", + "inboundId": "2085957602972839938", + "measurementId": "2085957607330721794", + "boxCode": "RK-2085957593764265986#4-1", + "finalStatus": "APPROVED" + } + }, + "excluded": [ + { + "scope": "dashboard", + "reason": "首页为静态演示数据,不调用后端 API" + }, + { + "scope": "hidden-prototypes", + "reason": "隐藏原型页面尚无已确认后端契约" + } + ], + "securityNote": "报告不保存登录密码、Access Token、Refresh Token、图片二进制或 OCR 原文全文。", + "steps": [ + { + "module": "authentication", + "scenario": null, + "name": "平台管理员登录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/auth/login" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "be59a5fe-99ff-487d-b056-902321bb25c3, 7917c2dc-f2fd-43ba-9e83-0c50bb1b192d", + "traceId": "1642f4ee55a8472ca3a8e50156d0384e", + "evidence": "", + "checkedAt": "2026-08-08T05:13:32.425Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 测试账号登录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/auth/login" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ceb0d12c-98bc-490e-a09f-ffab973cdf72, d39a5fab-3ba0-4857-8ba2-82151bc5c17f", + "traceId": "8c26fc8e2f2841f895df6673a151530d", + "evidence": "username=merchant_admin", + "checkedAt": "2026-08-08T05:13:32.777Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询当前企业资料", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/iam/tenant/profile" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "226b43fd-468d-42fb-814d-d12245a2d5fa, 6e02149d-56dc-4036-baaf-513ba637bac7", + "traceId": "d105e2f1e47d484bb25aa4e7722f2b8b", + "evidence": "", + "checkedAt": "2026-08-08T05:13:32.804Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 测试企业已审核且客户 ID 有效", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/iam/tenant/profile" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "226b43fd-468d-42fb-814d-d12245a2d5fa, 6e02149d-56dc-4036-baaf-513ba637bac7", + "traceId": "d105e2f1e47d484bb25aa4e7722f2b8b", + "evidence": "tenantId=10001, status=ACTIVE", + "checkedAt": "2026-08-08T05:13:32.805Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询客户固定箱型", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0f0de554-0e81-4646-96d4-5858bd0ffa3b, bb98f223-0a62-4936-955f-c53aac7b8eb8", + "traceId": "3e73da2bc14b40a5905176c7c3887a29", + "evidence": "tenantId=10001", + "checkedAt": "2026-08-08T05:13:32.847Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "固定四箱型顺序、内径及每边加2cm正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0f0de554-0e81-4646-96d4-5858bd0ffa3b, bb98f223-0a62-4936-955f-c53aac7b8eb8", + "traceId": "3e73da2bc14b40a5905176c7c3887a29", + "evidence": "types=SMALL,MEDIUM,LARGE,EXTRA_LARGE", + "checkedAt": "2026-08-08T05:13:32.848Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询国内收货仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=DOMESTIC" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a04f7bcf-c128-4d45-bbd1-175db6784504, 03bf21b1-d433-4ca4-8bb6-4eb9ad52f4a8", + "traceId": "9aa2106842c447df8d79eda3a692c30d", + "evidence": "", + "checkedAt": "2026-08-08T05:13:32.879Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在可用国内收货仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=DOMESTIC" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a04f7bcf-c128-4d45-bbd1-175db6784504, 03bf21b1-d433-4ca4-8bb6-4eb9ad52f4a8", + "traceId": "9aa2106842c447df8d79eda3a692c30d", + "evidence": "count=2", + "checkedAt": "2026-08-08T05:13:32.879Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询 FBA 目的仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=FBA" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d169de2f-7e86-41fb-83a9-f70ad7970e5f, e3f6ab20-a735-4a8b-bce6-c51f170a10ef", + "traceId": "4b10501f8ee04a78af60c6a5970865ef", + "evidence": "", + "checkedAt": "2026-08-08T05:13:32.932Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在可用 FBA 目的仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=FBA" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d169de2f-7e86-41fb-83a9-f70ad7970e5f, e3f6ab20-a735-4a8b-bce6-c51f170a10ef", + "traceId": "4b10501f8ee04a78af60c6a5970865ef", + "evidence": "count=200", + "checkedAt": "2026-08-08T05:13:32.932Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询可用计费渠道", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/first-leg/pricing/channels?originWarehouseId=193000000000200001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "464bd737-1564-45ed-9e7f-21dc07977012, ed832376-396d-47ef-a003-8322b35c3580", + "traceId": "66fa9c7957934abca79654b49308fb05", + "evidence": "", + "checkedAt": "2026-08-08T05:13:32.982Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在带计价税制的可用渠道", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/first-leg/pricing/channels?originWarehouseId=193000000000200001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "464bd737-1564-45ed-9e7f-21dc07977012, ed832376-396d-47ef-a003-8322b35c3580", + "traceId": "66fa9c7957934abca79654b49308fb05", + "evidence": "count=15", + "checkedAt": "2026-08-08T05:13:32.983Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询发货客户候选", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/partners/candidates?type=SHIPPER" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a6adb73a-fb17-43f2-926e-6fd3729d1043, e08569fb-b1ac-476c-b1b1-eaaad99a802b", + "traceId": "ec32026a21a64fffbd56fec48d10bebe", + "evidence": "", + "checkedAt": "2026-08-08T05:13:33.014Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 上传产品图片", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/files/product-images" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "95fe6226-0427-46c4-b311-fbf2777af4ff, f480faba-d95b-4bc7-a28c-c6dcb0ab850e", + "traceId": "5ab34d2c66ba40c8ba6906e462f1fe30", + "evidence": "contentType=image/png", + "checkedAt": "2026-08-08T05:13:33.050Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "产品图片上传返回字符串文件 ID", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/files/product-images" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "95fe6226-0427-46c4-b311-fbf2777af4ff, f480faba-d95b-4bc7-a28c-c6dcb0ab850e", + "traceId": "5ab34d2c66ba40c8ba6906e462f1fe30", + "evidence": "fileIdType=string, contentType=image/png", + "checkedAt": "2026-08-08T05:13:33.050Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 可下载本轮产品图片", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/files/product-images/2085957560385994753" + }, + "http": 200, + "code": null, + "message": null, + "requestId": "8122b781-ab04-43d2-ab8d-7dbd8266194c, ac8bafc9-5f45-470c-8eeb-523984b308fb", + "traceId": "c2872ce9c79f4503b146ce089d5853cf", + "evidence": "bytes=68, contentType=image/png", + "checkedAt": "2026-08-08T05:13:33.079Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 创建四箱型隔离订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "abbdfdcd-3a6d-4e7d-8be0-9e692c210bb0, 07b9ff66-a96e-4bb7-886f-a9fdae15a72c", + "traceId": "1afceda14515473fb618075728d24cf7", + "evidence": "marker=ADMIN-API-20260808051332009", + "checkedAt": "2026-08-08T05:13:33.148Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 创建订单幂等重放", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0dac885c-d87e-45a0-a04f-1bf5293e06fc, 849c730e-427a-430d-94c0-d4696177eddc", + "traceId": "6173879bb7864560937812d23dd30908", + "evidence": "", + "checkedAt": "2026-08-08T05:13:33.189Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 创建幂等结果一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0dac885c-d87e-45a0-a04f-1bf5293e06fc, 849c730e-427a-430d-94c0-d4696177eddc", + "traceId": "6173879bb7864560937812d23dd30908", + "evidence": "orderId=2085957560755093506, replayedId=2085957560755093506", + "checkedAt": "2026-08-08T05:13:33.189Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询隔离订单草稿", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085957560755093506" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "094a9ff6-2182-45a6-8bb1-8d66228fe1a1, 1382e7f7-89cf-4e6a-b99a-4a001fd50488", + "traceId": "4a266b3c35304968827ff370e525ec81", + "evidence": "", + "checkedAt": "2026-08-08T05:13:33.216Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 草稿身份、marker 和状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085957560755093506" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "094a9ff6-2182-45a6-8bb1-8d66228fe1a1, 1382e7f7-89cf-4e6a-b99a-4a001fd50488", + "traceId": "4a266b3c35304968827ff370e525ec81", + "evidence": "orderNo=FL2085957560755093506, status=DRAFT", + "checkedAt": "2026-08-08T05:13:33.216Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "四箱型产品字段及图片契约完整回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085957560755093506" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "094a9ff6-2182-45a6-8bb1-8d66228fe1a1, 1382e7f7-89cf-4e6a-b99a-4a001fd50488", + "traceId": "4a266b3c35304968827ff370e525ec81", + "evidence": "cargoes=4, imageFileId=2085957560385994753", + "checkedAt": "2026-08-08T05:13:33.217Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 提交隔离订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg/2085957560755093506/submit" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ee711776-cde6-4b80-a4f2-bd8264bccfa7, 8c9d7e76-6788-4948-9bc3-6e65bfa47492", + "traceId": "fd6d47940c79492d88a3121628e12d93", + "evidence": "orderId=2085957560755093506", + "checkedAt": "2026-08-08T05:13:33.292Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 回查已提交订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085957560755093506" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d24165ac-8fef-474f-913b-98ccedfe30d5, 2b52523c-b11e-4171-99f7-873351811c0c", + "traceId": "1dbd7861c7e04e2c961184990cd6b20d", + "evidence": "", + "checkedAt": "2026-08-08T05:13:33.325Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 订单已进入待审核状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085957560755093506" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d24165ac-8fef-474f-913b-98ccedfe30d5, 2b52523c-b11e-4171-99f7-873351811c0c", + "traceId": "1dbd7861c7e04e2c961184990cd6b20d", + "evidence": "status=SUBMITTED", + "checkedAt": "2026-08-08T05:13:33.325Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询统一订单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders?page=1&size=100&tenantId=10001&orderNo=FL2085957560755093506" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3f88223d-100e-4fdc-8bda-f81f9fc71803, 03287f23-072e-47ac-8486-c05aef7b575b", + "traceId": "26cfe5bd1a684819a612e83d5140727b", + "evidence": "", + "checkedAt": "2026-08-08T05:13:33.366Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 统一订单列表只核对本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders?page=1&size=100&tenantId=10001&orderNo=FL2085957560755093506" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3f88223d-100e-4fdc-8bda-f81f9fc71803, 03287f23-072e-47ac-8486-c05aef7b575b", + "traceId": "26cfe5bd1a684819a612e83d5140727b", + "evidence": "orderId=2085957560755093506, found=true", + "checkedAt": "2026-08-08T05:13:33.366Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询统一订单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085957560755093506?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c744a6e1-10e9-4747-ad90-c03ad648565f, 18e491d4-36f2-4658-9579-74ab2ed13637", + "traceId": "926be84423554375b56d96f1e5c13df8", + "evidence": "", + "checkedAt": "2026-08-08T05:13:33.412Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 统一订单详情身份与待审核状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085957560755093506?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c744a6e1-10e9-4747-ad90-c03ad648565f, 18e491d4-36f2-4658-9579-74ab2ed13637", + "traceId": "926be84423554375b56d96f1e5c13df8", + "evidence": "mainStatus=PENDING_REVIEW, timeline=2", + "checkedAt": "2026-08-08T05:13:33.412Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询头程订单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg?tenantId=10001&keyword=FL2085957560755093506&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ec71b0c5-ba3d-4bc6-b5f2-83d35c10ee5a, 89c838ac-ac68-4904-9f5b-d98ac9d8a7f5", + "traceId": "3e5c24ec3d0e49b78506b072efa505fd", + "evidence": "", + "checkedAt": "2026-08-08T05:13:33.455Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 头程订单列表只核对本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg?tenantId=10001&keyword=FL2085957560755093506&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ec71b0c5-ba3d-4bc6-b5f2-83d35c10ee5a, 89c838ac-ac68-4904-9f5b-d98ac9d8a7f5", + "traceId": "3e5c24ec3d0e49b78506b072efa505fd", + "evidence": "orderId=2085957560755093506, found=true", + "checkedAt": "2026-08-08T05:13:33.455Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询头程订单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085957560755093506?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b023e5f2-1ed3-4825-8630-4b6b76b050f1, c7eb8f15-9929-4443-a139-a4e7fbe04b43", + "traceId": "aef0a27b2e0346e5afb7faac273272b7", + "evidence": "", + "checkedAt": "2026-08-08T05:13:33.484Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 头程订单详情聚合结构完整", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085957560755093506?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b023e5f2-1ed3-4825-8630-4b6b76b050f1, c7eb8f15-9929-4443-a139-a4e7fbe04b43", + "traceId": "aef0a27b2e0346e5afb7faac273272b7", + "evidence": "cargoes=4, history=2", + "checkedAt": "2026-08-08T05:13:33.484Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "四箱型产品字段及图片契约完整回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085957560755093506?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b023e5f2-1ed3-4825-8630-4b6b76b050f1, c7eb8f15-9929-4443-a139-a4e7fbe04b43", + "traceId": "aef0a27b2e0346e5afb7faac273272b7", + "evidence": "cargoes=4, imageFileId=2085957560385994753", + "checkedAt": "2026-08-08T05:13:33.484Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 为本轮订单添加内部备注", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085957560755093506/internal-notes?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "090baa5d-acb1-4b06-b398-fec91dad6b88, 68e2db03-d5a8-4b13-97e0-3507d6b4dc42", + "traceId": "de2f9f295b454025b350289a1e3fcbdf", + "evidence": "", + "checkedAt": "2026-08-08T05:13:33.517Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 审核通过本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085957560755093506/approve?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "dfbcbec2-1f49-40ac-8a04-bbc6404581b1, d5777497-7358-4faf-862a-b3f97dbf8b9a", + "traceId": "e706f7d8af6e4700b96137e5facc3c23", + "evidence": "orderId=2085957560755093506", + "checkedAt": "2026-08-08T05:13:33.549Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "审核后生成隔离入库单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085957560755093506?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7e3f7248-8796-465a-84f4-78231eb20573, 76717618-3e6c-4332-9ac1-b75c6eaef982", + "traceId": "abb09f11a3e447d9abb3889f5d8d58ca", + "evidence": "inboundId=2085957565123440642", + "checkedAt": "2026-08-08T05:13:34.639Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询本轮入库单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085957565123440642?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "afcee7c1-ad2e-42e8-bbfa-dc946148f00b, a4347c73-dee6-4b66-8fb4-66c22a70e22a", + "traceId": "9099922378014ec5b5be8ecf6dc71f23", + "evidence": "inboundId=2085957565123440642", + "checkedAt": "2026-08-08T05:13:34.675Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "隔离入库单 marker 来源与可测量状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085957565123440642?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "afcee7c1-ad2e-42e8-bbfa-dc946148f00b, a4347c73-dee6-4b66-8fb4-66c22a70e22a", + "traceId": "9099922378014ec5b5be8ecf6dc71f23", + "evidence": "markerFound=true, status=WAIT_MEASURE", + "checkedAt": "2026-08-08T05:13:34.675Z" + }, + { + "module": "orders", + "scenario": null, + "name": "入库单详情包含托盘库位、文件、备注和状态历史", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085957565123440642?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "afcee7c1-ad2e-42e8-bbfa-dc946148f00b, a4347c73-dee6-4b66-8fb4-66c22a70e22a", + "traceId": "9099922378014ec5b5be8ecf6dc71f23", + "evidence": "inboundId=2085957565123440642, history=1", + "checkedAt": "2026-08-08T05:13:34.676Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询入库单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds?tenantId=10001&inboundCode=RK-2085957560755093506&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "063de07c-fbe1-406b-ae32-3c986a527d3e, 9b4bda58-e304-42cf-adc3-58927f312e55", + "traceId": "56396276f14442588e1325aaca0e215f", + "evidence": "", + "checkedAt": "2026-08-08T05:13:34.708Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 入库单列表只核对本轮入库单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds?tenantId=10001&inboundCode=RK-2085957560755093506&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "063de07c-fbe1-406b-ae32-3c986a527d3e, 9b4bda58-e304-42cf-adc3-58927f312e55", + "traceId": "56396276f14442588e1325aaca0e215f", + "evidence": "inboundId=2085957565123440642, total=1", + "checkedAt": "2026-08-08T05:13:34.708Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询本轮订单履约任务", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/by-order/2085957560755093506?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "94602d51-0794-4750-99f5-8415540b7b92, 881b5ae9-31cd-48a0-b79f-bc908e376880", + "traceId": "81274b4286d54c69b6657ca7a4845a3e", + "evidence": "新订单应生成可查询的履约任务", + "checkedAt": "2026-08-08T05:13:34.733Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "履约任务与本轮订单和客户一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/by-order/2085957560755093506?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "94602d51-0794-4750-99f5-8415540b7b92, 881b5ae9-31cd-48a0-b79f-bc908e376880", + "traceId": "81274b4286d54c69b6657ca7a4845a3e", + "evidence": "taskId=2085957565119246337, status=PENDING_ASSIGNMENT", + "checkedAt": "2026-08-08T05:13:34.733Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询本轮履约任务分配历史", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/2085957565119246337/assignment-history?tenantId=10001&page=1&size=20" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "bb2d31b8-dc8e-4e53-9c8a-d5fe9f7f85f4, d86fd35d-d452-48d0-a631-0545fd8ee821", + "traceId": "bb69764f73ba4fb585108e64dd9eb4d6", + "evidence": "", + "checkedAt": "2026-08-08T05:13:34.765Z" + }, + { + "module": "orders", + "scenario": null, + "name": "履约分配历史分页结构正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/2085957565119246337/assignment-history?tenantId=10001&page=1&size=20" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "bb2d31b8-dc8e-4e53-9c8a-d5fe9f7f85f4, d86fd35d-d452-48d0-a631-0545fd8ee821", + "traceId": "bb69764f73ba4fb585108e64dd9eb4d6", + "evidence": "taskId=2085957565119246337, total=0", + "checkedAt": "2026-08-08T05:13:34.765Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 受理本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085957560755093506/accept?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8a7e5c8b-55c1-4ba3-8c99-1db964e3db28, 89fa751c-7ed1-411a-b0bf-0d41b1f1cf7e", + "traceId": "85123954ad574a609b867fc2aa776429", + "evidence": "", + "checkedAt": "2026-08-08T05:13:34.802Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 启动本轮订单履约", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085957560755093506/start?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "52711a95-c43c-4ff3-8895-444e53705be4, 18eb9610-78c7-41f6-adfb-896fdd070721", + "traceId": "7f33529abe6240fbba9e4b322aa7e515", + "evidence": "", + "checkedAt": "2026-08-08T05:13:34.848Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 回查本轮订单履约状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085957560755093506?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "78f7657b-a856-4863-9196-c0b09683141c, a9b5a5e8-89d0-48e8-8942-ab2bc8722fdb", + "traceId": "055fd51f34b1465a8dce364292021d25", + "evidence": "", + "checkedAt": "2026-08-08T05:13:34.890Z" + }, + { + "module": "orders", + "scenario": null, + "name": "本轮订单已进入处理中且保留状态历史", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085957560755093506?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "78f7657b-a856-4863-9196-c0b09683141c, a9b5a5e8-89d0-48e8-8942-ab2bc8722fdb", + "traceId": "055fd51f34b1465a8dce364292021d25", + "evidence": "status=PROCESSING, history=5", + "checkedAt": "2026-08-08T05:13:34.890Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "仅选择带本轮测试标记的可编辑入库单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085957565123440642?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4f57b131-ddbb-46d9-9b6c-9d59ad6f26db, e7e2cb36-b00d-4be6-99f7-1ffcae5fb55f", + "traceId": "c56ffa6ced6d444d8266ade48b6163d2", + "evidence": "tenantId=10001, inboundId=2085957565123440642, status=WAIT_MEASURE", + "checkedAt": "2026-08-08T05:13:34.923Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "读取 OCR 测试前重量工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957565123440642/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7f9dc9b1-39e0-4dff-a947-83f6bdf399db, 8162ebdf-6b3d-4879-8ca0-549620a94006", + "traceId": "283c208d36a44d229a7d08c45f9744ba", + "evidence": "inboundId=2085957565123440642", + "checkedAt": "2026-08-08T05:13:34.968Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "测试入库单身份与基线可追踪", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957565123440642/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7f9dc9b1-39e0-4dff-a947-83f6bdf399db, 8162ebdf-6b3d-4879-8ca0-549620a94006", + "traceId": "283c208d36a44d229a7d08c45f9744ba", + "evidence": "existingResults=0, baselineWeight=null", + "checkedAt": "2026-08-08T05:13:34.968Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "未认证请求不能上传称重图片", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085957565123440642" + }, + "http": 401, + "code": "A0401", + "message": "未登录或令牌已失效", + "requestId": "a76e8b46-659", + "traceId": null, + "evidence": "HTTP=401, code=A0401", + "checkedAt": "2026-08-08T05:13:34.992Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "非图片类型被拒绝且不模拟成功", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085957565123440642" + }, + "http": 200, + "code": "A0400", + "message": "称重图片仅支持JPG、PNG、BMP", + "requestId": "12f616f1-72ad-4670-84ec-1e404edfd2a3", + "traceId": "4e1f40d04e464881aa4f709f66bb6e89", + "evidence": "HTTP=200, code=A0400", + "checkedAt": "2026-08-08T05:13:35.016Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "超过5MB图片被拒绝", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085957565123440642" + }, + "http": 200, + "code": "A0400", + "message": "称重图片不能超过5MB", + "requestId": "6c350f40-c56e-4f07-80ec-2ce894e38bc3", + "traceId": "cfeabaf60cf74760848ee53bffa0be5c", + "evidence": "HTTP=200, code=A0400", + "checkedAt": "2026-08-08T05:13:35.220Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "上传称重图片并执行 OCR", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085957565123440642" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1a1b3bb4-831a-42a7-8dfe-cfca9e440832, 74bcb8f9-99e2-4a73-aa6e-3537cb673c08", + "traceId": "f05f28ad98c94a57a8c62c0d95cc8571", + "evidence": "file=orig_1cf27695-b2c3-44b3-98e3-c0be8b80f79a.JPG, size=3701469", + "checkedAt": "2026-08-08T05:13:36.851Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "上传响应保持文件 ID 字符串契约", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085957565123440642" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1a1b3bb4-831a-42a7-8dfe-cfca9e440832, 74bcb8f9-99e2-4a73-aa6e-3537cb673c08", + "traceId": "f05f28ad98c94a57a8c62c0d95cc8571", + "evidence": "fileIdType=string, status=RECOGNIZED", + "checkedAt": "2026-08-08T05:13:36.851Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "OCR 上传响应字段完整且置信度受限", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085957565123440642" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1a1b3bb4-831a-42a7-8dfe-cfca9e440832, 74bcb8f9-99e2-4a73-aa6e-3537cb673c08", + "traceId": "f05f28ad98c94a57a8c62c0d95cc8571", + "evidence": "status=RECOGNIZED, hasWeight=true, confidence=0.50972", + "checkedAt": "2026-08-08T05:13:36.851Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "重试当前称重图片 OCR", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085957565123440642/2085957572624973826/recognize" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "31d5d189-2a1a-4252-b227-daf28f990b9d, d0ad6bc0-13d9-49f0-a5dd-679a9e68c530", + "traceId": "02168d895ef645a4a74ddcc8e677070e", + "evidence": "fileId=2085957572624973826", + "checkedAt": "2026-08-08T05:13:37.708Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "OCR 重试保持文件身份并返回识别契约", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085957565123440642/2085957572624973826/recognize" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "31d5d189-2a1a-4252-b227-daf28f990b9d, d0ad6bc0-13d9-49f0-a5dd-679a9e68c530", + "traceId": "02168d895ef645a4a74ddcc8e677070e", + "evidence": "sameFile=true, status=RECOGNIZED", + "checkedAt": "2026-08-08T05:13:37.709Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "登记 OCR 原值", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957565123440642/weight-results?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9c650cb4-6494-4835-a664-4f9c16216c7d, 8a10cc0d-0abf-4d1e-a56c-4d43b2e9db73", + "traceId": "9f62db38d29b4e02b607cfe991aa8200", + "evidence": "fileId=2085957572624973826", + "checkedAt": "2026-08-08T05:13:37.740Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "重量结果 ID、文件 ID 和初始版本契约正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957565123440642/weight-results?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9c650cb4-6494-4835-a664-4f9c16216c7d, 8a10cc0d-0abf-4d1e-a56c-4d43b2e9db73", + "traceId": "9f62db38d29b4e02b607cfe991aa8200", + "evidence": "resultIdType=string, fileIdType=string, version=0", + "checkedAt": "2026-08-08T05:13:37.740Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "鉴权读取原始称重图片", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/measurements/10001/2085957565123440642/2085957572624973826" + }, + "http": 200, + "code": null, + "message": "3701469 bytes (image/jpeg)", + "requestId": "687e56ae-c130-4e35-97b4-b95efeae654b, 9c121acf-6010-48d7-9b5d-c46d202d29b6", + "traceId": "ebc6696f92fd4be99e930089f9194319", + "evidence": "contentType=image/jpeg, bytes=3701469", + "checkedAt": "2026-08-08T05:13:37.924Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "缩略图返回受限尺寸 JPEG", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/measurements/10001/2085957565123440642/2085957572624973826/thumbnail" + }, + "http": 200, + "code": null, + "message": "18677 bytes (image/jpeg)", + "requestId": "ecd23aec-4ffa-4e38-87e9-52a249fde1bf, 9d6926fa-13e8-4f21-b1a7-ec09f6823958", + "traceId": "647708c3c98241c489666b83a96cdb0a", + "evidence": "contentType=image/jpeg, bytes=18677, dimensions=240x320", + "checkedAt": "2026-08-08T05:13:38.310Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "登记后回查 OCR 重量结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957565123440642/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4dd01277-fee2-4b9c-a40f-af81dbd87980, e9e39008-5f94-4ac2-8d5c-dfbf9fa2545e", + "traceId": "6ad6c63b89a0498994ecc8b3a9595637", + "evidence": "inboundId=2085957565123440642", + "checkedAt": "2026-08-08T05:13:38.345Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "工作区保留本轮 OCR 原值且未覆盖历史结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957565123440642/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4dd01277-fee2-4b9c-a40f-af81dbd87980, e9e39008-5f94-4ac2-8d5c-dfbf9fa2545e", + "traceId": "6ad6c63b89a0498994ecc8b3a9595637", + "evidence": "resultFound=true, baselineCount=0, currentCount=1", + "checkedAt": "2026-08-08T05:13:38.345Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "旧版本确认返回并发冲突", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957565123440642/weight-results/2085957580050968577/confirm?tenantId=10001" + }, + "http": 200, + "code": "A0409", + "message": "数据版本已变化,请刷新后重试", + "requestId": "46c240df-41b7-41b6-b83e-dadf8186210d", + "traceId": "368c5421d7a6405085eb64ae5565e932", + "evidence": "HTTP=200, code=A0409", + "checkedAt": "2026-08-08T05:13:38.372Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "确认 OCR 重量并计入实际总毛重", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957565123440642/weight-results/2085957580050968577/confirm?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "047210d2-c0ae-40ee-ae18-591bfef2a15b, f9d15f8e-4e5a-48cf-95e6-6a837649e281", + "traceId": "ea1d380eea324c419aacf34140bc7366", + "evidence": "usedOriginal=true", + "checkedAt": "2026-08-08T05:13:38.409Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "确认结果状态、版本和最终KG正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957565123440642/weight-results/2085957580050968577/confirm?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "047210d2-c0ae-40ee-ae18-591bfef2a15b, f9d15f8e-4e5a-48cf-95e6-6a837649e281", + "traceId": "ea1d380eea324c419aacf34140bc7366", + "evidence": "status=CONFIRMED, version=1, finalKg=285.5", + "checkedAt": "2026-08-08T05:13:38.409Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "确认后回查实际总毛重", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957565123440642/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0fec11af-23d3-4698-884d-ce312126f52a, 3c82b51b-9b38-4dca-8e8a-b9183a72bd47", + "traceId": "316a945fce6e4ff481fe27b8bf03e560", + "evidence": "inboundId=2085957565123440642", + "checkedAt": "2026-08-08T05:13:38.449Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "确认后实际总毛重按服务端结果重算", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957565123440642/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0fec11af-23d3-4698-884d-ce312126f52a, 3c82b51b-9b38-4dca-8e8a-b9183a72bd47", + "traceId": "316a945fce6e4ff481fe27b8bf03e560", + "evidence": "baseline=null, added=285.5, actual=285.5", + "checkedAt": "2026-08-08T05:13:38.449Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "旧版本删除返回并发冲突", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "DELETE", + "path": "/api/platform/v1/first-leg/inbounds/2085957565123440642/weight-results/2085957580050968577?tenantId=10001&version=0" + }, + "http": 200, + "code": "A0409", + "message": "数据版本已变化,请刷新后重试", + "requestId": "4cfc8510-222f-4bc6-8ee1-2620e4c0081d", + "traceId": "01f3c30dc9fc451f992bf6cdf59516de", + "evidence": "HTTP=200, code=A0409", + "checkedAt": "2026-08-08T05:13:38.474Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除本轮已确认图片及重量结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "DELETE", + "path": "/api/platform/v1/first-leg/inbounds/2085957565123440642/weight-results/2085957580050968577?tenantId=10001&version=1" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0e654a77-cf0d-4e6b-afbb-f65ecc41747d, 6c89261d-845d-4461-ae8d-8184d09ad1c0", + "traceId": "d4368300c13b44a7adba152ede7899c7", + "evidence": "resultId=2085957580050968577, version=1", + "checkedAt": "2026-08-08T05:13:38.529Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除后回查重量工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957565123440642/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ecb12c7e-39ea-464a-ba6e-5b900db0fffc, 1090e027-60a0-480c-8288-0eee279db0f6", + "traceId": "b370a5b7a90844fb9e9f2a0680114c2e", + "evidence": "inboundId=2085957565123440642", + "checkedAt": "2026-08-08T05:13:38.557Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除后结果消失且总毛重恢复基线", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957565123440642/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ecb12c7e-39ea-464a-ba6e-5b900db0fffc, 1090e027-60a0-480c-8288-0eee279db0f6", + "traceId": "b370a5b7a90844fb9e9f2a0680114c2e", + "evidence": "resultMissing=true, baseline=null, actual=null", + "checkedAt": "2026-08-08T05:13:38.557Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除结果后原始图片不可再读取", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/measurements/10001/2085957565123440642/2085957572624973826" + }, + "http": 200, + "code": "A0404", + "message": "称重图片不存在", + "requestId": "db17670a-e183-491f-889e-be6e40b0b3d3", + "traceId": "30d3a8676aba406391843034cae7c735", + "evidence": "HTTP=200, code=A0404", + "checkedAt": "2026-08-08T05:13:38.586Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "上传称重图片并执行 OCR", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085957565123440642" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9be09ff1-6811-412d-9ca2-480d1b485964, 544fa81c-6322-4427-9744-6b276d68db70", + "traceId": "93b66934755c4dc488942c4a332dc0a5", + "evidence": "file=orig_1cf27695-b2c3-44b3-98e3-c0be8b80f79a.JPG, size=3701469", + "checkedAt": "2026-08-08T05:13:39.837Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "上传响应保持文件 ID 字符串契约", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085957565123440642" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9be09ff1-6811-412d-9ca2-480d1b485964, 544fa81c-6322-4427-9744-6b276d68db70", + "traceId": "93b66934755c4dc488942c4a332dc0a5", + "evidence": "fileIdType=string, status=RECOGNIZED", + "checkedAt": "2026-08-08T05:13:39.837Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "OCR 上传响应字段完整且置信度受限", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085957565123440642" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9be09ff1-6811-412d-9ca2-480d1b485964, 544fa81c-6322-4427-9744-6b276d68db70", + "traceId": "93b66934755c4dc488942c4a332dc0a5", + "evidence": "status=RECOGNIZED, hasWeight=true, confidence=0.50972", + "checkedAt": "2026-08-08T05:13:39.837Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "登记人工录入重量结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957565123440642/weight-results?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "26d65ee5-eb7b-46de-8a5f-d106cfdcb718, 25eccc55-4987-407e-bca7-e34391b100e6", + "traceId": "0a797dcca3be41228cda47e6c4fcdfba", + "evidence": "fileId=2085957585438572545", + "checkedAt": "2026-08-08T05:13:39.866Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "重量结果 ID、文件 ID 和初始版本契约正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957565123440642/weight-results?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "26d65ee5-eb7b-46de-8a5f-d106cfdcb718, 25eccc55-4987-407e-bca7-e34391b100e6", + "traceId": "0a797dcca3be41228cda47e6c4fcdfba", + "evidence": "resultIdType=string, fileIdType=string, version=0", + "checkedAt": "2026-08-08T05:13:39.866Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "零重量确认被拒绝", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957565123440642/weight-results/2085957588972253186/confirm?tenantId=10001" + }, + "http": 200, + "code": "A0422", + "message": "adjustedWeightValue: must be greater than or equal to 0.001", + "requestId": "8339f2ac-22fa-411e-80bd-9d07be64278a", + "traceId": "6baa9080d9524ef0bc3054b1f0e308ce", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T05:13:39.904Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "零重量确认被拒绝后回查工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957565123440642/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "440c6327-2cf2-473a-b310-e7a0b3fde7cf, 21e919c0-5d56-4225-a69c-37dac4b6a3ed", + "traceId": "9ee7ce706f8e46aa8e4c7b0c00a2a4ca", + "evidence": "inboundId=2085957565123440642", + "checkedAt": "2026-08-08T05:13:39.942Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "零重量确认被拒绝未改变重量结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957565123440642/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "440c6327-2cf2-473a-b310-e7a0b3fde7cf, 21e919c0-5d56-4225-a69c-37dac4b6a3ed", + "traceId": "9ee7ce706f8e46aa8e4c7b0c00a2a4ca", + "evidence": "version=0, status=NEEDS_MANUAL", + "checkedAt": "2026-08-08T05:13:39.942Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "负重量确认被拒绝", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957565123440642/weight-results/2085957588972253186/confirm?tenantId=10001" + }, + "http": 200, + "code": "A0422", + "message": "adjustedWeightValue: must be greater than or equal to 0.001", + "requestId": "b887e890-ff69-4acf-bbfb-58e2a8a620a4", + "traceId": "3562227738994077b9b1f842a9facc77", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T05:13:39.975Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "负重量确认被拒绝后回查工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957565123440642/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5e158041-14dd-4705-9428-eed714778737, 968a268a-f43d-45b9-ba1c-4065c990c1b8", + "traceId": "f078c03cf45d4bf3b3202e5d2aaed508", + "evidence": "inboundId=2085957565123440642", + "checkedAt": "2026-08-08T05:13:40.002Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "负重量确认被拒绝未改变重量结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957565123440642/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5e158041-14dd-4705-9428-eed714778737, 968a268a-f43d-45b9-ba1c-4065c990c1b8", + "traceId": "f078c03cf45d4bf3b3202e5d2aaed508", + "evidence": "version=0, status=NEEDS_MANUAL", + "checkedAt": "2026-08-08T05:13:40.002Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "LB 0.001换算为零后被拒绝", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957565123440642/weight-results/2085957588972253186/confirm?tenantId=10001" + }, + "http": 200, + "code": "A0422", + "message": "换算后重量不能小于 0.001 KG", + "requestId": "8dc165f5-76f9-4d48-85f9-59695a900b83", + "traceId": "651bb7c78d8044bda950ac5ddfdc5669", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T05:13:40.036Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "LB 0.001换算为零后被拒绝后回查工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957565123440642/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ffc0fd3b-77b1-4bf5-8523-77047975dc5f, c0c227d4-ee0f-421a-8975-03b3ce6253c4", + "traceId": "f2af87b872c744d38c20a75be953b686", + "evidence": "inboundId=2085957565123440642", + "checkedAt": "2026-08-08T05:13:40.064Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "LB 0.001换算为零后被拒绝未改变重量结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957565123440642/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ffc0fd3b-77b1-4bf5-8523-77047975dc5f, c0c227d4-ee0f-421a-8975-03b3ce6253c4", + "traceId": "f2af87b872c744d38c20a75be953b686", + "evidence": "version=0, status=NEEDS_MANUAL", + "checkedAt": "2026-08-08T05:13:40.064Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "超出15位整数重量被拒绝", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957565123440642/weight-results/2085957588972253186/confirm?tenantId=10001" + }, + "http": 200, + "code": "A0422", + "message": "adjustedWeightValue: numeric value out of bounds (<15 digits>.<3 digits> expected)", + "requestId": "9bd078e7-5c52-4603-b18c-6d7e058debce", + "traceId": "a86df937b7f0473cae5b24c513e3eb58", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T05:13:40.092Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "超出15位整数重量被拒绝后回查工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957565123440642/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "af8fd7f6-98a1-40a1-9748-ed938b9f6179, e8136b61-6799-41f4-811c-5de3f8fbd3a8", + "traceId": "82d244d149b2430086d677394918477a", + "evidence": "inboundId=2085957565123440642", + "checkedAt": "2026-08-08T05:13:40.126Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "超出15位整数重量被拒绝未改变重量结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957565123440642/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "af8fd7f6-98a1-40a1-9748-ed938b9f6179, e8136b61-6799-41f4-811c-5de3f8fbd3a8", + "traceId": "82d244d149b2430086d677394918477a", + "evidence": "version=0, status=NEEDS_MANUAL", + "checkedAt": "2026-08-08T05:13:40.126Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "人工改重与确认原子完成", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957565123440642/weight-results/2085957588972253186/confirm?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e4d04a67-3249-4af2-8380-7668b977cbd0, 913fc32a-8d32-4cff-8b84-58438cd4ca68", + "traceId": "c3e950badb6d4ee2a4fd6c3a3621a182", + "evidence": "adjusted=10.125 LB", + "checkedAt": "2026-08-08T05:13:40.171Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "LB 人工改重保留输入并正确换算最终KG", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957565123440642/weight-results/2085957588972253186/confirm?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e4d04a67-3249-4af2-8380-7668b977cbd0, 913fc32a-8d32-4cff-8b84-58438cd4ca68", + "traceId": "c3e950badb6d4ee2a4fd6c3a3621a182", + "evidence": "adjusted=10.125 LB, finalKg=4.593, expectedKg=4.593", + "checkedAt": "2026-08-08T05:13:40.171Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除本轮人工改重图片及结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "DELETE", + "path": "/api/platform/v1/first-leg/inbounds/2085957565123440642/weight-results/2085957588972253186?tenantId=10001&version=2" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b6f1528e-cd3f-4aac-9005-1a612274f056, bd4cbacf-7f96-43fb-864f-7b847189b143", + "traceId": "7630e449fb8c4ae3acd0ab443d5a71e4", + "evidence": "resultId=2085957588972253186, version=2", + "checkedAt": "2026-08-08T05:13:40.220Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除后回查重量工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957565123440642/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7be70544-36bb-44ef-9c6f-0dadabff34e3, 8730e3f3-2b5c-4ca1-b679-72acfe7520dd", + "traceId": "e3fa9f3dd9b44f8fb3ef3fc4c3fe5a7b", + "evidence": "inboundId=2085957565123440642", + "checkedAt": "2026-08-08T05:13:40.243Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除后结果消失且总毛重恢复基线", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957565123440642/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7be70544-36bb-44ef-9c6f-0dadabff34e3, 8730e3f3-2b5c-4ca1-b679-72acfe7520dd", + "traceId": "e3fa9f3dd9b44f8fb3ef3fc4c3fe5a7b", + "evidence": "resultMissing=true, baseline=null, actual=null", + "checkedAt": "2026-08-08T05:13:40.243Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除结果后原始图片不可再读取", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/measurements/10001/2085957565123440642/2085957585438572545" + }, + "http": 200, + "code": "A0404", + "message": "称重图片不存在", + "requestId": "a4348650-2d02-4261-b427-bfadb3ec9e25", + "traceId": "572803e7d6334c76826af2c603ef7677", + "evidence": "HTTP=200, code=A0404", + "checkedAt": "2026-08-08T05:13:40.279Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "最终清理后回查重量工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957565123440642/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "646c80f8-b566-4365-a6d0-2dce000664fc, c89935d3-6d75-4431-b4eb-dacc4f00185b", + "traceId": "80380439b43b48af8ae472b31de37d27", + "evidence": "inboundId=2085957565123440642", + "checkedAt": "2026-08-08T05:13:40.310Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "仅清理本轮结果且订单总毛重恢复运行前基线", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957565123440642/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "646c80f8-b566-4365-a6d0-2dce000664fc, c89935d3-6d75-4431-b4eb-dacc4f00185b", + "traceId": "80380439b43b48af8ae472b31de37d27", + "evidence": "leftovers=0, baseline=null, actual=null", + "checkedAt": "2026-08-08T05:13:40.310Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 测试账号登录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/auth/login" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e163e383-c5d3-4e47-85dc-88690b1bb78f, 909a06ca-da07-4693-9737-b49ea341ff53", + "traceId": "65e12612b1014620be57e8f8cc432495", + "evidence": "username=merchant_admin", + "checkedAt": "2026-08-08T05:13:40.645Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询当前企业资料", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/iam/tenant/profile" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "95a977c7-e666-4f77-9393-c01a8f1517e3, e61c561a-d16f-4996-8c6d-05ed1df6c46c", + "traceId": "5a854e8beb234eb9ad182d3fb88dc64e", + "evidence": "", + "checkedAt": "2026-08-08T05:13:40.681Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 测试企业已审核且客户 ID 有效", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/iam/tenant/profile" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "95a977c7-e666-4f77-9393-c01a8f1517e3, e61c561a-d16f-4996-8c6d-05ed1df6c46c", + "traceId": "5a854e8beb234eb9ad182d3fb88dc64e", + "evidence": "tenantId=10001, status=ACTIVE", + "checkedAt": "2026-08-08T05:13:40.681Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询客户固定箱型", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f61d21e3-8023-47cf-b0aa-2b445b6d3b38, 323bd3bc-57d5-46c1-922b-6d3cf40a48b1", + "traceId": "1dab5b913c7e47f298ded011bee168be", + "evidence": "tenantId=10001", + "checkedAt": "2026-08-08T05:13:40.706Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "固定四箱型顺序、内径及每边加2cm正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f61d21e3-8023-47cf-b0aa-2b445b6d3b38, 323bd3bc-57d5-46c1-922b-6d3cf40a48b1", + "traceId": "1dab5b913c7e47f298ded011bee168be", + "evidence": "types=SMALL,MEDIUM,LARGE,EXTRA_LARGE", + "checkedAt": "2026-08-08T05:13:40.706Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询国内收货仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=DOMESTIC" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5edded5a-0b21-4124-af43-7023f9385fad, 02830ccd-de2b-46a8-901e-930b43c0d019", + "traceId": "f0090d5e902c47eaaa4779210297d542", + "evidence": "", + "checkedAt": "2026-08-08T05:13:40.754Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在可用国内收货仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=DOMESTIC" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5edded5a-0b21-4124-af43-7023f9385fad, 02830ccd-de2b-46a8-901e-930b43c0d019", + "traceId": "f0090d5e902c47eaaa4779210297d542", + "evidence": "count=2", + "checkedAt": "2026-08-08T05:13:40.754Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询 FBA 目的仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=FBA" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2c370ad9-1688-4b1a-bc01-25f10c536212, efad37ca-ca64-4c04-a7e1-498af91e7242", + "traceId": "35b20d0610a74f1689161666c7719cb5", + "evidence": "", + "checkedAt": "2026-08-08T05:13:40.826Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在可用 FBA 目的仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=FBA" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2c370ad9-1688-4b1a-bc01-25f10c536212, efad37ca-ca64-4c04-a7e1-498af91e7242", + "traceId": "35b20d0610a74f1689161666c7719cb5", + "evidence": "count=200", + "checkedAt": "2026-08-08T05:13:40.826Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询可用计费渠道", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/first-leg/pricing/channels?originWarehouseId=193000000000200001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "794b260a-bec0-4346-9b92-36f9852c6dfd, 42f8345d-744e-4448-881d-cf9035059e51", + "traceId": "d8301d6cd02c403bad2b42020695e18d", + "evidence": "", + "checkedAt": "2026-08-08T05:13:40.856Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在带计价税制的可用渠道", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/first-leg/pricing/channels?originWarehouseId=193000000000200001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "794b260a-bec0-4346-9b92-36f9852c6dfd, 42f8345d-744e-4448-881d-cf9035059e51", + "traceId": "d8301d6cd02c403bad2b42020695e18d", + "evidence": "count=15", + "checkedAt": "2026-08-08T05:13:40.857Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询发货客户候选", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/partners/candidates?type=SHIPPER" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d210145d-3ec5-4840-92ac-84ebad0e3d16, 11f3d76b-70d5-4b05-89a3-8c12c79109f7", + "traceId": "43a6a3b7d825463c91f2dc66740de549", + "evidence": "", + "checkedAt": "2026-08-08T05:13:40.887Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 上传产品图片", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/files/product-images" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f25aff7c-8493-4cd8-94da-07f2b519ff1a, b63d0494-a3da-4c8a-b69e-396afa8855dc", + "traceId": "348fb2ab8fab484984666c6f2450eabd", + "evidence": "contentType=image/png", + "checkedAt": "2026-08-08T05:13:40.915Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "产品图片上传返回字符串文件 ID", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/files/product-images" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f25aff7c-8493-4cd8-94da-07f2b519ff1a, b63d0494-a3da-4c8a-b69e-396afa8855dc", + "traceId": "348fb2ab8fab484984666c6f2450eabd", + "evidence": "fileIdType=string, contentType=image/png", + "checkedAt": "2026-08-08T05:13:40.915Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 可下载本轮产品图片", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/files/product-images/2085957593370001409" + }, + "http": 200, + "code": null, + "message": null, + "requestId": "98ada170-c808-412c-bc8d-829a513e10cb, 3df842ef-ec04-4081-83cf-b77f1042dba4", + "traceId": "ebc4afe2b1194767bbf00f172ee0d016", + "evidence": "bytes=68, contentType=image/png", + "checkedAt": "2026-08-08T05:13:40.944Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 创建四箱型隔离订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f6fe94a4-646b-4f87-8b82-db7da1a5b04c, b51bfd43-1f9e-440f-91be-4f9961ca5ac5", + "traceId": "a871f22fd8a94503a67893ef035c8b29", + "evidence": "marker=ADMIN-API-20260808051332009-MOJIA", + "checkedAt": "2026-08-08T05:13:41.015Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 创建订单幂等重放", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7e7c57fd-4558-43e0-999b-dcd6f8836ae1, 9f665323-f1d2-4933-93cb-51aea9f05eac", + "traceId": "f34d14d0a5e745eba4ba32dce57c0e4c", + "evidence": "", + "checkedAt": "2026-08-08T05:13:41.041Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 创建幂等结果一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7e7c57fd-4558-43e0-999b-dcd6f8836ae1, 9f665323-f1d2-4933-93cb-51aea9f05eac", + "traceId": "f34d14d0a5e745eba4ba32dce57c0e4c", + "evidence": "orderId=2085957593764265986, replayedId=2085957593764265986", + "checkedAt": "2026-08-08T05:13:41.041Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询隔离订单草稿", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085957593764265986" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c0e62da0-2e00-4793-9a9b-b7141432c475, f7c91aaf-48b4-422b-862f-666ebc76d837", + "traceId": "03ba19e6f01c4ec1ac820f1fea93ed3a", + "evidence": "", + "checkedAt": "2026-08-08T05:13:41.069Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 草稿身份、marker 和状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085957593764265986" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c0e62da0-2e00-4793-9a9b-b7141432c475, f7c91aaf-48b4-422b-862f-666ebc76d837", + "traceId": "03ba19e6f01c4ec1ac820f1fea93ed3a", + "evidence": "orderNo=FL2085957593764265986, status=DRAFT", + "checkedAt": "2026-08-08T05:13:41.069Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "四箱型产品字段及图片契约完整回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085957593764265986" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c0e62da0-2e00-4793-9a9b-b7141432c475, f7c91aaf-48b4-422b-862f-666ebc76d837", + "traceId": "03ba19e6f01c4ec1ac820f1fea93ed3a", + "evidence": "cargoes=4, imageFileId=2085957593370001409", + "checkedAt": "2026-08-08T05:13:41.069Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 提交隔离订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg/2085957593764265986/submit" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5e1e78f3-26d4-4fe1-b08a-60e351d176ef, 3bf9b381-4498-4e45-a4c8-faf0d695ca4f", + "traceId": "ce955d98160c45078b987f010cc88d2c", + "evidence": "orderId=2085957593764265986", + "checkedAt": "2026-08-08T05:13:41.137Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 回查已提交订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085957593764265986" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9e822e71-1ef0-4ed2-84b0-8f4314142f2a, 3c52d0e8-9f9d-4b20-be5d-5c625cc4b235", + "traceId": "1c382e3d00514ff4b8874f17bd0be43c", + "evidence": "", + "checkedAt": "2026-08-08T05:13:41.162Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 订单已进入待审核状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085957593764265986" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9e822e71-1ef0-4ed2-84b0-8f4314142f2a, 3c52d0e8-9f9d-4b20-be5d-5c625cc4b235", + "traceId": "1c382e3d00514ff4b8874f17bd0be43c", + "evidence": "status=SUBMITTED", + "checkedAt": "2026-08-08T05:13:41.162Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询统一订单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders?page=1&size=100&tenantId=10001&orderNo=FL2085957593764265986" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f0a11c2a-648e-4663-969e-0b8157795934, 6a319257-66dd-4a92-bffb-a28f75c7b694", + "traceId": "1c8b16516a1a47ba9e86c4ba5f74c02b", + "evidence": "", + "checkedAt": "2026-08-08T05:13:41.204Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 统一订单列表只核对本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders?page=1&size=100&tenantId=10001&orderNo=FL2085957593764265986" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f0a11c2a-648e-4663-969e-0b8157795934, 6a319257-66dd-4a92-bffb-a28f75c7b694", + "traceId": "1c8b16516a1a47ba9e86c4ba5f74c02b", + "evidence": "orderId=2085957593764265986, found=true", + "checkedAt": "2026-08-08T05:13:41.205Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询统一订单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085957593764265986?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c1dcb048-4af7-445c-b1c3-ca15c0a1d8e8, 03bd7029-86f0-4b4c-b0ed-0978d388a6d3", + "traceId": "0af8394066d843c28fc2363a3f25b752", + "evidence": "", + "checkedAt": "2026-08-08T05:13:41.229Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 统一订单详情身份与待审核状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085957593764265986?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c1dcb048-4af7-445c-b1c3-ca15c0a1d8e8, 03bd7029-86f0-4b4c-b0ed-0978d388a6d3", + "traceId": "0af8394066d843c28fc2363a3f25b752", + "evidence": "mainStatus=PENDING_REVIEW, timeline=2", + "checkedAt": "2026-08-08T05:13:41.229Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询头程订单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg?tenantId=10001&keyword=FL2085957593764265986&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b4ce9ddc-d971-4482-af48-4c9cf1992139, c03518aa-17c6-4ae0-a16f-bb8d3b6ed947", + "traceId": "2d5746567b77494c9187dec7d2b5e364", + "evidence": "", + "checkedAt": "2026-08-08T05:13:41.260Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 头程订单列表只核对本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg?tenantId=10001&keyword=FL2085957593764265986&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b4ce9ddc-d971-4482-af48-4c9cf1992139, c03518aa-17c6-4ae0-a16f-bb8d3b6ed947", + "traceId": "2d5746567b77494c9187dec7d2b5e364", + "evidence": "orderId=2085957593764265986, found=true", + "checkedAt": "2026-08-08T05:13:41.260Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询头程订单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085957593764265986?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "dcb97d6c-9063-42e1-8495-c7a7413f6f59, 531f35f6-23fd-47e9-9a51-65558511f744", + "traceId": "a9f2b528262a4bdb99d55c324b63e6c4", + "evidence": "", + "checkedAt": "2026-08-08T05:13:41.289Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 头程订单详情聚合结构完整", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085957593764265986?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "dcb97d6c-9063-42e1-8495-c7a7413f6f59, 531f35f6-23fd-47e9-9a51-65558511f744", + "traceId": "a9f2b528262a4bdb99d55c324b63e6c4", + "evidence": "cargoes=4, history=2", + "checkedAt": "2026-08-08T05:13:41.289Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "四箱型产品字段及图片契约完整回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085957593764265986?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "dcb97d6c-9063-42e1-8495-c7a7413f6f59, 531f35f6-23fd-47e9-9a51-65558511f744", + "traceId": "a9f2b528262a4bdb99d55c324b63e6c4", + "evidence": "cargoes=4, imageFileId=2085957593370001409", + "checkedAt": "2026-08-08T05:13:41.289Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 为本轮订单添加内部备注", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085957593764265986/internal-notes?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "19faf9a2-252e-4d08-a83a-b1f1e323982b, 9526050a-54d5-4168-9945-f2f940744950", + "traceId": "e30d2c16bf0c4f999f7776c3661b0012", + "evidence": "", + "checkedAt": "2026-08-08T05:13:41.323Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 审核通过本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085957593764265986/approve?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2ec2bd32-1a98-457d-8195-663c8f0c739f, 4985c388-38fc-493f-8fd2-1f3fa4bbe4ea", + "traceId": "2d041ce94157490aa70c83f29da2caec", + "evidence": "orderId=2085957593764265986", + "checkedAt": "2026-08-08T05:13:41.360Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "审核后生成隔离入库单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085957593764265986?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "522deeb3-3b7e-45bf-a00c-b6493bc0cbca, 7454ce2c-4ae2-40aa-b15e-ecb6397bef74", + "traceId": "873b5bcf8b714b9999a5b7e483bafff9", + "evidence": "inboundId=2085957602972839938", + "checkedAt": "2026-08-08T05:13:43.511Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询本轮入库单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085957602972839938?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f099767c-37bf-4deb-adbb-d3de3bb6d37c, 48740f33-b665-4603-82e2-fc9e3c3041af", + "traceId": "f7b8dfe3c5f440a1984f9e0c480757e5", + "evidence": "inboundId=2085957602972839938", + "checkedAt": "2026-08-08T05:13:43.546Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "隔离入库单 marker 来源与可测量状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085957602972839938?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f099767c-37bf-4deb-adbb-d3de3bb6d37c, 48740f33-b665-4603-82e2-fc9e3c3041af", + "traceId": "f7b8dfe3c5f440a1984f9e0c480757e5", + "evidence": "markerFound=true, status=WAIT_MEASURE", + "checkedAt": "2026-08-08T05:13:43.546Z" + }, + { + "module": "orders", + "scenario": null, + "name": "入库单详情包含托盘库位、文件、备注和状态历史", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085957602972839938?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f099767c-37bf-4deb-adbb-d3de3bb6d37c, 48740f33-b665-4603-82e2-fc9e3c3041af", + "traceId": "f7b8dfe3c5f440a1984f9e0c480757e5", + "evidence": "inboundId=2085957602972839938, history=1", + "checkedAt": "2026-08-08T05:13:43.546Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询入库单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds?tenantId=10001&inboundCode=RK-2085957593764265986&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "19992f79-3f6f-41c3-bef2-fb11d2643e1d, 4f0b88a2-affd-4f7c-9772-d00f75c2b825", + "traceId": "27e6f0b4f6be4eaa8e6b6b3d130a8573", + "evidence": "", + "checkedAt": "2026-08-08T05:13:43.577Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 入库单列表只核对本轮入库单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds?tenantId=10001&inboundCode=RK-2085957593764265986&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "19992f79-3f6f-41c3-bef2-fb11d2643e1d, 4f0b88a2-affd-4f7c-9772-d00f75c2b825", + "traceId": "27e6f0b4f6be4eaa8e6b6b3d130a8573", + "evidence": "inboundId=2085957602972839938, total=1", + "checkedAt": "2026-08-08T05:13:43.577Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询本轮订单履约任务", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/by-order/2085957593764265986?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8e927937-8d23-438c-98f6-a1c17693d8c3, 04dda5b8-bda4-4ac0-98cb-afea0c285bcc", + "traceId": "7c1f2d968f8b47919ae60f6e1d7887f5", + "evidence": "新订单应生成可查询的履约任务", + "checkedAt": "2026-08-08T05:13:43.601Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "履约任务与本轮订单和客户一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/by-order/2085957593764265986?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8e927937-8d23-438c-98f6-a1c17693d8c3, 04dda5b8-bda4-4ac0-98cb-afea0c285bcc", + "traceId": "7c1f2d968f8b47919ae60f6e1d7887f5", + "evidence": "taskId=2085957602964451330, status=PENDING_ASSIGNMENT", + "checkedAt": "2026-08-08T05:13:43.601Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询本轮履约任务分配历史", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/2085957602964451330/assignment-history?tenantId=10001&page=1&size=20" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "adf52597-3337-4731-a772-8060e9ed7040, a1229aba-6b08-442f-b9cb-6c25254f9073", + "traceId": "6d9ad0cf695549f3bbee06ab99291213", + "evidence": "", + "checkedAt": "2026-08-08T05:13:43.642Z" + }, + { + "module": "orders", + "scenario": null, + "name": "履约分配历史分页结构正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/2085957602964451330/assignment-history?tenantId=10001&page=1&size=20" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "adf52597-3337-4731-a772-8060e9ed7040, a1229aba-6b08-442f-b9cb-6c25254f9073", + "traceId": "6d9ad0cf695549f3bbee06ab99291213", + "evidence": "taskId=2085957602964451330, total=0", + "checkedAt": "2026-08-08T05:13:43.643Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 受理本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085957593764265986/accept?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2a263f42-d9ef-454c-aac1-9161a7216860, 37a58bf1-5553-48e9-9a9e-704c4e8dabde", + "traceId": "460820f9c9284fbe9b9ebdaed83e1086", + "evidence": "", + "checkedAt": "2026-08-08T05:13:43.689Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 启动本轮订单履约", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085957593764265986/start?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2b6be669-11ad-4220-9601-6867dd8d912c, 7f23dd17-1f4e-4faf-9342-3e177c85d3b8", + "traceId": "db998a8ddde94ed893059bef61efc77f", + "evidence": "", + "checkedAt": "2026-08-08T05:13:43.732Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 回查本轮订单履约状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085957593764265986?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "03598740-f365-44e4-9cd9-b772aa860204, 9e307893-9104-4f68-a739-763267a396e6", + "traceId": "03abf185220443d9af756516f8ead37b", + "evidence": "", + "checkedAt": "2026-08-08T05:13:43.757Z" + }, + { + "module": "orders", + "scenario": null, + "name": "本轮订单已进入处理中且保留状态历史", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085957593764265986?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "03598740-f365-44e4-9cd9-b772aa860204, 9e307893-9104-4f68-a739-763267a396e6", + "traceId": "03abf185220443d9af756516f8ead37b", + "evidence": "status=PROCESSING, history=5", + "checkedAt": "2026-08-08T05:13:43.757Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "查询隔离入库单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085957602972839938?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9f6e550e-7f95-45fb-abda-73b8b13086c9, 9b781166-675d-434b-b13c-e43cc70411af", + "traceId": "ad3359c1d96342e696e8ddbc1d877ff5", + "evidence": "inboundId=2085957602972839938, tenantId=10001", + "checkedAt": "2026-08-08T05:13:43.791Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "隔离入库单身份与可测量状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085957602972839938?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9f6e550e-7f95-45fb-abda-73b8b13086c9, 9b781166-675d-434b-b13c-e43cc70411af", + "traceId": "ad3359c1d96342e696e8ddbc1d877ff5", + "evidence": "identity=true, status=WAIT_MEASURE", + "checkedAt": "2026-08-08T05:13:43.791Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "生成箱唛 PDF 并冻结稳定箱码", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/inbounds/2085957602972839938/carton-label-pdf?tenantId=10001" + }, + "http": 200, + "code": null, + "message": "13969 bytes (application/pdf)", + "requestId": "5edd3004-0fd5-46ee-a252-fa71b17b336f, 8e814478-4ea4-41dd-8a8b-827d51ef42c5, e09f4aa1-97fd-431d-b016-bbb7edcec71a", + "traceId": "37847bc4a9f1488d9b7f0b181a0fc61b, d721094a28e94c6e9221bf08a04ce447", + "evidence": "contentType=application/pdf, bytes=13969", + "checkedAt": "2026-08-08T05:13:43.916Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "首次打印后回查冻结箱数", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085957602972839938?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ba08119f-3035-4475-addb-2ca0cef633d5, b441c000-c86c-4985-9cd9-0f988d3b0093", + "traceId": "9bcb021733914c9e83dbc31f148a1fda", + "evidence": "", + "checkedAt": "2026-08-08T05:13:43.950Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "首次打印按订单货物冻结原始总箱数", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085957602972839938?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ba08119f-3035-4475-addb-2ca0cef633d5, b441c000-c86c-4985-9cd9-0f988d3b0093", + "traceId": "9bcb021733914c9e83dbc31f148a1fda", + "evidence": "inboundCodeStable=true, totalPackageCount=4", + "checkedAt": "2026-08-08T05:13:43.950Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "重复整单打印复用已冻结箱码映射", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/inbounds/2085957602972839938/carton-label-pdf?tenantId=10001" + }, + "http": 200, + "code": null, + "message": "13969 bytes (application/pdf)", + "requestId": "13b1af78-9f5d-48cc-8e3c-8bcaaac1fdd2, 5b93ec09-5ac7-499a-952f-53071b30bccc, 14707366-42b8-4f18-86a4-7175762f609b", + "traceId": "f180ffdd8e204c41bfa6d02d476cfe62, ec2fed6c3beb4434ab39eb103bfddf32", + "evidence": "boxCode=RK-2085957593764265986#4-1, contentType=application/pdf, bytes=13969", + "checkedAt": "2026-08-08T05:13:44.074Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "指定第1箱补打复用已冻结箱码映射", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/inbounds/2085957602972839938/carton-label-pdf?tenantId=10001&cartonIndex=1" + }, + "http": 200, + "code": null, + "message": "7780 bytes (application/pdf)", + "requestId": "77661c04-8e9f-4f05-8642-612e1ead207b, e25931df-5b0d-4615-832c-b2abfa69b4bd, a28c8471-0157-4f14-a8cb-33ef369b11a8", + "traceId": "3c55b715b7ab47a599403e6164e51457, a742b82905ac4caaa9cc0e46d181a31c", + "evidence": "boxCode=RK-2085957593764265986#4-1, cartonIndex=1, contentType=application/pdf, bytes=7780", + "checkedAt": "2026-08-08T05:13:44.183Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "模拟墨家首次扫描单箱", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957602972839938/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c1a40797-e4f5-4a85-9f68-79a97a7548c9, 50207e56-9c0c-4325-97c8-953dc4957a08", + "traceId": "f2c5be9e6f8c4410bd3c6174193b4824", + "evidence": "boxCode=RK-2085957593764265986#4-1, machineNo=MJ-ADMIN-E2E-01", + "checkedAt": "2026-08-08T05:13:44.260Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "首次扫描新增一条且默认代表1箱", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957602972839938/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c1a40797-e4f5-4a85-9f68-79a97a7548c9, 50207e56-9c0c-4325-97c8-953dc4957a08", + "traceId": "f2c5be9e6f8c4410bd3c6174193b4824", + "evidence": "created=true, confirmedPackageCount=1", + "checkedAt": "2026-08-08T05:13:44.261Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "重复打印及指定箱补打后原箱码仍可解析", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957602972839938/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c1a40797-e4f5-4a85-9f68-79a97a7548c9, 50207e56-9c0c-4325-97c8-953dc4957a08", + "traceId": "f2c5be9e6f8c4410bd3c6174193b4824", + "evidence": "boxCodeStable=true, resolvedInboundId=2085957602972839938", + "checkedAt": "2026-08-08T05:13:44.261Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "查询箱级测量详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957602972839938/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "34a782e2-21d9-44e7-8b4a-4f51a678ca73, f36ed205-a48b-4cba-8133-ad1aa8e5f32c", + "traceId": "719740ac218c44f59f2c3c889492599c", + "evidence": "measurementId=2085957607330721794", + "checkedAt": "2026-08-08T05:13:44.300Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "箱级查询回显箱码、尺寸、图片与设备信息", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957602972839938/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "34a782e2-21d9-44e7-8b4a-4f51a678ca73, f36ed205-a48b-4cba-8133-ad1aa8e5f32c", + "traceId": "719740ac218c44f59f2c3c889492599c", + "evidence": "itemFound=true, imageFileId=2085957607295090690", + "checkedAt": "2026-08-08T05:13:44.300Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "人工确认当前测量代表箱数", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/inbounds/2085957602972839938/measurement/items/2085957607334916098/confirmed-package-count?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "845cd7f6-6fa0-4672-b2f4-82eb3f61a64a, fe8c352d-09a8-4090-b4fa-df168e563e8f", + "traceId": "7dfe0a0ca9324ef6bc37c8332054300c", + "evidence": "confirmedPackageCount=4", + "checkedAt": "2026-08-08T05:13:44.336Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "人工箱数更新且测量版本递增", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/inbounds/2085957602972839938/measurement/items/2085957607334916098/confirmed-package-count?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "845cd7f6-6fa0-4672-b2f4-82eb3f61a64a, fe8c352d-09a8-4090-b4fa-df168e563e8f", + "traceId": "7dfe0a0ca9324ef6bc37c8332054300c", + "evidence": "version=2", + "checkedAt": "2026-08-08T05:13:44.336Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "同箱号重新扫描覆盖当前记录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957602972839938/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "42e61483-164d-4634-9b75-d2754133ee5b, 00d17e36-2ccf-433e-a979-5e77898f499c", + "traceId": "71790055c16b4e5dbc95d569b3c99359", + "evidence": "boxCode=RK-2085957593764265986#4-1, machineNo=MJ-ADMIN-E2E-02", + "checkedAt": "2026-08-08T05:13:44.410Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "覆盖保留同一条记录和人工箱数", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957602972839938/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "42e61483-164d-4634-9b75-d2754133ee5b, 00d17e36-2ccf-433e-a979-5e77898f499c", + "traceId": "71790055c16b4e5dbc95d569b3c99359", + "evidence": "sameItem=true, confirmedPackageCount=4", + "checkedAt": "2026-08-08T05:13:44.410Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "回查覆盖后的尺寸与体积结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957602972839938/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d2e39585-0017-4f64-9959-0736e81d64d4, 2dbfd853-c42f-4cf7-a741-586a77e1954c", + "traceId": "4202c17bebf04792ba7cfad957651970", + "evidence": "", + "checkedAt": "2026-08-08T05:13:44.434Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "覆盖尺寸、箱数和服务端体积公式正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957602972839938/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d2e39585-0017-4f64-9959-0736e81d64d4, 2dbfd853-c42f-4cf7-a741-586a77e1954c", + "traceId": "4202c17bebf04792ba7cfad957651970", + "evidence": "weightedOuter=64x54x54, unitVolume=0.187, totalVolume=0.748, volumeWeight=124.916, girth=204.5", + "checkedAt": "2026-08-08T05:13:44.434Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "保存同一测量批次草稿", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/inbounds/2085957602972839938/measurement/draft?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "72cded86-8269-4c45-9722-a33527c1fb87, 6350e52f-37d2-47f1-9e68-0d3f3fbc8282", + "traceId": "de7b4b20383941429c8a17fbab077a4d", + "evidence": "measurementId=2085957607330721794, items=1", + "checkedAt": "2026-08-08T05:13:44.493Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "草稿沿用批次并递增版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/inbounds/2085957602972839938/measurement/draft?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "72cded86-8269-4c45-9722-a33527c1fb87, 6350e52f-37d2-47f1-9e68-0d3f3fbc8282", + "traceId": "de7b4b20383941429c8a17fbab077a4d", + "evidence": "status=DRAFT, version=4", + "checkedAt": "2026-08-08T05:13:44.493Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "提交测量审核", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957602972839938/measurement/submit?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "649334fc-7e85-4d05-ae65-2ee9495ea7ab, 08503526-360c-4ab7-8acc-a61b0b651fb1", + "traceId": "f30fc6f83f6f464aa9ede74add70f35b", + "evidence": "measurementId=2085957607330721794", + "checkedAt": "2026-08-08T05:13:44.538Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "提交后进入待测量审核状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957602972839938/measurement/submit?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "649334fc-7e85-4d05-ae65-2ee9495ea7ab, 08503526-360c-4ab7-8acc-a61b0b651fb1", + "traceId": "f30fc6f83f6f464aa9ede74add70f35b", + "evidence": "processStatus=MEASURE_PENDING, reviewStatus=PENDING", + "checkedAt": "2026-08-08T05:13:44.538Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "测量提交后拒绝设备覆盖并返回中文提示", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957602972839938/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "A0409", + "message": "测量已提交,设备不能新增或覆盖数据", + "requestId": "851b44e1-ae52-4d9f-891c-fca09124b201", + "traceId": "974b8bdb995e4f07952eb77e0642bf75", + "evidence": "HTTP=200, code=A0409, chineseMessage=true", + "checkedAt": "2026-08-08T05:13:44.577Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "审核前读取最新入库单版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085957602972839938?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c3f5429f-7e21-4bff-a755-07959a91b74e, 71931e53-12bd-4eea-ae2a-cb4c70300edc", + "traceId": "9a66cfbbf7a24886817c340ec341bda0", + "evidence": "", + "checkedAt": "2026-08-08T05:13:44.607Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "审核前状态和版本有效", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085957602972839938?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c3f5429f-7e21-4bff-a755-07959a91b74e, 71931e53-12bd-4eea-ae2a-cb4c70300edc", + "traceId": "9a66cfbbf7a24886817c340ec341bda0", + "evidence": "status=MEASURE_PENDING, version=1", + "checkedAt": "2026-08-08T05:13:44.607Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "Admin 审核通过墨家测量", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/inbounds/2085957602972839938/measurements/approve?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b8508289-47d9-46be-88bb-de67ba43ac6d, 1c42b017-9d12-4d76-ad3b-22eaa94f2bd0", + "traceId": "af14cbad226a45cd8a68c7ea1eedc721", + "evidence": "measurementId=2085957607330721794", + "checkedAt": "2026-08-08T05:13:44.647Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "查询审核后的最终测量状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957602972839938/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "771c505a-7112-4ad7-8618-4eac9f2f52a1, ab8429d0-817d-40e3-a76f-255468b970f8", + "traceId": "320b6be7e52c4619a4c7af3c4aa9584e", + "evidence": "", + "checkedAt": "2026-08-08T05:13:44.688Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "审核后入库与测量状态闭环且结果未变化", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957602972839938/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "771c505a-7112-4ad7-8618-4eac9f2f52a1, ab8429d0-817d-40e3-a76f-255468b970f8", + "traceId": "320b6be7e52c4619a4c7af3c4aa9584e", + "evidence": "processStatus=INBOUNDED, measurementStatus=APPROVED, packages=4", + "checkedAt": "2026-08-08T05:13:44.688Z" + } + ] +} diff --git a/reports/admin-orders-measurement-isolated.json b/reports/admin-orders-measurement-isolated.json new file mode 100644 index 000000000..2ca3f2175 --- /dev/null +++ b/reports/admin-orders-measurement-isolated.json @@ -0,0 +1,1499 @@ +{ + "reportName": "后台管理测试环境 HTTP API 验收", + "marker": "ADMIN-API-20260808051508460", + "gateway": "http://8.163.30.128:9000", + "generatedAt": "2026-08-08T05:15:12.041Z", + "startedAt": "2026-08-08T05:15:08.460Z", + "success": true, + "fatal": null, + "summary": { + "total": 78, + "passed": 78, + "failed": 0 + }, + "modules": [ + { + "name": "orders", + "startedAt": "2026-08-08T05:15:08.842Z", + "finishedAt": "2026-08-08T05:15:11.189Z", + "success": true, + "passed": 49, + "failed": 0, + "fatal": null + }, + { + "name": "inbound-measurement", + "startedAt": "2026-08-08T05:15:11.190Z", + "finishedAt": "2026-08-08T05:15:12.041Z", + "success": true, + "passed": 28, + "failed": 0, + "fatal": null + } + ], + "scenarios": [ + { + "name": "mojia-carton-measurement", + "module": "inbound-measurement", + "success": true, + "deploymentBlocked": false, + "passed": 28, + "failed": 0 + } + ], + "deploymentBlockers": [], + "createdResources": { + "orders": { + "marker": "ADMIN-API-20260808051508460", + "tenantId": "10001", + "orderId": "2085957964918226946", + "productImageFileId": "2085957964599459841", + "boxTypes": [ + "SMALL", + "MEDIUM", + "LARGE", + "EXTRA_LARGE" + ], + "inboundId": "2085957968284135427", + "orderNo": "FL2085957964918226946", + "inboundCode": "RK-2085957964918226946", + "processStatus": "WAIT_MEASURE", + "taskId": "2085957968284135426" + }, + "ocrInbound": { + "tenantId": "10001", + "inboundId": "2085957968284135427", + "marker": "ADMIN-API-20260808051508460" + }, + "testInbound": { + "tenantId": "10001", + "inboundId": "2085957968284135427", + "marker": "ADMIN-API-20260808051508460" + }, + "inboundMeasurement": { + "marker": "ADMIN-API-20260808051508460", + "tenantId": "10001", + "inboundId": "2085957968284135427", + "measurementId": "2085957973912891393", + "boxCode": "RK-2085957964918226946#4-1", + "finalStatus": "APPROVED" + } + }, + "excluded": [ + { + "scope": "dashboard", + "reason": "首页为静态演示数据,不调用后端 API" + }, + { + "scope": "hidden-prototypes", + "reason": "隐藏原型页面尚无已确认后端契约" + } + ], + "securityNote": "报告不保存登录密码、Access Token、Refresh Token、图片二进制或 OCR 原文全文。", + "steps": [ + { + "module": "authentication", + "scenario": null, + "name": "平台管理员登录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/auth/login" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "055525e9-71c4-4c19-9976-26394e575a61, 51d804f2-8a1a-4f99-a091-d75ae651b9d0", + "traceId": "2de222eecc8f47bd806be71296e6d46c", + "evidence": "", + "checkedAt": "2026-08-08T05:15:08.839Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 测试账号登录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/auth/login" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f9b053c9-ab47-4636-ac8c-2de9f5063906, a3e2e4be-be82-44d4-b273-44250ca39e0f", + "traceId": "6b90f670528c4d5da171cfbf0fb8ec97", + "evidence": "username=merchant_admin", + "checkedAt": "2026-08-08T05:15:09.188Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询当前企业资料", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/iam/tenant/profile" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "cc6cfc11-a56a-4aa9-9a3a-1c853c0a544b, 384647ed-1d32-4a27-bbe3-2d4310538f9a", + "traceId": "2b757550e888439cb8bbdfab026d1318", + "evidence": "", + "checkedAt": "2026-08-08T05:15:09.216Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 测试企业已审核且客户 ID 有效", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/iam/tenant/profile" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "cc6cfc11-a56a-4aa9-9a3a-1c853c0a544b, 384647ed-1d32-4a27-bbe3-2d4310538f9a", + "traceId": "2b757550e888439cb8bbdfab026d1318", + "evidence": "tenantId=10001, status=ACTIVE", + "checkedAt": "2026-08-08T05:15:09.216Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询客户固定箱型", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "598cb533-2eee-4da3-a130-9959648ba68f, 32521431-08fe-4e88-9d78-135690a0c211", + "traceId": "3c7fd97056544667a6d3bfad8699bbde", + "evidence": "tenantId=10001", + "checkedAt": "2026-08-08T05:15:09.238Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "固定四箱型顺序、内径及每边加2cm正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "598cb533-2eee-4da3-a130-9959648ba68f, 32521431-08fe-4e88-9d78-135690a0c211", + "traceId": "3c7fd97056544667a6d3bfad8699bbde", + "evidence": "types=SMALL,MEDIUM,LARGE,EXTRA_LARGE", + "checkedAt": "2026-08-08T05:15:09.238Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询国内收货仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=DOMESTIC" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "31a6a892-e9be-46e1-91e7-fc7fc70e2946, 9e9207d8-6002-4629-a322-a55d46f438c7", + "traceId": "cef118f0e8c0472ab389822bb2a8fdbb", + "evidence": "", + "checkedAt": "2026-08-08T05:15:09.263Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在可用国内收货仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=DOMESTIC" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "31a6a892-e9be-46e1-91e7-fc7fc70e2946, 9e9207d8-6002-4629-a322-a55d46f438c7", + "traceId": "cef118f0e8c0472ab389822bb2a8fdbb", + "evidence": "count=2", + "checkedAt": "2026-08-08T05:15:09.263Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询 FBA 目的仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=FBA" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c3204749-edbd-4ecb-8608-628aad1409d7, 0d566543-d8d4-4bbc-a45f-1cd12acc1868", + "traceId": "3eee596e358d4a43804f5d3a648cba43", + "evidence": "", + "checkedAt": "2026-08-08T05:15:09.315Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在可用 FBA 目的仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=FBA" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c3204749-edbd-4ecb-8608-628aad1409d7, 0d566543-d8d4-4bbc-a45f-1cd12acc1868", + "traceId": "3eee596e358d4a43804f5d3a648cba43", + "evidence": "count=200", + "checkedAt": "2026-08-08T05:15:09.316Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询可用计费渠道", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/first-leg/pricing/channels?originWarehouseId=193000000000200001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8655fbe8-7b1b-4bca-baa5-ae6deb5a189b, 314d8922-5f6f-4c08-bd6a-453e8f38ba1e", + "traceId": "71ec5369afb94c4d9291c2f04dc51294", + "evidence": "", + "checkedAt": "2026-08-08T05:15:09.356Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在带计价税制的可用渠道", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/first-leg/pricing/channels?originWarehouseId=193000000000200001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8655fbe8-7b1b-4bca-baa5-ae6deb5a189b, 314d8922-5f6f-4c08-bd6a-453e8f38ba1e", + "traceId": "71ec5369afb94c4d9291c2f04dc51294", + "evidence": "count=15", + "checkedAt": "2026-08-08T05:15:09.356Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询发货客户候选", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/partners/candidates?type=SHIPPER" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7fb6cd2e-9294-477f-9be0-c362f59b99f9, a25bfa95-db64-4009-9600-dbe4fca933f5", + "traceId": "eac61ccab5004a4584510f5f6f6ac44e", + "evidence": "", + "checkedAt": "2026-08-08T05:15:09.386Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 上传产品图片", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/files/product-images" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2d3840be-a1f8-465c-9d8b-90ef8df3b36c, 15d767bb-8eaf-4045-9430-cea8cd9c34ac", + "traceId": "ebbab8ee26b9498e9dbb2bb7dde628f1", + "evidence": "contentType=image/png", + "checkedAt": "2026-08-08T05:15:09.421Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "产品图片上传返回字符串文件 ID", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/files/product-images" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2d3840be-a1f8-465c-9d8b-90ef8df3b36c, 15d767bb-8eaf-4045-9430-cea8cd9c34ac", + "traceId": "ebbab8ee26b9498e9dbb2bb7dde628f1", + "evidence": "fileIdType=string, contentType=image/png", + "checkedAt": "2026-08-08T05:15:09.421Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 可下载本轮产品图片", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/files/product-images/2085957964599459841" + }, + "http": 200, + "code": null, + "message": null, + "requestId": "8d8ed0d0-4301-4d08-909b-0db7459827a5, 69d243dc-59a7-41d3-8812-dd9749d64629", + "traceId": "4e6db4cc849848578204ff24d27c534f", + "evidence": "bytes=68, contentType=image/png", + "checkedAt": "2026-08-08T05:15:09.446Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 创建四箱型隔离订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2271abd8-3d44-4d02-8e4d-e73be3e5a1fa, da46f37c-6d10-4da8-a4d6-47322c9855fd", + "traceId": "b0d814b22d564f16b0f776a11f976662", + "evidence": "marker=ADMIN-API-20260808051508460", + "checkedAt": "2026-08-08T05:15:09.507Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 创建订单幂等重放", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8f8cf167-9b72-40be-a16e-aa5c8169b747, 5bc81eec-ce6f-441f-a705-1eb5e03a5398", + "traceId": "a2e87b75ab61415e9a42268ef922cb9c", + "evidence": "", + "checkedAt": "2026-08-08T05:15:09.542Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 创建幂等结果一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8f8cf167-9b72-40be-a16e-aa5c8169b747, 5bc81eec-ce6f-441f-a705-1eb5e03a5398", + "traceId": "a2e87b75ab61415e9a42268ef922cb9c", + "evidence": "orderId=2085957964918226946, replayedId=2085957964918226946", + "checkedAt": "2026-08-08T05:15:09.543Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询隔离订单草稿", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085957964918226946" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3ba458cb-8f19-4711-a799-598d51c05483, 3be1c34d-429f-497c-af56-edb6bec81e12", + "traceId": "d6c3141a63a244218a7969f401a28519", + "evidence": "", + "checkedAt": "2026-08-08T05:15:09.574Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 草稿身份、marker 和状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085957964918226946" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3ba458cb-8f19-4711-a799-598d51c05483, 3be1c34d-429f-497c-af56-edb6bec81e12", + "traceId": "d6c3141a63a244218a7969f401a28519", + "evidence": "orderNo=FL2085957964918226946, status=DRAFT", + "checkedAt": "2026-08-08T05:15:09.574Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "四箱型产品字段及图片契约完整回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085957964918226946" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3ba458cb-8f19-4711-a799-598d51c05483, 3be1c34d-429f-497c-af56-edb6bec81e12", + "traceId": "d6c3141a63a244218a7969f401a28519", + "evidence": "cargoes=4, imageFileId=2085957964599459841", + "checkedAt": "2026-08-08T05:15:09.575Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 提交隔离订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg/2085957964918226946/submit" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "537e50e1-fa8d-4366-9be1-62e3df6a11f4, ca5e71a4-8aba-41a4-8e0f-214f428b4c59", + "traceId": "6ad572a61e8b47cbbfba6a7bd9b6fba6", + "evidence": "orderId=2085957964918226946", + "checkedAt": "2026-08-08T05:15:09.640Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 回查已提交订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085957964918226946" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "30d683bc-8a26-4b76-b602-423491b8b371, 65b3eca7-260d-4629-98b4-32753fbb710c", + "traceId": "4e9d82e391fb4be987e26ef716a9c100", + "evidence": "", + "checkedAt": "2026-08-08T05:15:09.668Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 订单已进入待审核状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085957964918226946" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "30d683bc-8a26-4b76-b602-423491b8b371, 65b3eca7-260d-4629-98b4-32753fbb710c", + "traceId": "4e9d82e391fb4be987e26ef716a9c100", + "evidence": "status=SUBMITTED", + "checkedAt": "2026-08-08T05:15:09.668Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询统一订单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders?page=1&size=100&tenantId=10001&orderNo=FL2085957964918226946" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e32eacae-c942-4011-8922-0fb0ebd7af01, adc9c109-af90-45f7-be55-7b4859b59eaa", + "traceId": "8a9136a655d34c89abce3cf15c99d6c5", + "evidence": "", + "checkedAt": "2026-08-08T05:15:09.705Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 统一订单列表只核对本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders?page=1&size=100&tenantId=10001&orderNo=FL2085957964918226946" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e32eacae-c942-4011-8922-0fb0ebd7af01, adc9c109-af90-45f7-be55-7b4859b59eaa", + "traceId": "8a9136a655d34c89abce3cf15c99d6c5", + "evidence": "orderId=2085957964918226946, found=true", + "checkedAt": "2026-08-08T05:15:09.706Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询统一订单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085957964918226946?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7b52cf08-3136-4b18-854c-6206006713d6, 7164cf34-c6f4-4b0d-8d78-3eb3d6b5e1cb", + "traceId": "507e767a86d740c5b2a74f84a0df7c8d", + "evidence": "", + "checkedAt": "2026-08-08T05:15:09.745Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 统一订单详情身份与待审核状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085957964918226946?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7b52cf08-3136-4b18-854c-6206006713d6, 7164cf34-c6f4-4b0d-8d78-3eb3d6b5e1cb", + "traceId": "507e767a86d740c5b2a74f84a0df7c8d", + "evidence": "mainStatus=PENDING_REVIEW, timeline=2", + "checkedAt": "2026-08-08T05:15:09.746Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询头程订单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg?tenantId=10001&keyword=FL2085957964918226946&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2a23ea8e-0824-41f0-a98f-355ba6d43c2c, f060fe82-ab7c-4ea5-85dc-ea3298069c08", + "traceId": "476a42d267f748e9bf0e607eeaeb44ff", + "evidence": "", + "checkedAt": "2026-08-08T05:15:09.769Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 头程订单列表只核对本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg?tenantId=10001&keyword=FL2085957964918226946&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2a23ea8e-0824-41f0-a98f-355ba6d43c2c, f060fe82-ab7c-4ea5-85dc-ea3298069c08", + "traceId": "476a42d267f748e9bf0e607eeaeb44ff", + "evidence": "orderId=2085957964918226946, found=true", + "checkedAt": "2026-08-08T05:15:09.770Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询头程订单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085957964918226946?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d1cb40dc-c0d6-4f19-b324-2c3824b0d842, c518340d-675b-4d58-850a-56804af46a74", + "traceId": "5f80b0b120fc42dbaa5e6389d08cb752", + "evidence": "", + "checkedAt": "2026-08-08T05:15:09.810Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 头程订单详情聚合结构完整", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085957964918226946?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d1cb40dc-c0d6-4f19-b324-2c3824b0d842, c518340d-675b-4d58-850a-56804af46a74", + "traceId": "5f80b0b120fc42dbaa5e6389d08cb752", + "evidence": "cargoes=4, history=2", + "checkedAt": "2026-08-08T05:15:09.810Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "四箱型产品字段及图片契约完整回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085957964918226946?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d1cb40dc-c0d6-4f19-b324-2c3824b0d842, c518340d-675b-4d58-850a-56804af46a74", + "traceId": "5f80b0b120fc42dbaa5e6389d08cb752", + "evidence": "cargoes=4, imageFileId=2085957964599459841", + "checkedAt": "2026-08-08T05:15:09.810Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 为本轮订单添加内部备注", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085957964918226946/internal-notes?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d906e827-6ece-4809-bd5b-7a01a6b78420, dc3ba1ad-dbcd-46b4-8de3-5ce5d816293a", + "traceId": "fb7ebcbf614c451baa15751bc972f261", + "evidence": "", + "checkedAt": "2026-08-08T05:15:09.840Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 审核通过本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085957964918226946/approve?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "13ff2d64-a3f2-4803-b7dd-9e016dc2292f, d966c72e-22f4-48a2-af1f-647f41d62b7e", + "traceId": "1ce0fb4c045043919bd683e689cb1797", + "evidence": "orderId=2085957964918226946", + "checkedAt": "2026-08-08T05:15:09.876Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "审核后生成隔离入库单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085957964918226946?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "85347a08-4c99-4ce5-ad8a-49b5a2f274ef, 72622cf6-6988-4636-a6b2-494987adedff", + "traceId": "c10f8d09ea854b66a5a3f3c4ee911aa1", + "evidence": "inboundId=2085957968284135427", + "checkedAt": "2026-08-08T05:15:10.960Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询本轮入库单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085957968284135427?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "62b5d6a7-7978-435d-a89b-b4bcf060480d, e33738b1-c76d-47aa-995d-0e05e6633660", + "traceId": "579467f9d7ba42af8742d07e9116908a", + "evidence": "inboundId=2085957968284135427", + "checkedAt": "2026-08-08T05:15:10.999Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "隔离入库单 marker 来源与可测量状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085957968284135427?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "62b5d6a7-7978-435d-a89b-b4bcf060480d, e33738b1-c76d-47aa-995d-0e05e6633660", + "traceId": "579467f9d7ba42af8742d07e9116908a", + "evidence": "markerFound=true, status=WAIT_MEASURE", + "checkedAt": "2026-08-08T05:15:10.999Z" + }, + { + "module": "orders", + "scenario": null, + "name": "入库单详情包含托盘库位、文件、备注和状态历史", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085957968284135427?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "62b5d6a7-7978-435d-a89b-b4bcf060480d, e33738b1-c76d-47aa-995d-0e05e6633660", + "traceId": "579467f9d7ba42af8742d07e9116908a", + "evidence": "inboundId=2085957968284135427, history=1", + "checkedAt": "2026-08-08T05:15:10.999Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询入库单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds?tenantId=10001&inboundCode=RK-2085957964918226946&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ecb86ee6-f065-44f4-a9fe-d1ea18e98846, e10d539d-769e-4108-ade8-412ce75e41ff", + "traceId": "baa4ccacb30345b6a16cb1a3082d78ef", + "evidence": "", + "checkedAt": "2026-08-08T05:15:11.026Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 入库单列表只核对本轮入库单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds?tenantId=10001&inboundCode=RK-2085957964918226946&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ecb86ee6-f065-44f4-a9fe-d1ea18e98846, e10d539d-769e-4108-ade8-412ce75e41ff", + "traceId": "baa4ccacb30345b6a16cb1a3082d78ef", + "evidence": "inboundId=2085957968284135427, total=1", + "checkedAt": "2026-08-08T05:15:11.027Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询本轮订单履约任务", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/by-order/2085957964918226946?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d12a5975-1266-4f50-833b-defc0eec31a6, 61adbb1a-f613-44d3-ae42-0551523be316", + "traceId": "2bfdf66220f04dba81617efbf566090f", + "evidence": "新订单应生成可查询的履约任务", + "checkedAt": "2026-08-08T05:15:11.059Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "履约任务与本轮订单和客户一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/by-order/2085957964918226946?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d12a5975-1266-4f50-833b-defc0eec31a6, 61adbb1a-f613-44d3-ae42-0551523be316", + "traceId": "2bfdf66220f04dba81617efbf566090f", + "evidence": "taskId=2085957968284135426, status=PENDING_ASSIGNMENT", + "checkedAt": "2026-08-08T05:15:11.059Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询本轮履约任务分配历史", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/2085957968284135426/assignment-history?tenantId=10001&page=1&size=20" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3e6d7ea8-7255-4ca2-a60d-b4cfd708fede, 72932b0a-1531-4ff1-8436-5078de38d090", + "traceId": "33f1d962cac248e8861a910a0ccb0377", + "evidence": "", + "checkedAt": "2026-08-08T05:15:11.092Z" + }, + { + "module": "orders", + "scenario": null, + "name": "履约分配历史分页结构正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/2085957968284135426/assignment-history?tenantId=10001&page=1&size=20" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3e6d7ea8-7255-4ca2-a60d-b4cfd708fede, 72932b0a-1531-4ff1-8436-5078de38d090", + "traceId": "33f1d962cac248e8861a910a0ccb0377", + "evidence": "taskId=2085957968284135426, total=0", + "checkedAt": "2026-08-08T05:15:11.092Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 受理本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085957964918226946/accept?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2777dc68-37fa-40cc-a819-6b0f7835fcde, 0d5ca56d-4f1e-4c82-9b75-706e16cfe875", + "traceId": "dc3c25268fe74dd8b91910fe04f52965", + "evidence": "", + "checkedAt": "2026-08-08T05:15:11.129Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 启动本轮订单履约", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085957964918226946/start?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0a3c2c69-86a4-4384-8f6e-661e0629189e, 11ffebb8-ffc5-485f-a487-38a4460cab84", + "traceId": "10420d2263984a779df6cd6f5c116839", + "evidence": "", + "checkedAt": "2026-08-08T05:15:11.160Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 回查本轮订单履约状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085957964918226946?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "aa3a9e3a-5239-4b03-b5cb-f084ce4ee944, bf2be2ae-9a15-460b-aa06-af697d101788", + "traceId": "77129af513f9491cbd3ec27fa9c5e40a", + "evidence": "", + "checkedAt": "2026-08-08T05:15:11.189Z" + }, + { + "module": "orders", + "scenario": null, + "name": "本轮订单已进入处理中且保留状态历史", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085957964918226946?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "aa3a9e3a-5239-4b03-b5cb-f084ce4ee944, bf2be2ae-9a15-460b-aa06-af697d101788", + "traceId": "77129af513f9491cbd3ec27fa9c5e40a", + "evidence": "status=PROCESSING, history=5", + "checkedAt": "2026-08-08T05:15:11.189Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "查询隔离入库单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085957968284135427?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f10da312-a0fb-47b5-8044-dabd2875203c, 7964b965-8755-4249-9dc3-c29a7a0655a2", + "traceId": "2ffdd52723644041ad01a588f80229f1", + "evidence": "inboundId=2085957968284135427, tenantId=10001", + "checkedAt": "2026-08-08T05:15:11.218Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "隔离入库单身份与可测量状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085957968284135427?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f10da312-a0fb-47b5-8044-dabd2875203c, 7964b965-8755-4249-9dc3-c29a7a0655a2", + "traceId": "2ffdd52723644041ad01a588f80229f1", + "evidence": "identity=true, status=WAIT_MEASURE", + "checkedAt": "2026-08-08T05:15:11.218Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "生成箱唛 PDF 并冻结稳定箱码", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/inbounds/2085957968284135427/carton-label-pdf?tenantId=10001" + }, + "http": 200, + "code": null, + "message": "13891 bytes (application/pdf)", + "requestId": "daa29f0b-6b84-4051-b856-f0040fe6fc5b, d480f648-44d5-4364-9fa0-d06d76ef9b4b, a301f41f-e7da-4a92-a804-b09465663790", + "traceId": "8409497d99ad41ddba6925b667b61934, de7f98098d444a8ea9637e9a949e13ff", + "evidence": "contentType=application/pdf, bytes=13891", + "checkedAt": "2026-08-08T05:15:11.343Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "首次打印后回查冻结箱数", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085957968284135427?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "77433832-612c-4837-9a26-d8e719e5409a, 8b488cb7-cd7b-4893-a22e-c10919fff137", + "traceId": "07e731cf48ce47d4af552aba366ae7b9", + "evidence": "", + "checkedAt": "2026-08-08T05:15:11.378Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "首次打印按订单货物冻结原始总箱数", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085957968284135427?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "77433832-612c-4837-9a26-d8e719e5409a, 8b488cb7-cd7b-4893-a22e-c10919fff137", + "traceId": "07e731cf48ce47d4af552aba366ae7b9", + "evidence": "inboundCodeStable=true, totalPackageCount=4", + "checkedAt": "2026-08-08T05:15:11.378Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "重复整单打印复用已冻结箱码映射", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/inbounds/2085957968284135427/carton-label-pdf?tenantId=10001" + }, + "http": 200, + "code": null, + "message": "13891 bytes (application/pdf)", + "requestId": "baa15158-4851-4b7a-aaa2-d8d5ad1e21af, d7100a55-fa7d-4ad5-b00d-38840f7554fc, 5dc079f0-1e4d-4343-a142-a3327a9d2c51", + "traceId": "e1418d8fbed540a6bc48420a980e0e58, e4a7547201dd4832b3c7310e194e8092", + "evidence": "boxCode=RK-2085957964918226946#4-1, contentType=application/pdf, bytes=13891", + "checkedAt": "2026-08-08T05:15:11.489Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "指定第1箱补打复用已冻结箱码映射", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/inbounds/2085957968284135427/carton-label-pdf?tenantId=10001&cartonIndex=1" + }, + "http": 200, + "code": null, + "message": "7670 bytes (application/pdf)", + "requestId": "577c1a4b-f48c-4ce5-920e-b6b1b383f3bf, 65b0a873-1d25-44b0-b4fa-6f71a210f204, 7ea9c774-04c2-42f4-b9f8-9cd18cc3fe67", + "traceId": "8241787d25464eab985542b8ed957c6d, 75c7dc591656445e8d725fe3b9165c8b", + "evidence": "boxCode=RK-2085957964918226946#4-1, cartonIndex=1, contentType=application/pdf, bytes=7670", + "checkedAt": "2026-08-08T05:15:11.597Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "模拟墨家首次扫描单箱", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957968284135427/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3575985f-1e81-4550-a32f-7fc658d511bf, 77ecb2f0-0ed9-47e6-a47c-23f259eba551", + "traceId": "b09ae5d3126648f38c9db2ee8d4ba069", + "evidence": "boxCode=RK-2085957964918226946#4-1, machineNo=MJ-ADMIN-E2E-01", + "checkedAt": "2026-08-08T05:15:11.645Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "首次扫描新增一条且默认代表1箱", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957968284135427/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3575985f-1e81-4550-a32f-7fc658d511bf, 77ecb2f0-0ed9-47e6-a47c-23f259eba551", + "traceId": "b09ae5d3126648f38c9db2ee8d4ba069", + "evidence": "created=true, confirmedPackageCount=1", + "checkedAt": "2026-08-08T05:15:11.645Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "重复打印及指定箱补打后原箱码仍可解析", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957968284135427/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3575985f-1e81-4550-a32f-7fc658d511bf, 77ecb2f0-0ed9-47e6-a47c-23f259eba551", + "traceId": "b09ae5d3126648f38c9db2ee8d4ba069", + "evidence": "boxCodeStable=true, resolvedInboundId=2085957968284135427", + "checkedAt": "2026-08-08T05:15:11.645Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "查询箱级测量详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957968284135427/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "46cf9f6a-8af9-4042-9683-d590a00b5549, cb30a492-5bde-4b05-9f3f-4ce4c89db139", + "traceId": "481aadb212f24fb0acae1a09ba794580", + "evidence": "measurementId=2085957973912891393", + "checkedAt": "2026-08-08T05:15:11.684Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "箱级查询回显箱码、尺寸、图片与设备信息", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957968284135427/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "46cf9f6a-8af9-4042-9683-d590a00b5549, cb30a492-5bde-4b05-9f3f-4ce4c89db139", + "traceId": "481aadb212f24fb0acae1a09ba794580", + "evidence": "itemFound=true, imageFileId=2085957973877260289", + "checkedAt": "2026-08-08T05:15:11.685Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "人工确认当前测量代表箱数", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/inbounds/2085957968284135427/measurement/items/2085957973917085697/confirmed-package-count?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9cd2c03d-1215-4751-862a-2faf35456c07, 09108b0a-6152-4a32-bd67-de431285d3ca", + "traceId": "f5578edb32124d53918134f9972b45df", + "evidence": "confirmedPackageCount=4", + "checkedAt": "2026-08-08T05:15:11.721Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "人工箱数更新且测量版本递增", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/inbounds/2085957968284135427/measurement/items/2085957973917085697/confirmed-package-count?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9cd2c03d-1215-4751-862a-2faf35456c07, 09108b0a-6152-4a32-bd67-de431285d3ca", + "traceId": "f5578edb32124d53918134f9972b45df", + "evidence": "version=2", + "checkedAt": "2026-08-08T05:15:11.721Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "同箱号重新扫描覆盖当前记录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957968284135427/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b83a8e20-c2a3-4df6-9b3c-135d361aabfa, 8f09b8e0-ecc2-4ed1-9015-f3652ad3310d", + "traceId": "37033d722d5a4ae3842f7bc847848d63", + "evidence": "boxCode=RK-2085957964918226946#4-1, machineNo=MJ-ADMIN-E2E-02", + "checkedAt": "2026-08-08T05:15:11.795Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "覆盖保留同一条记录和人工箱数", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957968284135427/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b83a8e20-c2a3-4df6-9b3c-135d361aabfa, 8f09b8e0-ecc2-4ed1-9015-f3652ad3310d", + "traceId": "37033d722d5a4ae3842f7bc847848d63", + "evidence": "sameItem=true, confirmedPackageCount=4", + "checkedAt": "2026-08-08T05:15:11.795Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "回查覆盖后的尺寸与体积结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957968284135427/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a2ad7008-080d-45da-ab6c-8f8e99646ebc, 0f6d0254-d6f1-4c5a-affe-e1e51345e0b6", + "traceId": "514b81b134494becb4398137e0dd79e1", + "evidence": "", + "checkedAt": "2026-08-08T05:15:11.822Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "覆盖尺寸、箱数和服务端体积公式正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957968284135427/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a2ad7008-080d-45da-ab6c-8f8e99646ebc, 0f6d0254-d6f1-4c5a-affe-e1e51345e0b6", + "traceId": "514b81b134494becb4398137e0dd79e1", + "evidence": "weightedOuter=64x54x54, unitVolume=0.187, totalVolume=0.748, volumeWeight=124.916, girth=204.5", + "checkedAt": "2026-08-08T05:15:11.823Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "保存同一测量批次草稿", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/inbounds/2085957968284135427/measurement/draft?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d459ec1d-3d8e-4cf4-9a56-27da0c3dfb21, 1ccf03a8-6737-4b11-935e-f32f2d2e038b", + "traceId": "5b6d9d82176b4700bc34266b38687bd1", + "evidence": "measurementId=2085957973912891393, items=1", + "checkedAt": "2026-08-08T05:15:11.860Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "草稿沿用批次并递增版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/inbounds/2085957968284135427/measurement/draft?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d459ec1d-3d8e-4cf4-9a56-27da0c3dfb21, 1ccf03a8-6737-4b11-935e-f32f2d2e038b", + "traceId": "5b6d9d82176b4700bc34266b38687bd1", + "evidence": "status=DRAFT, version=4", + "checkedAt": "2026-08-08T05:15:11.860Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "提交测量审核", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957968284135427/measurement/submit?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8be6685c-72a4-4f78-84c4-7c0e309f3d9d, fbeb9f6e-6ed1-40ae-acac-f01901d5386e", + "traceId": "ad3d6687581c40b79d6b23d47f4e3f35", + "evidence": "measurementId=2085957973912891393", + "checkedAt": "2026-08-08T05:15:11.892Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "提交后进入待测量审核状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957968284135427/measurement/submit?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8be6685c-72a4-4f78-84c4-7c0e309f3d9d, fbeb9f6e-6ed1-40ae-acac-f01901d5386e", + "traceId": "ad3d6687581c40b79d6b23d47f4e3f35", + "evidence": "processStatus=MEASURE_PENDING, reviewStatus=PENDING", + "checkedAt": "2026-08-08T05:15:11.892Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "测量提交后拒绝设备覆盖并返回中文提示", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957968284135427/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "A0409", + "message": "测量已提交,设备不能新增或覆盖数据", + "requestId": "400106f0-696b-4165-80da-da2d550df455", + "traceId": "1c3e4030f4264778889d777d65babefd", + "evidence": "HTTP=200, code=A0409, chineseMessage=true", + "checkedAt": "2026-08-08T05:15:11.933Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "审核前读取最新入库单版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085957968284135427?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d393da94-1edb-4694-ab3d-8f8698188a4e, 219690ee-6ba2-4b6e-aa0c-0eda16d8a294", + "traceId": "ebcb90e0effb4d0880ac90b84f3bd665", + "evidence": "", + "checkedAt": "2026-08-08T05:15:11.962Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "审核前状态和版本有效", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085957968284135427?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d393da94-1edb-4694-ab3d-8f8698188a4e, 219690ee-6ba2-4b6e-aa0c-0eda16d8a294", + "traceId": "ebcb90e0effb4d0880ac90b84f3bd665", + "evidence": "status=MEASURE_PENDING, version=1", + "checkedAt": "2026-08-08T05:15:11.962Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "Admin 审核通过墨家测量", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/inbounds/2085957968284135427/measurements/approve?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "83c0749d-3afa-46d6-99ec-120235ec3880, ddfba86c-0c0c-4d0e-8ad9-d40cd94c290d", + "traceId": "3222ad045155403ca10e2eed956af7fd", + "evidence": "measurementId=2085957973912891393", + "checkedAt": "2026-08-08T05:15:12.004Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "查询审核后的最终测量状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957968284135427/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a69b07b7-0ac8-42be-bfc2-344d7d00c284, 53df93dd-7963-442a-88a4-4e88dbadabaf", + "traceId": "119a5085ccd14105821240cce646f6bf", + "evidence": "", + "checkedAt": "2026-08-08T05:15:12.041Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "审核后入库与测量状态闭环且结果未变化", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957968284135427/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a69b07b7-0ac8-42be-bfc2-344d7d00c284, 53df93dd-7963-442a-88a4-4e88dbadabaf", + "traceId": "119a5085ccd14105821240cce646f6bf", + "evidence": "processStatus=INBOUNDED, measurementStatus=APPROVED, packages=4", + "checkedAt": "2026-08-08T05:15:12.041Z" + } + ] +} diff --git a/reports/admin-orders-mojia-postdeploy-20260808.json b/reports/admin-orders-mojia-postdeploy-20260808.json new file mode 100644 index 000000000..1c4e929fb --- /dev/null +++ b/reports/admin-orders-mojia-postdeploy-20260808.json @@ -0,0 +1,1518 @@ +{ + "reportName": "后台管理测试环境 HTTP API 验收", + "marker": "ADMIN-API-20260808043621232", + "gateway": "http://8.163.30.128:9000", + "generatedAt": "2026-08-08T04:36:26.307Z", + "startedAt": "2026-08-08T04:36:21.232Z", + "success": false, + "fatal": null, + "summary": { + "total": 78, + "passed": 76, + "failed": 2 + }, + "modules": [ + { + "name": "orders", + "startedAt": "2026-08-08T04:36:21.614Z", + "finishedAt": "2026-08-08T04:36:25.252Z", + "success": true, + "passed": 49, + "failed": 0, + "fatal": null + }, + { + "name": "inbound-measurement", + "startedAt": "2026-08-08T04:36:25.253Z", + "finishedAt": "2026-08-08T04:36:26.307Z", + "success": false, + "passed": 26, + "failed": 2, + "fatal": null + } + ], + "scenarios": [ + { + "name": "mojia-carton-measurement", + "module": "inbound-measurement", + "success": false, + "deploymentBlocked": true, + "passed": 26, + "failed": 2 + } + ], + "deploymentBlockers": [ + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "覆盖尺寸、箱数和服务端体积公式正确", + "evidence": "unitVolume=0.0768, totalVolume=0.3072, volumeWeight=51.303, girth=204.5", + "code": "200", + "requestId": "2848c5a1-9dc0-47a5-af67-c1baca4fb973, 5e787fde-2d26-48f2-9081-9c32e7a93a11", + "traceId": "d9bd4fdc1e2247b182bfe9ba2a6ab43c" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "审核后入库与测量状态闭环且结果未变化", + "evidence": "processStatus=INBOUNDED, measurementStatus=APPROVED, packages=4", + "code": "200", + "requestId": "2dc0585b-99e1-4ff0-a8d2-317056221a85, dcbe1888-0d64-4bb6-943e-87571c43aeb5", + "traceId": "3ba39f9281324d91b54aa75b4d0d99d1" + } + ], + "createdResources": { + "orders": { + "marker": "ADMIN-API-20260808043621232", + "tenantId": "10001", + "orderId": "2085948204177227778", + "productImageFileId": "2085948203715854337", + "boxTypes": [ + "SMALL", + "MEDIUM", + "LARGE", + "EXTRA_LARGE" + ], + "inboundId": "2085948211020214274", + "orderNo": "FL2085948204177227778", + "inboundCode": "RK-2085948204177227778", + "processStatus": "WAIT_MEASURE", + "taskId": "2085948211016019970" + }, + "ocrInbound": { + "tenantId": "10001", + "inboundId": "2085948211020214274", + "marker": "ADMIN-API-20260808043621232" + }, + "testInbound": { + "tenantId": "10001", + "inboundId": "2085948211020214274", + "marker": "ADMIN-API-20260808043621232" + }, + "inboundMeasurement": { + "marker": "ADMIN-API-20260808043621232", + "tenantId": "10001", + "inboundId": "2085948211020214274", + "measurementId": "2085948218792259585", + "boxCode": "RK-2085948204177227778#4-1", + "finalStatus": "APPROVED" + } + }, + "excluded": [ + { + "scope": "dashboard", + "reason": "首页为静态演示数据,不调用后端 API" + }, + { + "scope": "hidden-prototypes", + "reason": "隐藏原型页面尚无已确认后端契约" + } + ], + "securityNote": "报告不保存登录密码、Access Token、Refresh Token、图片二进制或 OCR 原文全文。", + "steps": [ + { + "module": "authentication", + "scenario": null, + "name": "平台管理员登录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/auth/login" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "81f0c0df-12e9-45aa-80fe-9e83debb3c94, e8f9afce-1c4b-41e8-b86c-68cca1fdf429", + "traceId": "f184a5c15b9249edb88488373e5f4fe6", + "evidence": "", + "checkedAt": "2026-08-08T04:36:21.612Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 测试账号登录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/auth/login" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a5fe5b2d-4c6a-4dd1-9479-6dc9220f31df, cbdaa53a-e27e-4b7e-91c8-ae5121b83e31", + "traceId": "23650c7d9a8445b0ba6b8e609fcfc84d", + "evidence": "username=merchant_admin", + "checkedAt": "2026-08-08T04:36:21.960Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询当前企业资料", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/iam/tenant/profile" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3887f4d9-fa77-473a-88bb-c865a7c8dc22, 251196b7-6fdf-4442-8611-acd76e60de28", + "traceId": "b05a9632d969471281794341205c3710", + "evidence": "", + "checkedAt": "2026-08-08T04:36:21.998Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 测试企业已审核且客户 ID 有效", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/iam/tenant/profile" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3887f4d9-fa77-473a-88bb-c865a7c8dc22, 251196b7-6fdf-4442-8611-acd76e60de28", + "traceId": "b05a9632d969471281794341205c3710", + "evidence": "tenantId=10001, status=ACTIVE", + "checkedAt": "2026-08-08T04:36:21.998Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询客户固定箱型", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6609a462-10ca-45da-a585-38e56a3c1234, 746e8a12-5fe3-4c91-bcfe-8b2448977e3e", + "traceId": "817a04355d4b405b96e2800f57d20591", + "evidence": "tenantId=10001", + "checkedAt": "2026-08-08T04:36:22.032Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "固定四箱型顺序、内径及每边加2cm正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6609a462-10ca-45da-a585-38e56a3c1234, 746e8a12-5fe3-4c91-bcfe-8b2448977e3e", + "traceId": "817a04355d4b405b96e2800f57d20591", + "evidence": "types=SMALL,MEDIUM,LARGE,EXTRA_LARGE", + "checkedAt": "2026-08-08T04:36:22.032Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询国内收货仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=DOMESTIC" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b8684690-cfce-4103-9564-44d4ba4f4382, 5bb5bdf0-486a-4e7b-b6f1-0e1892850481", + "traceId": "06728142cc574e5180b593879cbd8596", + "evidence": "", + "checkedAt": "2026-08-08T04:36:22.065Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在可用国内收货仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=DOMESTIC" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b8684690-cfce-4103-9564-44d4ba4f4382, 5bb5bdf0-486a-4e7b-b6f1-0e1892850481", + "traceId": "06728142cc574e5180b593879cbd8596", + "evidence": "count=2", + "checkedAt": "2026-08-08T04:36:22.065Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询 FBA 目的仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=FBA" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "379a0f47-643e-4617-9b5c-3014b0aba7be, 6ccbe784-c481-44a7-8be1-0883e64f12b9", + "traceId": "96aa049576d04cb692c928c3a8336417", + "evidence": "", + "checkedAt": "2026-08-08T04:36:22.124Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在可用 FBA 目的仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=FBA" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "379a0f47-643e-4617-9b5c-3014b0aba7be, 6ccbe784-c481-44a7-8be1-0883e64f12b9", + "traceId": "96aa049576d04cb692c928c3a8336417", + "evidence": "count=200", + "checkedAt": "2026-08-08T04:36:22.124Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询可用计费渠道", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/first-leg/pricing/channels?originWarehouseId=193000000000200001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "57a69d11-c61c-4aa0-b541-177be4b0223a, d5d59db7-708c-48bd-8c81-71a7ceceb8ec", + "traceId": "9c45eb419b5743a0985961e8679f1f96", + "evidence": "", + "checkedAt": "2026-08-08T04:36:22.166Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在带计价税制的可用渠道", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/first-leg/pricing/channels?originWarehouseId=193000000000200001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "57a69d11-c61c-4aa0-b541-177be4b0223a, d5d59db7-708c-48bd-8c81-71a7ceceb8ec", + "traceId": "9c45eb419b5743a0985961e8679f1f96", + "evidence": "count=15", + "checkedAt": "2026-08-08T04:36:22.166Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询发货客户候选", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/partners/candidates?type=SHIPPER" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8247736a-a6e4-4bce-aaf4-4ee5da5aed90, d2c7b013-5db5-4e88-a999-11474417925d", + "traceId": "8e71ebff894d4b129c7b24f6057d4989", + "evidence": "", + "checkedAt": "2026-08-08T04:36:22.199Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 上传产品图片", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/files/product-images" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "bae58376-589e-4b51-a77e-9a3e19594169, c8ac53f1-d1e3-47ff-8c2c-1b3812aeebd6", + "traceId": "b584c1c943af4d20a189e3f0299fcd35", + "evidence": "contentType=image/png", + "checkedAt": "2026-08-08T04:36:22.245Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "产品图片上传返回字符串文件 ID", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/files/product-images" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "bae58376-589e-4b51-a77e-9a3e19594169, c8ac53f1-d1e3-47ff-8c2c-1b3812aeebd6", + "traceId": "b584c1c943af4d20a189e3f0299fcd35", + "evidence": "fileIdType=string, contentType=image/png", + "checkedAt": "2026-08-08T04:36:22.245Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 可下载本轮产品图片", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/files/product-images/2085948203715854337" + }, + "http": 200, + "code": null, + "message": null, + "requestId": "af6cf11f-52e1-4179-8ce5-6815aa4701d5, f6b85bdc-0400-436a-aeb7-55ddec4ec479", + "traceId": "fcd50200e75a42a38ee44f388188c371", + "evidence": "bytes=68, contentType=image/png", + "checkedAt": "2026-08-08T04:36:22.279Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 创建四箱型隔离订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "60a379fa-8aa8-4e4b-9a9f-436fb7539969, 55f548ca-3625-4552-b588-088f1e12b527", + "traceId": "778078a55c6a48369d272886d7024ffe", + "evidence": "marker=ADMIN-API-20260808043621232", + "checkedAt": "2026-08-08T04:36:22.358Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 创建订单幂等重放", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "82c03838-b8aa-43ab-842f-8d8f3eb3dbbe, aa0974b4-f241-4a11-a908-a9948f526c5d", + "traceId": "4eb1bc1493554f4fb0fbff7467d0adb0", + "evidence": "", + "checkedAt": "2026-08-08T04:36:22.393Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 创建幂等结果一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "82c03838-b8aa-43ab-842f-8d8f3eb3dbbe, aa0974b4-f241-4a11-a908-a9948f526c5d", + "traceId": "4eb1bc1493554f4fb0fbff7467d0adb0", + "evidence": "orderId=2085948204177227778, replayedId=2085948204177227778", + "checkedAt": "2026-08-08T04:36:22.393Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询隔离订单草稿", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085948204177227778" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1e15e2e5-7f36-4357-baab-3cbceea9f156, b28127b0-2d7e-456a-9016-057b47b8b0f1", + "traceId": "27740dffce0a43969e25d5a9c2062dd9", + "evidence": "", + "checkedAt": "2026-08-08T04:36:22.421Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 草稿身份、marker 和状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085948204177227778" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1e15e2e5-7f36-4357-baab-3cbceea9f156, b28127b0-2d7e-456a-9016-057b47b8b0f1", + "traceId": "27740dffce0a43969e25d5a9c2062dd9", + "evidence": "orderNo=FL2085948204177227778, status=DRAFT", + "checkedAt": "2026-08-08T04:36:22.421Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "四箱型产品字段及图片契约完整回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085948204177227778" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1e15e2e5-7f36-4357-baab-3cbceea9f156, b28127b0-2d7e-456a-9016-057b47b8b0f1", + "traceId": "27740dffce0a43969e25d5a9c2062dd9", + "evidence": "cargoes=4, imageFileId=2085948203715854337", + "checkedAt": "2026-08-08T04:36:22.421Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 提交隔离订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg/2085948204177227778/submit" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "84e4b7c7-1d7a-4739-a5b6-59d5db5e7748, ef2f5b18-0d43-420d-b41e-0f4cd2bcfd3d", + "traceId": "832a2c5b45ca4b5499fe9b55e94a6e5e", + "evidence": "orderId=2085948204177227778", + "checkedAt": "2026-08-08T04:36:22.501Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 回查已提交订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085948204177227778" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9f3c4a4b-6607-433d-b157-2ff0cd4bfc9b, 6922abb2-506f-4b95-8b83-1575f9f670e4", + "traceId": "82b926d2ce504549901286193fce9a79", + "evidence": "", + "checkedAt": "2026-08-08T04:36:22.530Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 订单已进入待审核状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085948204177227778" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9f3c4a4b-6607-433d-b157-2ff0cd4bfc9b, 6922abb2-506f-4b95-8b83-1575f9f670e4", + "traceId": "82b926d2ce504549901286193fce9a79", + "evidence": "status=SUBMITTED", + "checkedAt": "2026-08-08T04:36:22.531Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询统一订单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders?page=1&size=100&tenantId=10001&orderNo=FL2085948204177227778" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9b914888-39db-4cba-85b8-3238e8575a55, cc314f6b-0b91-4298-aaa1-bc834b1986e7", + "traceId": "e935ea538f494a2baa0e0652d2b76e8d", + "evidence": "", + "checkedAt": "2026-08-08T04:36:22.572Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 统一订单列表只核对本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders?page=1&size=100&tenantId=10001&orderNo=FL2085948204177227778" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9b914888-39db-4cba-85b8-3238e8575a55, cc314f6b-0b91-4298-aaa1-bc834b1986e7", + "traceId": "e935ea538f494a2baa0e0652d2b76e8d", + "evidence": "orderId=2085948204177227778, found=true", + "checkedAt": "2026-08-08T04:36:22.572Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询统一订单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085948204177227778?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ebe47746-0d48-477c-91b9-7f00f98c1f4b, cec302f8-48ea-417c-bd39-85c84d56de06", + "traceId": "798ab46c5c424d198a29a623f6e92451", + "evidence": "", + "checkedAt": "2026-08-08T04:36:22.606Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 统一订单详情身份与待审核状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085948204177227778?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ebe47746-0d48-477c-91b9-7f00f98c1f4b, cec302f8-48ea-417c-bd39-85c84d56de06", + "traceId": "798ab46c5c424d198a29a623f6e92451", + "evidence": "mainStatus=PENDING_REVIEW, timeline=2", + "checkedAt": "2026-08-08T04:36:22.606Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询头程订单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg?tenantId=10001&keyword=FL2085948204177227778&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6f961383-a31d-42e5-b4b6-ff2c7ad494ca, 01886d95-fa49-47dd-bb60-4ade317c5efc", + "traceId": "cba899c9fefc4f159851ba2b72311a0d", + "evidence": "", + "checkedAt": "2026-08-08T04:36:22.641Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 头程订单列表只核对本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg?tenantId=10001&keyword=FL2085948204177227778&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6f961383-a31d-42e5-b4b6-ff2c7ad494ca, 01886d95-fa49-47dd-bb60-4ade317c5efc", + "traceId": "cba899c9fefc4f159851ba2b72311a0d", + "evidence": "orderId=2085948204177227778, found=true", + "checkedAt": "2026-08-08T04:36:22.641Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询头程订单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085948204177227778?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ffc3160a-db53-4d16-aab2-7217c4adb461, 73c02350-5f79-463a-9178-32a308074afe", + "traceId": "e553bfc4581245b8b796aaf38752d6d0", + "evidence": "", + "checkedAt": "2026-08-08T04:36:22.684Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 头程订单详情聚合结构完整", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085948204177227778?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ffc3160a-db53-4d16-aab2-7217c4adb461, 73c02350-5f79-463a-9178-32a308074afe", + "traceId": "e553bfc4581245b8b796aaf38752d6d0", + "evidence": "cargoes=4, history=2", + "checkedAt": "2026-08-08T04:36:22.684Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "四箱型产品字段及图片契约完整回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085948204177227778?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ffc3160a-db53-4d16-aab2-7217c4adb461, 73c02350-5f79-463a-9178-32a308074afe", + "traceId": "e553bfc4581245b8b796aaf38752d6d0", + "evidence": "cargoes=4, imageFileId=2085948203715854337", + "checkedAt": "2026-08-08T04:36:22.684Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 为本轮订单添加内部备注", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085948204177227778/internal-notes?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "47a4ff50-7dfb-411d-9ac5-19d514fac8f2, 3bb062de-6347-4016-966e-3a27bd1aa237", + "traceId": "85a7eb5f0c73490b96b3b2f26933dd5a", + "evidence": "", + "checkedAt": "2026-08-08T04:36:22.722Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 审核通过本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085948204177227778/approve?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "158a94e1-ed35-4a17-ab0c-2887310ef0ac, caccac7e-daf7-4c23-915f-5088abe29d8a", + "traceId": "446e27fc33fc4832b4183f3a7398b521", + "evidence": "orderId=2085948204177227778", + "checkedAt": "2026-08-08T04:36:22.766Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "审核后生成隔离入库单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085948204177227778?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0a690e19-2157-4243-8933-e7012b2349d0, b58630c1-f51e-4356-829b-8cc97e882271", + "traceId": "bbae658a34034fe6890402c47d148624", + "evidence": "inboundId=2085948211020214274", + "checkedAt": "2026-08-08T04:36:24.942Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询本轮入库单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085948211020214274?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d52ba924-ae98-481f-83c3-334b0b720dc7, 919052f6-1968-41c7-a718-af782742734e", + "traceId": "a8b6c5c124f04e46a9d357091f8d5d39", + "evidence": "inboundId=2085948211020214274", + "checkedAt": "2026-08-08T04:36:24.978Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "隔离入库单 marker 来源与可测量状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085948211020214274?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d52ba924-ae98-481f-83c3-334b0b720dc7, 919052f6-1968-41c7-a718-af782742734e", + "traceId": "a8b6c5c124f04e46a9d357091f8d5d39", + "evidence": "markerFound=true, status=WAIT_MEASURE", + "checkedAt": "2026-08-08T04:36:24.978Z" + }, + { + "module": "orders", + "scenario": null, + "name": "入库单详情包含托盘库位、文件、备注和状态历史", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085948211020214274?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d52ba924-ae98-481f-83c3-334b0b720dc7, 919052f6-1968-41c7-a718-af782742734e", + "traceId": "a8b6c5c124f04e46a9d357091f8d5d39", + "evidence": "inboundId=2085948211020214274, history=1", + "checkedAt": "2026-08-08T04:36:24.978Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询入库单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds?tenantId=10001&inboundCode=RK-2085948204177227778&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "bfefee0d-4e65-4fea-a93a-b14cb2928556, c1354ea7-efe7-41bb-8bcd-dd9206b26c5c", + "traceId": "b00ee89c1213479ebcff6a48ba1dbabb", + "evidence": "", + "checkedAt": "2026-08-08T04:36:25.035Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 入库单列表只核对本轮入库单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds?tenantId=10001&inboundCode=RK-2085948204177227778&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "bfefee0d-4e65-4fea-a93a-b14cb2928556, c1354ea7-efe7-41bb-8bcd-dd9206b26c5c", + "traceId": "b00ee89c1213479ebcff6a48ba1dbabb", + "evidence": "inboundId=2085948211020214274, total=1", + "checkedAt": "2026-08-08T04:36:25.035Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询本轮订单履约任务", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/by-order/2085948204177227778?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7c67bf46-36ba-4450-9ca4-c070fd8f8dd4, c6172bf6-538e-4d63-b03f-793f39b73c37", + "traceId": "5d2cb2ed068a48aa8a80cd9b5767e1cd", + "evidence": "新订单应生成可查询的履约任务", + "checkedAt": "2026-08-08T04:36:25.058Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "履约任务与本轮订单和客户一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/by-order/2085948204177227778?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7c67bf46-36ba-4450-9ca4-c070fd8f8dd4, c6172bf6-538e-4d63-b03f-793f39b73c37", + "traceId": "5d2cb2ed068a48aa8a80cd9b5767e1cd", + "evidence": "taskId=2085948211016019970, status=PENDING_ASSIGNMENT", + "checkedAt": "2026-08-08T04:36:25.058Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询本轮履约任务分配历史", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/2085948211016019970/assignment-history?tenantId=10001&page=1&size=20" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ace279ef-2cbd-43d9-998a-8ffd5286ae07, e473e2c8-87ca-49b1-a6db-1ad84de61977", + "traceId": "38a3c0ee51cc4e5a885e6022bd36068d", + "evidence": "", + "checkedAt": "2026-08-08T04:36:25.101Z" + }, + { + "module": "orders", + "scenario": null, + "name": "履约分配历史分页结构正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/2085948211016019970/assignment-history?tenantId=10001&page=1&size=20" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ace279ef-2cbd-43d9-998a-8ffd5286ae07, e473e2c8-87ca-49b1-a6db-1ad84de61977", + "traceId": "38a3c0ee51cc4e5a885e6022bd36068d", + "evidence": "taskId=2085948211016019970, total=0", + "checkedAt": "2026-08-08T04:36:25.101Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 受理本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085948204177227778/accept?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6e8032bc-79a4-4c5e-8483-2938c41d3e75, 12420267-5508-4d0e-bb34-891448d918b8", + "traceId": "509c2fd9ead842e5aada337bde9a6c97", + "evidence": "", + "checkedAt": "2026-08-08T04:36:25.163Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 启动本轮订单履约", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085948204177227778/start?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5db55e99-e30c-4c10-bb99-e366ac17755b, 23f8bdea-a02b-416d-96b1-3a7950a3a237", + "traceId": "2509b945557d4d249149d8ec12939410", + "evidence": "", + "checkedAt": "2026-08-08T04:36:25.211Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 回查本轮订单履约状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085948204177227778?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "869e614b-a1ac-4e9c-928a-5fb68c4bffa7, 4a0e1954-3edd-40d0-98a6-fd170fcd42a8", + "traceId": "2dcf437ad4bb4cfe8cce2d6f9cbfba95", + "evidence": "", + "checkedAt": "2026-08-08T04:36:25.251Z" + }, + { + "module": "orders", + "scenario": null, + "name": "本轮订单已进入处理中且保留状态历史", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085948204177227778?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "869e614b-a1ac-4e9c-928a-5fb68c4bffa7, 4a0e1954-3edd-40d0-98a6-fd170fcd42a8", + "traceId": "2dcf437ad4bb4cfe8cce2d6f9cbfba95", + "evidence": "status=PROCESSING, history=5", + "checkedAt": "2026-08-08T04:36:25.252Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "查询隔离入库单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085948211020214274?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ca74ce63-c259-4af0-a656-50bab07d78f3, 9a2d16e5-bc07-412e-a15d-c96a563aed72", + "traceId": "e439fafa2a834dcda9e11879804b2ba5", + "evidence": "inboundId=2085948211020214274, tenantId=10001", + "checkedAt": "2026-08-08T04:36:25.286Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "隔离入库单身份与可测量状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085948211020214274?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ca74ce63-c259-4af0-a656-50bab07d78f3, 9a2d16e5-bc07-412e-a15d-c96a563aed72", + "traceId": "e439fafa2a834dcda9e11879804b2ba5", + "evidence": "identity=true, status=WAIT_MEASURE", + "checkedAt": "2026-08-08T04:36:25.286Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "生成箱唛 PDF 并冻结稳定箱码", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/inbounds/2085948211020214274/carton-label-pdf?tenantId=10001" + }, + "http": 200, + "code": null, + "message": "13843 bytes (application/pdf)", + "requestId": "9c6e93a2-3ef7-43cc-8ce8-6c43dcf5299b, 3b7752bf-6848-428f-b369-f1a90c493d4a, 49145b34-76b5-414a-bba7-1c2c241f2d19", + "traceId": "ebe95fe3eb2a45b6a2f38d7fa36cf64d, 12591689ac2c4e56997abc2f4cfdad7b", + "evidence": "contentType=application/pdf, bytes=13843", + "checkedAt": "2026-08-08T04:36:25.454Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "首次打印后回查冻结箱数", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085948211020214274?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "533b632f-4cfa-4eb6-91eb-2ec93fcb60a1, 0c1f2866-38a4-405d-8e01-d71c41a53899", + "traceId": "e1c012725d0048a5b8d090d83df8a0bc", + "evidence": "", + "checkedAt": "2026-08-08T04:36:25.493Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "首次打印按订单货物冻结原始总箱数", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085948211020214274?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "533b632f-4cfa-4eb6-91eb-2ec93fcb60a1, 0c1f2866-38a4-405d-8e01-d71c41a53899", + "traceId": "e1c012725d0048a5b8d090d83df8a0bc", + "evidence": "inboundCodeStable=true, totalPackageCount=4", + "checkedAt": "2026-08-08T04:36:25.493Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "重复整单打印复用已冻结箱码映射", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/inbounds/2085948211020214274/carton-label-pdf?tenantId=10001" + }, + "http": 200, + "code": null, + "message": "13843 bytes (application/pdf)", + "requestId": "fded9071-d088-4b8d-b00c-ee34a0c9fd7e, 204c092c-d1e3-4df5-a8cf-480c5195ea1d, e823adfd-b9cf-482d-8eab-029283a527e6", + "traceId": "55662912ba264f30a881ae536a3bbc6b, 2c1028ad55504aba99bd8b002aa8d6f4", + "evidence": "boxCode=RK-2085948204177227778#4-1, contentType=application/pdf, bytes=13843", + "checkedAt": "2026-08-08T04:36:25.655Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "指定第1箱补打复用已冻结箱码映射", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/inbounds/2085948211020214274/carton-label-pdf?tenantId=10001&cartonIndex=1" + }, + "http": 200, + "code": null, + "message": "7581 bytes (application/pdf)", + "requestId": "0e9d55f6-6c0b-4d8d-8f5a-37f583fa5ee2, fbdd6ce2-e448-4b62-90ad-ef717a0de491, 8c5ccc7d-49c1-40f1-bcf6-a108f85e87eb", + "traceId": "b8ebda8a984946fe804c8499b1f6798d, a0f3dee9c3ed4111ba278e873d1b24a5", + "evidence": "boxCode=RK-2085948204177227778#4-1, cartonIndex=1, contentType=application/pdf, bytes=7581", + "checkedAt": "2026-08-08T04:36:25.777Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "模拟墨家首次扫描单箱", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085948211020214274/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8d4def70-b818-4d15-a5e3-0c2ba7f2c237, 50b478eb-8a74-4afd-be85-9c8d72973337", + "traceId": "8cfc88d659cb478c82be4c885517d4c0", + "evidence": "boxCode=RK-2085948204177227778#4-1, machineNo=MJ-ADMIN-E2E-01", + "checkedAt": "2026-08-08T04:36:25.848Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "首次扫描新增一条且默认代表1箱", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085948211020214274/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8d4def70-b818-4d15-a5e3-0c2ba7f2c237, 50b478eb-8a74-4afd-be85-9c8d72973337", + "traceId": "8cfc88d659cb478c82be4c885517d4c0", + "evidence": "created=true, confirmedPackageCount=1", + "checkedAt": "2026-08-08T04:36:25.848Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "重复打印及指定箱补打后原箱码仍可解析", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085948211020214274/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8d4def70-b818-4d15-a5e3-0c2ba7f2c237, 50b478eb-8a74-4afd-be85-9c8d72973337", + "traceId": "8cfc88d659cb478c82be4c885517d4c0", + "evidence": "boxCodeStable=true, resolvedInboundId=2085948211020214274", + "checkedAt": "2026-08-08T04:36:25.848Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "查询箱级测量详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085948211020214274/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2ea76361-ac3b-4d3d-8203-f4a01880c53b, 5b28d2ac-dcf9-4f89-b925-346c9ad1d5fa", + "traceId": "6b092a5ae8fb4817bca453ad0ba2e719", + "evidence": "measurementId=2085948218792259585", + "checkedAt": "2026-08-08T04:36:25.889Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "箱级查询回显箱码、尺寸、图片与设备信息", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085948211020214274/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2ea76361-ac3b-4d3d-8203-f4a01880c53b, 5b28d2ac-dcf9-4f89-b925-346c9ad1d5fa", + "traceId": "6b092a5ae8fb4817bca453ad0ba2e719", + "evidence": "itemFound=true, imageFileId=2085948218739851266", + "checkedAt": "2026-08-08T04:36:25.889Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "人工确认当前测量代表箱数", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/inbounds/2085948211020214274/measurement/items/2085948218800648193/confirmed-package-count?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "26acc972-d5a5-4413-8a53-6412fdf1faf4, bf7eea29-5ef0-47b0-8e0e-449e7eb27edc", + "traceId": "6dfca7ac79e6469f81f53c6709f2fa1e", + "evidence": "confirmedPackageCount=4", + "checkedAt": "2026-08-08T04:36:25.942Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "人工箱数更新且测量版本递增", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/inbounds/2085948211020214274/measurement/items/2085948218800648193/confirmed-package-count?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "26acc972-d5a5-4413-8a53-6412fdf1faf4, bf7eea29-5ef0-47b0-8e0e-449e7eb27edc", + "traceId": "6dfca7ac79e6469f81f53c6709f2fa1e", + "evidence": "version=2", + "checkedAt": "2026-08-08T04:36:25.942Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "同箱号重新扫描覆盖当前记录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085948211020214274/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a53ddd99-d29f-4921-9d1a-0d109de6bf61, bb94e059-5b55-4336-a0c5-ef5ffc812837", + "traceId": "9992d1afbd0c4b4c8d2d0b413a497b9a", + "evidence": "boxCode=RK-2085948204177227778#4-1, machineNo=MJ-ADMIN-E2E-02", + "checkedAt": "2026-08-08T04:36:26.023Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "覆盖保留同一条记录和人工箱数", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085948211020214274/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a53ddd99-d29f-4921-9d1a-0d109de6bf61, bb94e059-5b55-4336-a0c5-ef5ffc812837", + "traceId": "9992d1afbd0c4b4c8d2d0b413a497b9a", + "evidence": "sameItem=true, confirmedPackageCount=4", + "checkedAt": "2026-08-08T04:36:26.023Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "回查覆盖后的尺寸与体积结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085948211020214274/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2848c5a1-9dc0-47a5-af67-c1baca4fb973, 5e787fde-2d26-48f2-9081-9c32e7a93a11", + "traceId": "d9bd4fdc1e2247b182bfe9ba2a6ab43c", + "evidence": "", + "checkedAt": "2026-08-08T04:36:26.056Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "覆盖尺寸、箱数和服务端体积公式正确", + "passed": false, + "deploymentBlocker": true, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085948211020214274/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2848c5a1-9dc0-47a5-af67-c1baca4fb973, 5e787fde-2d26-48f2-9081-9c32e7a93a11", + "traceId": "d9bd4fdc1e2247b182bfe9ba2a6ab43c", + "evidence": "unitVolume=0.0768, totalVolume=0.3072, volumeWeight=51.303, girth=204.5", + "checkedAt": "2026-08-08T04:36:26.057Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "保存同一测量批次草稿", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/inbounds/2085948211020214274/measurement/draft?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "fa418297-51f9-4ede-bc94-569db8837226, e6e6ee17-2517-472a-bb23-18be744abfc8", + "traceId": "77ea627d0647472daa7a1f92d54965e3", + "evidence": "measurementId=2085948218792259585, items=1", + "checkedAt": "2026-08-08T04:36:26.103Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "草稿沿用批次并递增版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/inbounds/2085948211020214274/measurement/draft?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "fa418297-51f9-4ede-bc94-569db8837226, e6e6ee17-2517-472a-bb23-18be744abfc8", + "traceId": "77ea627d0647472daa7a1f92d54965e3", + "evidence": "status=DRAFT, version=4", + "checkedAt": "2026-08-08T04:36:26.103Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "提交测量审核", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085948211020214274/measurement/submit?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "022a1806-d3c9-44d0-a546-f84993f794b9, da31ff6b-8c26-41e7-8796-f8574f3516cb", + "traceId": "8a313e87f5d043b28f132a75a65b1513", + "evidence": "measurementId=2085948218792259585", + "checkedAt": "2026-08-08T04:36:26.143Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "提交后进入待测量审核状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085948211020214274/measurement/submit?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "022a1806-d3c9-44d0-a546-f84993f794b9, da31ff6b-8c26-41e7-8796-f8574f3516cb", + "traceId": "8a313e87f5d043b28f132a75a65b1513", + "evidence": "processStatus=MEASURE_PENDING, reviewStatus=PENDING", + "checkedAt": "2026-08-08T04:36:26.143Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "测量提交后拒绝设备覆盖并返回中文提示", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085948211020214274/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "A0409", + "message": "测量已提交,设备不能新增或覆盖数据", + "requestId": "f3d20b2f-94b5-4e8e-8496-c11b8119fd5c", + "traceId": "78a2943ca23c4584a9482ba13c625de5", + "evidence": "HTTP=200, code=A0409, chineseMessage=true", + "checkedAt": "2026-08-08T04:36:26.183Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "审核前读取最新入库单版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085948211020214274?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f4056bf2-497d-41e3-8d32-65843453cc95, 737665bc-bd0f-4c5e-8891-dfda3cc77994", + "traceId": "968e650e523b4fe3bf15f3405b765298", + "evidence": "", + "checkedAt": "2026-08-08T04:36:26.227Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "审核前状态和版本有效", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085948211020214274?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f4056bf2-497d-41e3-8d32-65843453cc95, 737665bc-bd0f-4c5e-8891-dfda3cc77994", + "traceId": "968e650e523b4fe3bf15f3405b765298", + "evidence": "status=MEASURE_PENDING, version=1", + "checkedAt": "2026-08-08T04:36:26.227Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "Admin 审核通过墨家测量", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/inbounds/2085948211020214274/measurements/approve?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ec76a816-e49d-4230-92e8-5826eb7697d6, da9a1089-cd80-4717-9cae-0d77731032ae", + "traceId": "97e0448ce13b4d8284f7d64cfa13580e", + "evidence": "measurementId=2085948218792259585", + "checkedAt": "2026-08-08T04:36:26.274Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "查询审核后的最终测量状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085948211020214274/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2dc0585b-99e1-4ff0-a8d2-317056221a85, dcbe1888-0d64-4bb6-943e-87571c43aeb5", + "traceId": "3ba39f9281324d91b54aa75b4d0d99d1", + "evidence": "", + "checkedAt": "2026-08-08T04:36:26.306Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "审核后入库与测量状态闭环且结果未变化", + "passed": false, + "deploymentBlocker": true, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085948211020214274/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2dc0585b-99e1-4ff0-a8d2-317056221a85, dcbe1888-0d64-4bb6-943e-87571c43aeb5", + "traceId": "3ba39f9281324d91b54aa75b4d0d99d1", + "evidence": "processStatus=INBOUNDED, measurementStatus=APPROVED, packages=4", + "checkedAt": "2026-08-08T04:36:26.306Z" + } + ] +} diff --git a/reports/admin-orders-mojia-postdeploy-rerun-20260808.json b/reports/admin-orders-mojia-postdeploy-rerun-20260808.json new file mode 100644 index 000000000..ebc4f18f5 --- /dev/null +++ b/reports/admin-orders-mojia-postdeploy-rerun-20260808.json @@ -0,0 +1,1499 @@ +{ + "reportName": "后台管理测试环境 HTTP API 验收", + "marker": "ADMIN-API-20260808043754821", + "gateway": "http://8.163.30.128:9000", + "generatedAt": "2026-08-08T04:37:59.059Z", + "startedAt": "2026-08-08T04:37:54.821Z", + "success": true, + "fatal": null, + "summary": { + "total": 78, + "passed": 78, + "failed": 0 + }, + "modules": [ + { + "name": "orders", + "startedAt": "2026-08-08T04:37:55.209Z", + "finishedAt": "2026-08-08T04:37:57.839Z", + "success": true, + "passed": 49, + "failed": 0, + "fatal": null + }, + { + "name": "inbound-measurement", + "startedAt": "2026-08-08T04:37:57.840Z", + "finishedAt": "2026-08-08T04:37:59.059Z", + "success": true, + "passed": 28, + "failed": 0, + "fatal": null + } + ], + "scenarios": [ + { + "name": "mojia-carton-measurement", + "module": "inbound-measurement", + "success": true, + "deploymentBlocked": false, + "passed": 28, + "failed": 0 + } + ], + "deploymentBlockers": [], + "createdResources": { + "orders": { + "marker": "ADMIN-API-20260808043754821", + "tenantId": "10001", + "orderId": "2085948596873134082", + "productImageFileId": "2085948596487258113", + "boxTypes": [ + "SMALL", + "MEDIUM", + "LARGE", + "EXTRA_LARGE" + ], + "inboundId": "2085948601400864770", + "orderNo": "FL2085948596873134082", + "inboundCode": "RK-2085948596873134082", + "processStatus": "WAIT_MEASURE", + "taskId": "2085948601392476162" + }, + "ocrInbound": { + "tenantId": "10001", + "inboundId": "2085948601400864770", + "marker": "ADMIN-API-20260808043754821" + }, + "testInbound": { + "tenantId": "10001", + "inboundId": "2085948601400864770", + "marker": "ADMIN-API-20260808043754821" + }, + "inboundMeasurement": { + "marker": "ADMIN-API-20260808043754821", + "tenantId": "10001", + "inboundId": "2085948601400864770", + "measurementId": "2085948607017037825", + "boxCode": "RK-2085948596873134082#4-1", + "finalStatus": "APPROVED" + } + }, + "excluded": [ + { + "scope": "dashboard", + "reason": "首页为静态演示数据,不调用后端 API" + }, + { + "scope": "hidden-prototypes", + "reason": "隐藏原型页面尚无已确认后端契约" + } + ], + "securityNote": "报告不保存登录密码、Access Token、Refresh Token、图片二进制或 OCR 原文全文。", + "steps": [ + { + "module": "authentication", + "scenario": null, + "name": "平台管理员登录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/auth/login" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2173db7a-0c45-46f6-9c99-f8b587bafce4, cd05f413-5a16-4405-b05c-0bde21ccbdcb", + "traceId": "495e6e9172a641e89da6091ac116e1f8", + "evidence": "", + "checkedAt": "2026-08-08T04:37:55.207Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 测试账号登录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/auth/login" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "17a8abe3-fdf3-4912-a41c-795fe6a3e2df, f397d315-366b-4d82-8c40-09b5d4f1cb88", + "traceId": "7c9593be12bb4f7baf20aeac910a10c1", + "evidence": "username=merchant_admin", + "checkedAt": "2026-08-08T04:37:55.573Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询当前企业资料", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/iam/tenant/profile" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8fd140d8-ef35-408a-8c41-25c05d1c3128, 6b034071-409b-499e-8bae-dac2a41705eb", + "traceId": "659c37d6a83449b6b4a016ea9bae93c7", + "evidence": "", + "checkedAt": "2026-08-08T04:37:55.611Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 测试企业已审核且客户 ID 有效", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/iam/tenant/profile" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8fd140d8-ef35-408a-8c41-25c05d1c3128, 6b034071-409b-499e-8bae-dac2a41705eb", + "traceId": "659c37d6a83449b6b4a016ea9bae93c7", + "evidence": "tenantId=10001, status=ACTIVE", + "checkedAt": "2026-08-08T04:37:55.611Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询客户固定箱型", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "850427cf-b34c-4b02-965f-0a053cd06f16, a6a78158-b636-46d1-a8d8-7653049a481d", + "traceId": "530372130dad4817bec9c3dadc1a7691", + "evidence": "tenantId=10001", + "checkedAt": "2026-08-08T04:37:55.686Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "固定四箱型顺序、内径及每边加2cm正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "850427cf-b34c-4b02-965f-0a053cd06f16, a6a78158-b636-46d1-a8d8-7653049a481d", + "traceId": "530372130dad4817bec9c3dadc1a7691", + "evidence": "types=SMALL,MEDIUM,LARGE,EXTRA_LARGE", + "checkedAt": "2026-08-08T04:37:55.686Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询国内收货仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=DOMESTIC" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ad5499d8-04ec-4d58-adf1-1da56688232d, 5c06765e-1183-46fc-8cc3-3a75d6b869fe", + "traceId": "e90ef78eb63b454ca76db27615cdf4b3", + "evidence": "", + "checkedAt": "2026-08-08T04:37:55.719Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在可用国内收货仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=DOMESTIC" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ad5499d8-04ec-4d58-adf1-1da56688232d, 5c06765e-1183-46fc-8cc3-3a75d6b869fe", + "traceId": "e90ef78eb63b454ca76db27615cdf4b3", + "evidence": "count=2", + "checkedAt": "2026-08-08T04:37:55.719Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询 FBA 目的仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=FBA" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "901be2d9-a767-4d30-9faf-d2154804987f, 792b8682-d7f6-4494-9bd2-280168472fa9", + "traceId": "2404dd0cca844b1985bbd3db625cc1ff", + "evidence": "", + "checkedAt": "2026-08-08T04:37:55.776Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在可用 FBA 目的仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=FBA" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "901be2d9-a767-4d30-9faf-d2154804987f, 792b8682-d7f6-4494-9bd2-280168472fa9", + "traceId": "2404dd0cca844b1985bbd3db625cc1ff", + "evidence": "count=200", + "checkedAt": "2026-08-08T04:37:55.776Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询可用计费渠道", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/first-leg/pricing/channels?originWarehouseId=193000000000200001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b5174ad0-e52b-475f-a349-c2a11b4a5284, ca05c53f-8cbe-4d09-84a5-accd20b111a0", + "traceId": "86ca52fdb4ca4c628dc0d45681c7e2e8", + "evidence": "", + "checkedAt": "2026-08-08T04:37:55.817Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在带计价税制的可用渠道", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/first-leg/pricing/channels?originWarehouseId=193000000000200001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b5174ad0-e52b-475f-a349-c2a11b4a5284, ca05c53f-8cbe-4d09-84a5-accd20b111a0", + "traceId": "86ca52fdb4ca4c628dc0d45681c7e2e8", + "evidence": "count=15", + "checkedAt": "2026-08-08T04:37:55.817Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询发货客户候选", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/partners/candidates?type=SHIPPER" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b665628b-05d0-4e13-bed1-1a1da3eec501, da0b2824-e5c8-4ed5-88c4-e11785261d3d", + "traceId": "8510b2cdf3ca4809a8104e5f585180b1", + "evidence": "", + "checkedAt": "2026-08-08T04:37:55.853Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 上传产品图片", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/files/product-images" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f3d3cda5-9a91-4f7d-9289-1049190fb8cb, e33e4c04-44a5-45aa-9f16-0a0ee3ecd5bb", + "traceId": "4392009b81944dd08769311ae959781f", + "evidence": "contentType=image/png", + "checkedAt": "2026-08-08T04:37:55.885Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "产品图片上传返回字符串文件 ID", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/files/product-images" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f3d3cda5-9a91-4f7d-9289-1049190fb8cb, e33e4c04-44a5-45aa-9f16-0a0ee3ecd5bb", + "traceId": "4392009b81944dd08769311ae959781f", + "evidence": "fileIdType=string, contentType=image/png", + "checkedAt": "2026-08-08T04:37:55.885Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 可下载本轮产品图片", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/files/product-images/2085948596487258113" + }, + "http": 200, + "code": null, + "message": null, + "requestId": "4be89273-a550-44f0-9d2e-92430dcc43e8, 5793561f-0c8d-43e8-acdf-ae976650f5c8", + "traceId": "d68a23b7a34f4c30969fed064917b221", + "evidence": "bytes=68, contentType=image/png", + "checkedAt": "2026-08-08T04:37:55.909Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 创建四箱型隔离订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "35d5f83a-886e-4c92-be39-941cd5ea71a3, b864d63c-199e-4719-b0b5-f8d2d8be44a0", + "traceId": "38be4c1d004545c4a3addfec230a03ac", + "evidence": "marker=ADMIN-API-20260808043754821", + "checkedAt": "2026-08-08T04:37:55.985Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 创建订单幂等重放", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ae228b78-1356-464e-adb6-57e132d797a2, 4b341bef-9487-4daa-b03f-f5e74ce3c02c", + "traceId": "61c7f29eb7d54b0d8c675a45fdf30def", + "evidence": "", + "checkedAt": "2026-08-08T04:37:56.030Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 创建幂等结果一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ae228b78-1356-464e-adb6-57e132d797a2, 4b341bef-9487-4daa-b03f-f5e74ce3c02c", + "traceId": "61c7f29eb7d54b0d8c675a45fdf30def", + "evidence": "orderId=2085948596873134082, replayedId=2085948596873134082", + "checkedAt": "2026-08-08T04:37:56.030Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询隔离订单草稿", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085948596873134082" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a94988b3-990d-4d57-be05-e7a977bc765a, b7ec3446-ab18-4dfa-a6d0-888fffce1cf2", + "traceId": "955d933da1dd487db8ff9558fd7819e5", + "evidence": "", + "checkedAt": "2026-08-08T04:37:56.058Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 草稿身份、marker 和状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085948596873134082" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a94988b3-990d-4d57-be05-e7a977bc765a, b7ec3446-ab18-4dfa-a6d0-888fffce1cf2", + "traceId": "955d933da1dd487db8ff9558fd7819e5", + "evidence": "orderNo=FL2085948596873134082, status=DRAFT", + "checkedAt": "2026-08-08T04:37:56.058Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "四箱型产品字段及图片契约完整回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085948596873134082" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a94988b3-990d-4d57-be05-e7a977bc765a, b7ec3446-ab18-4dfa-a6d0-888fffce1cf2", + "traceId": "955d933da1dd487db8ff9558fd7819e5", + "evidence": "cargoes=4, imageFileId=2085948596487258113", + "checkedAt": "2026-08-08T04:37:56.058Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 提交隔离订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg/2085948596873134082/submit" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5fe94039-3ca8-47a1-87d0-48ae230a0251, a798fcb9-e8c4-444b-8fc6-741c2c25b13e", + "traceId": "2b0954dd3229458b83dec20491dbb703", + "evidence": "orderId=2085948596873134082", + "checkedAt": "2026-08-08T04:37:56.139Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 回查已提交订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085948596873134082" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "31a86b7b-d63b-4b30-90aa-c26d6bac0e4c, 27244cae-be9d-41d8-b44a-06c041974aa7", + "traceId": "d5176479328944f6800c56756da2b282", + "evidence": "", + "checkedAt": "2026-08-08T04:37:56.276Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 订单已进入待审核状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085948596873134082" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "31a86b7b-d63b-4b30-90aa-c26d6bac0e4c, 27244cae-be9d-41d8-b44a-06c041974aa7", + "traceId": "d5176479328944f6800c56756da2b282", + "evidence": "status=SUBMITTED", + "checkedAt": "2026-08-08T04:37:56.276Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询统一订单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders?page=1&size=100&tenantId=10001&orderNo=FL2085948596873134082" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9cf54664-25af-4b1b-9096-407d968aae25, a0b00c87-f20e-4302-8d25-75b6b7e979c8", + "traceId": "4272003979ed4501b52465f397050f49", + "evidence": "", + "checkedAt": "2026-08-08T04:37:56.324Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 统一订单列表只核对本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders?page=1&size=100&tenantId=10001&orderNo=FL2085948596873134082" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9cf54664-25af-4b1b-9096-407d968aae25, a0b00c87-f20e-4302-8d25-75b6b7e979c8", + "traceId": "4272003979ed4501b52465f397050f49", + "evidence": "orderId=2085948596873134082, found=true", + "checkedAt": "2026-08-08T04:37:56.324Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询统一订单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085948596873134082?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "66f78b6b-cdf3-474a-9176-6e04eefbbbfb, d30ac62e-72f1-4353-8c2f-001714a2a3ed", + "traceId": "78516b7b79814a3b84f79e46dbf16055", + "evidence": "", + "checkedAt": "2026-08-08T04:37:56.356Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 统一订单详情身份与待审核状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085948596873134082?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "66f78b6b-cdf3-474a-9176-6e04eefbbbfb, d30ac62e-72f1-4353-8c2f-001714a2a3ed", + "traceId": "78516b7b79814a3b84f79e46dbf16055", + "evidence": "mainStatus=PENDING_REVIEW, timeline=2", + "checkedAt": "2026-08-08T04:37:56.356Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询头程订单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg?tenantId=10001&keyword=FL2085948596873134082&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4cff1c45-dc5d-480a-b213-96bf221f7a34, 708989f7-692a-49cd-98b5-dd0fa742abc3", + "traceId": "bde23ced51994ce48df2333c3d5e2d52", + "evidence": "", + "checkedAt": "2026-08-08T04:37:56.390Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 头程订单列表只核对本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg?tenantId=10001&keyword=FL2085948596873134082&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4cff1c45-dc5d-480a-b213-96bf221f7a34, 708989f7-692a-49cd-98b5-dd0fa742abc3", + "traceId": "bde23ced51994ce48df2333c3d5e2d52", + "evidence": "orderId=2085948596873134082, found=true", + "checkedAt": "2026-08-08T04:37:56.390Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询头程订单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085948596873134082?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "fd16721d-de1f-49ba-bca2-65cc0fd003a5, df3b6046-a51e-446e-98c8-ec2ad0d6199b", + "traceId": "67a5f6db8e4c46b6bd1fca409b0ee277", + "evidence": "", + "checkedAt": "2026-08-08T04:37:56.420Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 头程订单详情聚合结构完整", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085948596873134082?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "fd16721d-de1f-49ba-bca2-65cc0fd003a5, df3b6046-a51e-446e-98c8-ec2ad0d6199b", + "traceId": "67a5f6db8e4c46b6bd1fca409b0ee277", + "evidence": "cargoes=4, history=2", + "checkedAt": "2026-08-08T04:37:56.421Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "四箱型产品字段及图片契约完整回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085948596873134082?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "fd16721d-de1f-49ba-bca2-65cc0fd003a5, df3b6046-a51e-446e-98c8-ec2ad0d6199b", + "traceId": "67a5f6db8e4c46b6bd1fca409b0ee277", + "evidence": "cargoes=4, imageFileId=2085948596487258113", + "checkedAt": "2026-08-08T04:37:56.421Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 为本轮订单添加内部备注", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085948596873134082/internal-notes?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "fa2e2624-4432-4a56-adb8-e8be94fa5ed8, 94a6528c-f217-4d5d-be31-15477d52dd6f", + "traceId": "ee761b5e5d9b4c6597410d3c0f142098", + "evidence": "", + "checkedAt": "2026-08-08T04:37:56.452Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 审核通过本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085948596873134082/approve?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5ee501a1-5558-44c5-aa83-6a1c206a7bfb, c267607c-6def-4fa2-bd80-0e365b9dba8e", + "traceId": "2eccca4102474eb082155798aef62520", + "evidence": "orderId=2085948596873134082", + "checkedAt": "2026-08-08T04:37:56.486Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "审核后生成隔离入库单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085948596873134082?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "faccaee6-fd24-450c-8160-d596594c9c87, 2ca7a887-3af8-4151-ad07-57bd31b7a6af", + "traceId": "c0ad50762ae74904a6434699a15b04a5", + "evidence": "inboundId=2085948601400864770", + "checkedAt": "2026-08-08T04:37:57.593Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询本轮入库单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085948601400864770?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "aa42ddd4-4918-40cc-8066-04b824de7cc5, 710ec5e2-bae8-4a0d-b76d-6edc2e8e5287", + "traceId": "49597bba82f2460abd98ec67ef77bf0f", + "evidence": "inboundId=2085948601400864770", + "checkedAt": "2026-08-08T04:37:57.626Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "隔离入库单 marker 来源与可测量状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085948601400864770?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "aa42ddd4-4918-40cc-8066-04b824de7cc5, 710ec5e2-bae8-4a0d-b76d-6edc2e8e5287", + "traceId": "49597bba82f2460abd98ec67ef77bf0f", + "evidence": "markerFound=true, status=WAIT_MEASURE", + "checkedAt": "2026-08-08T04:37:57.626Z" + }, + { + "module": "orders", + "scenario": null, + "name": "入库单详情包含托盘库位、文件、备注和状态历史", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085948601400864770?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "aa42ddd4-4918-40cc-8066-04b824de7cc5, 710ec5e2-bae8-4a0d-b76d-6edc2e8e5287", + "traceId": "49597bba82f2460abd98ec67ef77bf0f", + "evidence": "inboundId=2085948601400864770, history=1", + "checkedAt": "2026-08-08T04:37:57.626Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询入库单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds?tenantId=10001&inboundCode=RK-2085948596873134082&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9eee952e-3d23-48c7-a92f-49900ce16e4d, 8ef36885-2043-4348-9eb0-03a4b5feb7af", + "traceId": "c3f3cdd6e54849f590e8883b4e28fcab", + "evidence": "", + "checkedAt": "2026-08-08T04:37:57.659Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 入库单列表只核对本轮入库单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds?tenantId=10001&inboundCode=RK-2085948596873134082&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9eee952e-3d23-48c7-a92f-49900ce16e4d, 8ef36885-2043-4348-9eb0-03a4b5feb7af", + "traceId": "c3f3cdd6e54849f590e8883b4e28fcab", + "evidence": "inboundId=2085948601400864770, total=1", + "checkedAt": "2026-08-08T04:37:57.659Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询本轮订单履约任务", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/by-order/2085948596873134082?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "efa0b57a-1b5d-4e0c-ac97-809a72415798, dd6ce866-3d2f-48ce-b79d-75af11e88967", + "traceId": "084b9f1a899a413ab2de9562cd029909", + "evidence": "新订单应生成可查询的履约任务", + "checkedAt": "2026-08-08T04:37:57.700Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "履约任务与本轮订单和客户一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/by-order/2085948596873134082?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "efa0b57a-1b5d-4e0c-ac97-809a72415798, dd6ce866-3d2f-48ce-b79d-75af11e88967", + "traceId": "084b9f1a899a413ab2de9562cd029909", + "evidence": "taskId=2085948601392476162, status=PENDING_ASSIGNMENT", + "checkedAt": "2026-08-08T04:37:57.700Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询本轮履约任务分配历史", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/2085948601392476162/assignment-history?tenantId=10001&page=1&size=20" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e132c67e-5c6f-4e71-8803-3748b3ae03d5, 3f29b9fb-2d1b-4a6c-8992-32d4f2a5c0fe", + "traceId": "13655c93aef644b7bd1b38ba6e7323da", + "evidence": "", + "checkedAt": "2026-08-08T04:37:57.732Z" + }, + { + "module": "orders", + "scenario": null, + "name": "履约分配历史分页结构正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/2085948601392476162/assignment-history?tenantId=10001&page=1&size=20" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e132c67e-5c6f-4e71-8803-3748b3ae03d5, 3f29b9fb-2d1b-4a6c-8992-32d4f2a5c0fe", + "traceId": "13655c93aef644b7bd1b38ba6e7323da", + "evidence": "taskId=2085948601392476162, total=0", + "checkedAt": "2026-08-08T04:37:57.732Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 受理本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085948596873134082/accept?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d1119f0b-fe30-46bb-b78d-5c553356be65, baf5fdd6-2636-4550-a27f-b078ff4c983f", + "traceId": "fa5efb54919845ad9cdef52ad66b1e8b", + "evidence": "", + "checkedAt": "2026-08-08T04:37:57.768Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 启动本轮订单履约", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085948596873134082/start?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d0b339ea-3357-4bc3-ab6f-08af72f12d0b, a8392818-747b-49b6-ab98-b1254215f68b", + "traceId": "a0d5fcb63fbd4e9389b995fa5d8068cf", + "evidence": "", + "checkedAt": "2026-08-08T04:37:57.812Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 回查本轮订单履约状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085948596873134082?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d3ae8ccb-6c29-4d36-92dd-c7b809e0f3f3, e62676e5-b8cb-4fe0-ae0d-95a27a2168c7", + "traceId": "a9ba5885dd494746ab6eb9bccfc89fdf", + "evidence": "", + "checkedAt": "2026-08-08T04:37:57.839Z" + }, + { + "module": "orders", + "scenario": null, + "name": "本轮订单已进入处理中且保留状态历史", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085948596873134082?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d3ae8ccb-6c29-4d36-92dd-c7b809e0f3f3, e62676e5-b8cb-4fe0-ae0d-95a27a2168c7", + "traceId": "a9ba5885dd494746ab6eb9bccfc89fdf", + "evidence": "status=PROCESSING, history=5", + "checkedAt": "2026-08-08T04:37:57.839Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "查询隔离入库单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085948601400864770?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b2385d10-4a74-447f-a8a9-637a758efd4b, 0095ef73-6a92-4c2f-b2cc-8b3fe4768964", + "traceId": "8e722953cb104cb4bd75a32d46320c72", + "evidence": "inboundId=2085948601400864770, tenantId=10001", + "checkedAt": "2026-08-08T04:37:57.873Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "隔离入库单身份与可测量状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085948601400864770?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b2385d10-4a74-447f-a8a9-637a758efd4b, 0095ef73-6a92-4c2f-b2cc-8b3fe4768964", + "traceId": "8e722953cb104cb4bd75a32d46320c72", + "evidence": "identity=true, status=WAIT_MEASURE", + "checkedAt": "2026-08-08T04:37:57.873Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "生成箱唛 PDF 并冻结稳定箱码", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/inbounds/2085948601400864770/carton-label-pdf?tenantId=10001" + }, + "http": 200, + "code": null, + "message": "13892 bytes (application/pdf)", + "requestId": "0f820e00-ea17-438b-9a1e-0d19fc65e5f6, 52242eca-d8de-43e3-a562-bf448317c9f8, ef95343f-33b0-4f3a-9e2b-d01e5dfc152c", + "traceId": "755670f8aa9e4e088a3f51be1078ff7f, 2bfcc9b4ddcf42d0aa62d3709bb9a774", + "evidence": "contentType=application/pdf, bytes=13892", + "checkedAt": "2026-08-08T04:37:58.010Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "首次打印后回查冻结箱数", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085948601400864770?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "79e05c62-5c16-4ce8-aeb6-6155cdf833dc, 6b1b5e35-fc63-404b-879f-ab1e4acf3ee9", + "traceId": "cd8f043902d2450ba4a2edebb0d0c24e", + "evidence": "", + "checkedAt": "2026-08-08T04:37:58.053Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "首次打印按订单货物冻结原始总箱数", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085948601400864770?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "79e05c62-5c16-4ce8-aeb6-6155cdf833dc, 6b1b5e35-fc63-404b-879f-ab1e4acf3ee9", + "traceId": "cd8f043902d2450ba4a2edebb0d0c24e", + "evidence": "inboundCodeStable=true, totalPackageCount=4", + "checkedAt": "2026-08-08T04:37:58.053Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "重复整单打印复用已冻结箱码映射", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/inbounds/2085948601400864770/carton-label-pdf?tenantId=10001" + }, + "http": 200, + "code": null, + "message": "13892 bytes (application/pdf)", + "requestId": "ae5b5988-932b-4125-af92-0be2967b2ab3, 752aaa23-56ef-4b70-83dd-277c3286e156, aa760d04-c189-4659-89b6-ce90fc8fc9c6", + "traceId": "23e373809bde43dfa4f91f019e13ab6b, 34e223d8799041aea1add3c281d1843a", + "evidence": "boxCode=RK-2085948596873134082#4-1, contentType=application/pdf, bytes=13892", + "checkedAt": "2026-08-08T04:37:58.180Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "指定第1箱补打复用已冻结箱码映射", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/inbounds/2085948601400864770/carton-label-pdf?tenantId=10001&cartonIndex=1" + }, + "http": 200, + "code": null, + "message": "7736 bytes (application/pdf)", + "requestId": "5f4afcc6-bf9b-4d0d-af20-f919a85c2903, be4654a9-314a-4960-9f9a-1dd782c5928d, d5927b23-2e48-4377-a4a7-5f3fabaf19ef", + "traceId": "0ebb7feba3134754ba40e553fbca39f1, 67c82377fe744d6682392612def038a4", + "evidence": "boxCode=RK-2085948596873134082#4-1, cartonIndex=1, contentType=application/pdf, bytes=7736", + "checkedAt": "2026-08-08T04:37:58.327Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "模拟墨家首次扫描单箱", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085948601400864770/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d48c532c-a269-4795-a083-732ba97dcc6d, 3013ead9-d59b-4d04-8c08-3dcaf7144d92", + "traceId": "9d9cd070322c4b79bb3ecbc7316c4007", + "evidence": "boxCode=RK-2085948596873134082#4-1, machineNo=MJ-ADMIN-E2E-01", + "checkedAt": "2026-08-08T04:37:58.400Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "首次扫描新增一条且默认代表1箱", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085948601400864770/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d48c532c-a269-4795-a083-732ba97dcc6d, 3013ead9-d59b-4d04-8c08-3dcaf7144d92", + "traceId": "9d9cd070322c4b79bb3ecbc7316c4007", + "evidence": "created=true, confirmedPackageCount=1", + "checkedAt": "2026-08-08T04:37:58.400Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "重复打印及指定箱补打后原箱码仍可解析", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085948601400864770/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d48c532c-a269-4795-a083-732ba97dcc6d, 3013ead9-d59b-4d04-8c08-3dcaf7144d92", + "traceId": "9d9cd070322c4b79bb3ecbc7316c4007", + "evidence": "boxCodeStable=true, resolvedInboundId=2085948601400864770", + "checkedAt": "2026-08-08T04:37:58.400Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "查询箱级测量详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085948601400864770/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a12fe73c-0f82-46df-b27c-78614fde16de, 098adc4e-3db1-4aec-b9a9-75574a2717cc", + "traceId": "45ecccc6d0934b358ae0c5cc74ed90bd", + "evidence": "measurementId=2085948607017037825", + "checkedAt": "2026-08-08T04:37:58.434Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "箱级查询回显箱码、尺寸、图片与设备信息", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085948601400864770/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a12fe73c-0f82-46df-b27c-78614fde16de, 098adc4e-3db1-4aec-b9a9-75574a2717cc", + "traceId": "45ecccc6d0934b358ae0c5cc74ed90bd", + "evidence": "itemFound=true, imageFileId=2085948606968823810", + "checkedAt": "2026-08-08T04:37:58.434Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "人工确认当前测量代表箱数", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/inbounds/2085948601400864770/measurement/items/2085948607021232130/confirmed-package-count?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "def5329a-7298-404f-81c3-96e83cbccbea, e8566e7f-7655-4060-9c66-f256fe06001f", + "traceId": "87e1dbe006c74288bddf22c47981e9ff", + "evidence": "confirmedPackageCount=4", + "checkedAt": "2026-08-08T04:37:58.473Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "人工箱数更新且测量版本递增", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/inbounds/2085948601400864770/measurement/items/2085948607021232130/confirmed-package-count?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "def5329a-7298-404f-81c3-96e83cbccbea, e8566e7f-7655-4060-9c66-f256fe06001f", + "traceId": "87e1dbe006c74288bddf22c47981e9ff", + "evidence": "version=2", + "checkedAt": "2026-08-08T04:37:58.473Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "同箱号重新扫描覆盖当前记录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085948601400864770/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "33327ad6-bc7a-4dfe-ab40-96068af568cc, a2808f6e-2f62-4870-87b9-d214e9d020c7", + "traceId": "94a911ea80a94b718ca0bd229c311ff7", + "evidence": "boxCode=RK-2085948596873134082#4-1, machineNo=MJ-ADMIN-E2E-02", + "checkedAt": "2026-08-08T04:37:58.775Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "覆盖保留同一条记录和人工箱数", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085948601400864770/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "33327ad6-bc7a-4dfe-ab40-96068af568cc, a2808f6e-2f62-4870-87b9-d214e9d020c7", + "traceId": "94a911ea80a94b718ca0bd229c311ff7", + "evidence": "sameItem=true, confirmedPackageCount=4", + "checkedAt": "2026-08-08T04:37:58.775Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "回查覆盖后的尺寸与体积结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085948601400864770/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "99570534-071f-4112-9e2a-ad38bdaac8d8, c26c15ca-31d2-47d9-9cdb-7b2c38900a26", + "traceId": "226cfa1469ef4c49b9ad1216df2e1587", + "evidence": "", + "checkedAt": "2026-08-08T04:37:58.818Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "覆盖尺寸、箱数和服务端体积公式正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085948601400864770/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "99570534-071f-4112-9e2a-ad38bdaac8d8, c26c15ca-31d2-47d9-9cdb-7b2c38900a26", + "traceId": "226cfa1469ef4c49b9ad1216df2e1587", + "evidence": "weightedOuter=64x54x54, unitVolume=0.187, totalVolume=0.748, volumeWeight=124.916, girth=204.5", + "checkedAt": "2026-08-08T04:37:58.818Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "保存同一测量批次草稿", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/inbounds/2085948601400864770/measurement/draft?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "238b126e-ce40-449d-9d85-e378418abfc2, c05defe1-d1ca-4b10-a134-1eed1b789b0d", + "traceId": "62414bf7073a4e42974aa5eaf1f055db", + "evidence": "measurementId=2085948607017037825, items=1", + "checkedAt": "2026-08-08T04:37:58.870Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "草稿沿用批次并递增版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/inbounds/2085948601400864770/measurement/draft?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "238b126e-ce40-449d-9d85-e378418abfc2, c05defe1-d1ca-4b10-a134-1eed1b789b0d", + "traceId": "62414bf7073a4e42974aa5eaf1f055db", + "evidence": "status=DRAFT, version=4", + "checkedAt": "2026-08-08T04:37:58.870Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "提交测量审核", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085948601400864770/measurement/submit?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7f723433-87c2-429f-9e0c-535b3450e1a3, 301cafb0-ce88-421e-88f9-a141c6ea917b", + "traceId": "f3aa105ee8f24d2682a68194817ff8eb", + "evidence": "measurementId=2085948607017037825", + "checkedAt": "2026-08-08T04:37:58.909Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "提交后进入待测量审核状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085948601400864770/measurement/submit?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7f723433-87c2-429f-9e0c-535b3450e1a3, 301cafb0-ce88-421e-88f9-a141c6ea917b", + "traceId": "f3aa105ee8f24d2682a68194817ff8eb", + "evidence": "processStatus=MEASURE_PENDING, reviewStatus=PENDING", + "checkedAt": "2026-08-08T04:37:58.909Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "测量提交后拒绝设备覆盖并返回中文提示", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085948601400864770/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "A0409", + "message": "测量已提交,设备不能新增或覆盖数据", + "requestId": "432ecd10-1924-464a-9c19-76ef3066f143", + "traceId": "a3bafd152f7149b5aa082c86805e60f7", + "evidence": "HTTP=200, code=A0409, chineseMessage=true", + "checkedAt": "2026-08-08T04:37:58.947Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "审核前读取最新入库单版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085948601400864770?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "30adf05b-fe89-4ddd-a631-37b885f2b239, bb5394fb-0229-4b52-8131-f8c075816d78", + "traceId": "bd0c4ab1c00148e2815b2a8903d75f4f", + "evidence": "", + "checkedAt": "2026-08-08T04:37:58.973Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "审核前状态和版本有效", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085948601400864770?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "30adf05b-fe89-4ddd-a631-37b885f2b239, bb5394fb-0229-4b52-8131-f8c075816d78", + "traceId": "bd0c4ab1c00148e2815b2a8903d75f4f", + "evidence": "status=MEASURE_PENDING, version=1", + "checkedAt": "2026-08-08T04:37:58.973Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "Admin 审核通过墨家测量", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/inbounds/2085948601400864770/measurements/approve?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9b2040ba-131c-493e-9de0-7fdffd2f7e30, 0b70c633-72f4-4a0b-914e-a032d1171136", + "traceId": "2634037197f044b8aadf4e85f896ece2", + "evidence": "measurementId=2085948607017037825", + "checkedAt": "2026-08-08T04:37:59.021Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "查询审核后的最终测量状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085948601400864770/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c55d1d99-0ce1-46f0-b5b8-01db75260148, ec7f3518-6592-40db-b2ac-639f76e0733e", + "traceId": "057a7fade5d945fb892613c9a7c7d26c", + "evidence": "", + "checkedAt": "2026-08-08T04:37:59.059Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "审核后入库与测量状态闭环且结果未变化", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085948601400864770/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c55d1d99-0ce1-46f0-b5b8-01db75260148, ec7f3518-6592-40db-b2ac-639f76e0733e", + "traceId": "057a7fade5d945fb892613c9a7c7d26c", + "evidence": "processStatus=INBOUNDED, measurementStatus=APPROVED, packages=4", + "checkedAt": "2026-08-08T04:37:59.059Z" + } + ] +} diff --git a/reports/admin-overseas-storage-fees-standalone.json b/reports/admin-overseas-storage-fees-standalone.json new file mode 100644 index 000000000..b866bf173 --- /dev/null +++ b/reports/admin-overseas-storage-fees-standalone.json @@ -0,0 +1,183 @@ +{ + "reportName": "后台管理测试环境 HTTP API 验收", + "marker": "ADMIN-API-20260808053139613", + "gateway": "http://8.163.30.128:9000", + "generatedAt": "2026-08-08T05:31:40.523Z", + "startedAt": "2026-08-08T05:31:39.613Z", + "success": false, + "fatal": null, + "summary": { + "total": 7, + "passed": 6, + "failed": 1 + }, + "modules": [ + { + "name": "overseas-storage-fees", + "startedAt": "2026-08-08T05:31:39.991Z", + "finishedAt": "2026-08-08T05:31:40.523Z", + "success": false, + "passed": 5, + "failed": 1, + "fatal": null + } + ], + "scenarios": [], + "deploymentBlockers": [ + { + "module": "overseas-storage-fees", + "scenario": "customer-overseas-storage-fee-lifecycle", + "name": "查询客户海外仓费用配置", + "evidence": "tenantId=2085962119627001858", + "code": "S0500", + "requestId": "5ac21bf6-d89e-457b-ba67-e3e26cfae24f", + "traceId": "f7ff48a216604bcebe6b439b86664e3e" + } + ], + "createdResources": { + "overseasStorageFeeCustomer": { + "tenantId": "2085962119627001858", + "marker": "ADMIN-API-20260808053139613", + "ownedByModule": true + } + }, + "excluded": [ + { + "scope": "dashboard", + "reason": "首页为静态演示数据,不调用后端 API" + }, + { + "scope": "hidden-prototypes", + "reason": "隐藏原型页面尚无已确认后端契约" + } + ], + "securityNote": "报告不保存登录密码、Access Token、Refresh Token、图片二进制或 OCR 原文全文。", + "steps": [ + { + "module": "authentication", + "scenario": null, + "name": "平台管理员登录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/auth/login" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ce3d57ae-2efd-4538-ba8c-7e9cd66b3f41, 4b748553-b0c9-4444-9da2-581a34b48c03", + "traceId": "a5d46d17762248e5aefef4f0a42f6938", + "evidence": "", + "checkedAt": "2026-08-08T05:31:39.990Z" + }, + { + "module": "overseas-storage-fees", + "scenario": null, + "name": "检查测试联系电话可用性", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/contact-phone-availability?contactPhone=16167099991" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "eb2ed61a-3879-4556-bbdc-82f2647db1e3, b894c681-0997-4b20-bc8a-304a5f31bfe0", + "traceId": "7e280a48c44b4e4c898dbafc3215f64e", + "evidence": "attempt=1", + "checkedAt": "2026-08-08T05:31:40.036Z" + }, + { + "module": "overseas-storage-fees", + "scenario": "customer-overseas-storage-fee-lifecycle", + "name": "创建海外仓费用隔离客户", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ba5aaf07-8135-4bfb-93ef-05ab2d77ec53, 3573b84d-f37d-4138-9dd8-60db25742106", + "traceId": "d7d1160a98e64a5d80ea9c29a9043d7d", + "evidence": "", + "checkedAt": "2026-08-08T05:31:40.388Z" + }, + { + "module": "overseas-storage-fees", + "scenario": "customer-overseas-storage-fee-lifecycle", + "name": "海外仓费用隔离客户创建并带 marker", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ba5aaf07-8135-4bfb-93ef-05ab2d77ec53, 3573b84d-f37d-4138-9dd8-60db25742106", + "traceId": "d7d1160a98e64a5d80ea9c29a9043d7d", + "evidence": "tenantId=2085962119627001858", + "checkedAt": "2026-08-08T05:31:40.388Z" + }, + { + "module": "overseas-storage-fees", + "scenario": "customer-overseas-storage-fee-lifecycle", + "name": "查询客户海外仓费用配置", + "passed": false, + "deploymentBlocker": true, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085962119627001858/overseas-storage-fees" + }, + "http": 200, + "code": "S0500", + "message": "Internal server error", + "requestId": "5ac21bf6-d89e-457b-ba67-e3e26cfae24f", + "traceId": "f7ff48a216604bcebe6b439b86664e3e", + "evidence": "tenantId=2085962119627001858", + "checkedAt": "2026-08-08T05:31:40.416Z" + }, + { + "module": "overseas-storage-fees", + "scenario": "customer-overseas-storage-fee-lifecycle", + "name": "费用配置契约不可用时清理隔离客户", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants/2085962119627001858/archive" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "61927608-9447-4f22-aef7-3b485a49aeab, d8f074c2-3f63-447d-8b8e-c774c7448dcb", + "traceId": "1663d1977f2f406aaaadf99f5f706194", + "evidence": "tenantId=2085962119627001858", + "checkedAt": "2026-08-08T05:31:40.523Z" + }, + { + "module": "overseas-storage-fees", + "scenario": "customer-overseas-storage-fee-lifecycle", + "name": "隔离客户清理后停用", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants/2085962119627001858/archive" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "61927608-9447-4f22-aef7-3b485a49aeab, d8f074c2-3f63-447d-8b8e-c774c7448dcb", + "traceId": "1663d1977f2f406aaaadf99f5f706194", + "evidence": "status=DISABLED", + "checkedAt": "2026-08-08T05:31:40.523Z" + } + ] +} diff --git a/reports/admin-overseas-storage-fees.json b/reports/admin-overseas-storage-fees.json new file mode 100644 index 000000000..0855cf0d5 --- /dev/null +++ b/reports/admin-overseas-storage-fees.json @@ -0,0 +1,881 @@ +{ + "reportName": "后台管理测试环境 HTTP API 验收", + "marker": "ADMIN-API-20260808052841329", + "gateway": "http://8.163.30.128:9000", + "generatedAt": "2026-08-08T05:28:43.083Z", + "startedAt": "2026-08-08T05:28:41.329Z", + "success": false, + "fatal": null, + "summary": { + "total": 44, + "passed": 42, + "failed": 2 + }, + "modules": [ + { + "name": "customers", + "startedAt": "2026-08-08T05:28:41.701Z", + "finishedAt": "2026-08-08T05:28:42.618Z", + "success": true, + "passed": 38, + "failed": 0, + "fatal": null + }, + { + "name": "overseas-storage-fees", + "startedAt": "2026-08-08T05:28:42.620Z", + "finishedAt": "2026-08-08T05:28:43.083Z", + "success": false, + "passed": 3, + "failed": 2, + "fatal": null + } + ], + "scenarios": [ + { + "name": "customer-dimension-rules", + "module": "customers", + "success": true, + "deploymentBlocked": false, + "passed": 13, + "failed": 0 + } + ], + "deploymentBlockers": [ + { + "module": "overseas-storage-fees", + "scenario": "customer-overseas-storage-fee-lifecycle", + "name": "查询客户海外仓费用配置", + "evidence": "tenantId=2085961371849707522", + "code": "S0500", + "requestId": "9a0ffc8d-64cf-4db8-aff5-5e5069e07a5c", + "traceId": "8609dab1dc4848a69a31a80316301fae" + }, + { + "module": "overseas-storage-fees", + "scenario": "customer-overseas-storage-fee-lifecycle", + "name": "查询新隔离客户海外仓费用配置", + "evidence": "tenantId=2085961375817519106", + "code": "S0500", + "requestId": "f3e84b20-6334-49ed-871a-9d1d6df15f42", + "traceId": "25bc4f8838024520973270e4724c3069" + } + ], + "createdResources": { + "customer": { + "tenantId": "2085961371849707522", + "marker": "ADMIN-API-20260808052841329", + "contactPhone": "16166921702" + }, + "overseasStorageFeeCustomer": { + "tenantId": "2085961375817519106", + "marker": "ADMIN-API-20260808052841329", + "ownedByModule": true + } + }, + "excluded": [ + { + "scope": "dashboard", + "reason": "首页为静态演示数据,不调用后端 API" + }, + { + "scope": "hidden-prototypes", + "reason": "隐藏原型页面尚无已确认后端契约" + } + ], + "securityNote": "报告不保存登录密码、Access Token、Refresh Token、图片二进制或 OCR 原文全文。", + "steps": [ + { + "module": "authentication", + "scenario": null, + "name": "平台管理员登录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/auth/login" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7bd48d5c-0996-4c05-ae5c-a018e4136f71, c3051067-539f-486b-96c5-de71fa4a995e", + "traceId": "cb33a5d8cefd4240acdd7ae6b1aebd3c", + "evidence": "", + "checkedAt": "2026-08-08T05:28:41.701Z" + }, + { + "module": "customers", + "scenario": null, + "name": "检查测试联系电话可用性", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/contact-phone-availability?contactPhone=16166921702" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "44c4b252-bead-4b01-b827-910a733142c5, 4d2c591a-9b8f-41c1-a03f-3b4ac596977b", + "traceId": "2c3aedac6f7c4860840e8519438b9c48", + "evidence": "attempt=1", + "checkedAt": "2026-08-08T05:28:41.745Z" + }, + { + "module": "customers", + "scenario": null, + "name": "创建客户", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5edebd18-27c0-4e6d-91b8-3db63f1f1128, 13710f1e-4520-4b85-9558-6ceb62e5c920", + "traceId": "682263346ca84afbb7007ae9e9518b6e", + "evidence": "", + "checkedAt": "2026-08-08T05:28:42.108Z" + }, + { + "module": "customers", + "scenario": null, + "name": "创建响应客户字段完整", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5edebd18-27c0-4e6d-91b8-3db63f1f1128, 13710f1e-4520-4b85-9558-6ceb62e5c920", + "traceId": "682263346ca84afbb7007ae9e9518b6e", + "evidence": "missing=none", + "checkedAt": "2026-08-08T05:28:42.108Z" + }, + { + "module": "customers", + "scenario": null, + "name": "新客户基础字段正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5edebd18-27c0-4e6d-91b8-3db63f1f1128, 13710f1e-4520-4b85-9558-6ceb62e5c920", + "traceId": "682263346ca84afbb7007ae9e9518b6e", + "evidence": "tenantId=2085961371849707522, status=PROFILE_REQUIRED", + "checkedAt": "2026-08-08T05:28:42.108Z" + }, + { + "module": "customers", + "scenario": "customer-owner-provisioning", + "name": "创建客户生成初始密码", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5edebd18-27c0-4e6d-91b8-3db63f1f1128, 13710f1e-4520-4b85-9558-6ceb62e5c920", + "traceId": "682263346ca84afbb7007ae9e9518b6e", + "evidence": "generated=true, length=16", + "checkedAt": "2026-08-08T05:28:42.108Z" + }, + { + "module": "customers", + "scenario": "customer-owner-provisioning", + "name": "管理员用户名默认使用联系电话", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5edebd18-27c0-4e6d-91b8-3db63f1f1128, 13710f1e-4520-4b85-9558-6ceb62e5c920", + "traceId": "682263346ca84afbb7007ae9e9518b6e", + "evidence": "matches=true", + "checkedAt": "2026-08-08T05:28:42.108Z" + }, + { + "module": "customers", + "scenario": null, + "name": "待完善客户的审核字段保持为空", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5edebd18-27c0-4e6d-91b8-3db63f1f1128, 13710f1e-4520-4b85-9558-6ceb62e5c920", + "traceId": "682263346ca84afbb7007ae9e9518b6e", + "evidence": "creditCode=omitted, approvedAt=omitted", + "checkedAt": "2026-08-08T05:28:42.108Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "新客户尺寸规则可查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085961371849707522" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3aef291a-01f8-4832-8ba8-419a6c0f0ead, c3e56f7e-9999-4b22-8d04-e983808f52ec", + "traceId": "f4a2481bd696413cbda66b15aa193b2a", + "evidence": "tenantId=2085961371849707522", + "checkedAt": "2026-08-08T05:28:42.131Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "固定四箱规顺序完整且无重复", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085961371849707522" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3aef291a-01f8-4832-8ba8-419a6c0f0ead, c3e56f7e-9999-4b22-8d04-e983808f52ec", + "traceId": "f4a2481bd696413cbda66b15aa193b2a", + "evidence": "count=4, order=SMALL,MEDIUM,LARGE,EXTRA_LARGE", + "checkedAt": "2026-08-08T05:28:42.131Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "四箱规默认内径、加边和备注正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085961371849707522" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3aef291a-01f8-4832-8ba8-419a6c0f0ead, c3e56f7e-9999-4b22-8d04-e983808f52ec", + "traceId": "f4a2481bd696413cbda66b15aa193b2a", + "evidence": "defaults=matched", + "checkedAt": "2026-08-08T05:28:42.131Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "客户 ID、规则 ID 为字符串且初始版本为0", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085961371849707522" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3aef291a-01f8-4832-8ba8-419a6c0f0ead, c3e56f7e-9999-4b22-8d04-e983808f52ec", + "traceId": "f4a2481bd696413cbda66b15aa193b2a", + "evidence": "groupTenantIdType=string, rows=string/v0,string/v0,string/v0,string/v0", + "checkedAt": "2026-08-08T05:28:42.131Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "默认规则外径与 HALF_UP 三位 CBM 正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085961371849707522" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3aef291a-01f8-4832-8ba8-419a6c0f0ead, c3e56f7e-9999-4b22-8d04-e983808f52ec", + "traceId": "f4a2481bd696413cbda66b15aa193b2a", + "evidence": "derivedRows=4", + "checkedAt": "2026-08-08T05:28:42.131Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "PUT 每行只发送约定7字段并整组保存", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085961371849707522" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3aef291a-01f8-4832-8ba8-419a6c0f0ead, c3e56f7e-9999-4b22-8d04-e983808f52ec", + "traceId": "f4a2481bd696413cbda66b15aa193b2a", + "evidence": "fields=boxType,innerLengthCm,innerWidthCm,innerHeightCm,edgeAdditionCm,remark,version", + "checkedAt": "2026-08-08T05:28:42.132Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "一次 PUT 保存四条三位小数规则", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085961371849707522" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d10274b5-a589-45cb-96ff-184e834a23e3, 2e91ab01-b824-4144-9a57-dcb4c821991b", + "traceId": "9c2435c5174d49519b7cecee19aa94b1", + "evidence": "rows=4", + "checkedAt": "2026-08-08T05:28:42.169Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "修改后四行版本+1且派生外径/CBM正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085961371849707522" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d10274b5-a589-45cb-96ff-184e834a23e3, 2e91ab01-b824-4144-9a57-dcb4c821991b", + "traceId": "9c2435c5174d49519b7cecee19aa94b1", + "evidence": "versions=1,1,1,1", + "checkedAt": "2026-08-08T05:28:42.169Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "旧 version 重放 PUT 返回冲突", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085961371849707522" + }, + "http": 200, + "code": "A0409", + "message": "箱规尺寸配置已被修改,请刷新后重试", + "requestId": "31327608-24e2-438d-9cc6-3e7c461d2e77", + "traceId": "f83b068272aa446786b61e9a0cfdb0f4", + "evidence": "HTTP=200, code=A0409", + "checkedAt": "2026-08-08T05:28:42.194Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "冲突后重新查询四条规则", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085961371849707522" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6d6ca223-59a9-4693-9817-343c650152de, 090f7249-8175-4767-8fa5-ed9058fecd0a", + "traceId": "9d3ad7981cec4142998d83ea9f966dea", + "evidence": "", + "checkedAt": "2026-08-08T05:28:42.221Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "冲突请求未造成四行部分更新", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085961371849707522" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6d6ca223-59a9-4693-9817-343c650152de, 090f7249-8175-4767-8fa5-ed9058fecd0a", + "traceId": "9d3ad7981cec4142998d83ea9f966dea", + "evidence": "unchangedRows=4", + "checkedAt": "2026-08-08T05:28:42.221Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "恢复本轮修改前的四箱规配置", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085961371849707522" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "406330a2-9577-46d9-8274-ed6b9ce129c5, 4729591c-097b-406c-bb5a-2b1b84cc293e", + "traceId": "e6e77578acc24e3987cd12ffd6dcfb32", + "evidence": "restore=original-values", + "checkedAt": "2026-08-08T05:28:42.261Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "尺寸规则恢复后回显与初始值一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085961371849707522" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "406330a2-9577-46d9-8274-ed6b9ce129c5, 4729591c-097b-406c-bb5a-2b1b84cc293e", + "traceId": "e6e77578acc24e3987cd12ffd6dcfb32", + "evidence": "restoredRows=4", + "checkedAt": "2026-08-08T05:28:42.261Z" + }, + { + "module": "customers", + "scenario": null, + "name": "查询客户列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants?page=1&size=20&keyword=%E5%90%8E%E5%8F%B0%E5%AE%A2%E6%88%B7%E9%AA%8C%E6%94%B6-808052841329" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5adda92b-b3e6-41d2-ad79-5b84fd6b12f6, 0e4251ef-b331-4092-b724-2dff88e735ee", + "traceId": "ed3d9847e4a04517b2c712f4a10a5525", + "evidence": "", + "checkedAt": "2026-08-08T05:28:42.287Z" + }, + { + "module": "customers", + "scenario": null, + "name": "列表包含新客户且字段完整", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants?page=1&size=20&keyword=%E5%90%8E%E5%8F%B0%E5%AE%A2%E6%88%B7%E9%AA%8C%E6%94%B6-808052841329" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5adda92b-b3e6-41d2-ad79-5b84fd6b12f6, 0e4251ef-b331-4092-b724-2dff88e735ee", + "traceId": "ed3d9847e4a04517b2c712f4a10a5525", + "evidence": "found=true, missing=none", + "checkedAt": "2026-08-08T05:28:42.287Z" + }, + { + "module": "customers", + "scenario": null, + "name": "查询客户详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085961371849707522" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d3661a19-b409-402e-aa1a-d25e0930f3a9, 2493a21c-cbc8-4a94-a057-dd4632bc6ea0", + "traceId": "39f989a102f44916a2af220e04baeb2a", + "evidence": "", + "checkedAt": "2026-08-08T05:28:42.314Z" + }, + { + "module": "customers", + "scenario": null, + "name": "客户详情基本信息正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085961371849707522" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d3661a19-b409-402e-aa1a-d25e0930f3a9, 2493a21c-cbc8-4a94-a057-dd4632bc6ea0", + "traceId": "39f989a102f44916a2af220e04baeb2a", + "evidence": "tenantId=2085961371849707522", + "checkedAt": "2026-08-08T05:28:42.314Z" + }, + { + "module": "customers", + "scenario": null, + "name": "编辑客户", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/tenants/2085961371849707522" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c546898f-751a-4bb8-ba7b-179e06d18b3d, 4523c600-6a82-466f-b6d1-73944b672219", + "traceId": "fa08ed1091c349aab073e4e185dc70d7", + "evidence": "", + "checkedAt": "2026-08-08T05:28:42.355Z" + }, + { + "module": "customers", + "scenario": null, + "name": "客户编辑正确回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/tenants/2085961371849707522" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c546898f-751a-4bb8-ba7b-179e06d18b3d, 4523c600-6a82-466f-b6d1-73944b672219", + "traceId": "fa08ed1091c349aab073e4e185dc70d7", + "evidence": "tenantId=2085961371849707522", + "checkedAt": "2026-08-08T05:28:42.355Z" + }, + { + "module": "customers", + "scenario": null, + "name": "回查客户编辑结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085961371849707522" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "af8fac55-9b8f-4914-904c-2478a8edf931, 9765471b-ddb6-4354-93cf-670493bd935c", + "traceId": "74d23dd3f576492798326b0d6a97da24", + "evidence": "", + "checkedAt": "2026-08-08T05:28:42.374Z" + }, + { + "module": "customers", + "scenario": null, + "name": "客户编辑已持久化", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085961371849707522" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "af8fac55-9b8f-4914-904c-2478a8edf931, 9765471b-ddb6-4354-93cf-670493bd935c", + "traceId": "74d23dd3f576492798326b0d6a97da24", + "evidence": "tenantId=2085961371849707522", + "checkedAt": "2026-08-08T05:28:42.374Z" + }, + { + "module": "customers", + "scenario": null, + "name": "业务概况查询资质", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085961371849707522/qualifications" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "391847b4-47ad-4265-bb9a-a7ab7cb86da5, 1e512be6-590a-422e-b12a-1bbec5afecbd", + "traceId": "2a215ea41bfd4065af1be9971e63dcd8", + "evidence": "", + "checkedAt": "2026-08-08T05:28:42.409Z" + }, + { + "module": "customers", + "scenario": null, + "name": "资质概况结构正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085961371849707522/qualifications" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "391847b4-47ad-4265-bb9a-a7ab7cb86da5, 1e512be6-590a-422e-b12a-1bbec5afecbd", + "traceId": "2a215ea41bfd4065af1be9971e63dcd8", + "evidence": "count=0", + "checkedAt": "2026-08-08T05:28:42.409Z" + }, + { + "module": "customers", + "scenario": null, + "name": "业务概况查询成员", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085961371849707522/members" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "201da765-eb27-4ad8-af8e-d97370b5e050, 3e8d56b1-b94f-4fed-b585-7e5c10c2a6fc", + "traceId": "c58cea6082e84438a593b47657cfab40", + "evidence": "", + "checkedAt": "2026-08-08T05:28:42.447Z" + }, + { + "module": "customers", + "scenario": "customer-owner-provisioning", + "name": "联系电话账号是企业管理员", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085961371849707522/members" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "201da765-eb27-4ad8-af8e-d97370b5e050, 3e8d56b1-b94f-4fed-b585-7e5c10c2a6fc", + "traceId": "c58cea6082e84438a593b47657cfab40", + "evidence": "ownerFound=true, matches=true", + "checkedAt": "2026-08-08T05:28:42.447Z" + }, + { + "module": "customers", + "scenario": null, + "name": "业务概况查询运单数量", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/tenant-counts?tenantIds=2085961371849707522" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0f31ccec-a742-48ce-aa47-5f5dee45b9ac, 5c0a7602-b610-4682-8c01-3e85c7b249cc", + "traceId": "101a71cc84be447a8ca353f8b55201bb", + "evidence": "", + "checkedAt": "2026-08-08T05:28:42.471Z" + }, + { + "module": "customers", + "scenario": null, + "name": "业务概况返回当前客户运单数", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/tenant-counts?tenantIds=2085961371849707522" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0f31ccec-a742-48ce-aa47-5f5dee45b9ac, 5c0a7602-b610-4682-8c01-3e85c7b249cc", + "traceId": "101a71cc84be447a8ca353f8b55201bb", + "evidence": "orderCount=0", + "checkedAt": "2026-08-08T05:28:42.472Z" + }, + { + "module": "customers", + "scenario": null, + "name": "查询客户运单记录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg?tenantId=2085961371849707522&page=1&size=10" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "bb6310db-021f-4954-9fde-9dd80df67183, ec930cc9-84bc-4f0f-a746-82f171d86ace", + "traceId": "3914438d25234a4e9222726070bb26b8", + "evidence": "", + "checkedAt": "2026-08-08T05:28:42.504Z" + }, + { + "module": "customers", + "scenario": null, + "name": "运单记录分页结构正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg?tenantId=2085961371849707522&page=1&size=10" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "bb6310db-021f-4954-9fde-9dd80df67183, ec930cc9-84bc-4f0f-a746-82f171d86ace", + "traceId": "3914438d25234a4e9222726070bb26b8", + "evidence": "records=0, total=0", + "checkedAt": "2026-08-08T05:28:42.504Z" + }, + { + "module": "customers", + "scenario": "customer-draft-archive", + "name": "归档测试客户", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants/2085961371849707522/archive" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f9208ab6-bb8e-4f48-9060-8052fb163cee, 780b8eda-83fb-443a-83bf-2b8c6a9e0ef7", + "traceId": "a2bc3cf1a9a341c69a9d2eecc240a048", + "evidence": "tenantId=2085961371849707522", + "checkedAt": "2026-08-08T05:28:42.618Z" + }, + { + "module": "customers", + "scenario": "customer-draft-archive", + "name": "测试客户归档后处于停用状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants/2085961371849707522/archive" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f9208ab6-bb8e-4f48-9060-8052fb163cee, 780b8eda-83fb-443a-83bf-2b8c6a9e0ef7", + "traceId": "a2bc3cf1a9a341c69a9d2eecc240a048", + "evidence": "status=DISABLED", + "checkedAt": "2026-08-08T05:28:42.618Z" + }, + { + "module": "overseas-storage-fees", + "scenario": "customer-overseas-storage-fee-lifecycle", + "name": "查询客户海外仓费用配置", + "passed": false, + "deploymentBlocker": true, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085961371849707522/overseas-storage-fees" + }, + "http": 200, + "code": "S0500", + "message": "Internal server error", + "requestId": "9a0ffc8d-64cf-4db8-aff5-5e5069e07a5c", + "traceId": "8609dab1dc4848a69a31a80316301fae", + "evidence": "tenantId=2085961371849707522", + "checkedAt": "2026-08-08T05:28:42.651Z" + }, + { + "module": "overseas-storage-fees", + "scenario": null, + "name": "检查测试联系电话可用性", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/contact-phone-availability?contactPhone=16166922651" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ab6a02bd-d0ae-499d-be09-07bd9d5bf19d, f27bf257-dd9f-425b-b559-10d365e3a43d", + "traceId": "775a52c1cd494ad1b9146f98b35d55e4", + "evidence": "attempt=1", + "checkedAt": "2026-08-08T05:28:42.696Z" + }, + { + "module": "overseas-storage-fees", + "scenario": "customer-overseas-storage-fee-lifecycle", + "name": "创建海外仓费用隔离客户", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f4e72bf7-6583-40df-b3e6-702d69a9e418, b626c897-25d9-4268-abfe-2a63d5a1e261", + "traceId": "f677a0ec39564dadbb22bceb196f19fb", + "evidence": "", + "checkedAt": "2026-08-08T05:28:43.055Z" + }, + { + "module": "overseas-storage-fees", + "scenario": "customer-overseas-storage-fee-lifecycle", + "name": "海外仓费用隔离客户创建并带 marker", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f4e72bf7-6583-40df-b3e6-702d69a9e418, b626c897-25d9-4268-abfe-2a63d5a1e261", + "traceId": "f677a0ec39564dadbb22bceb196f19fb", + "evidence": "tenantId=2085961375817519106", + "checkedAt": "2026-08-08T05:28:43.055Z" + }, + { + "module": "overseas-storage-fees", + "scenario": "customer-overseas-storage-fee-lifecycle", + "name": "查询新隔离客户海外仓费用配置", + "passed": false, + "deploymentBlocker": true, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085961375817519106/overseas-storage-fees" + }, + "http": 200, + "code": "S0500", + "message": "Internal server error", + "requestId": "f3e84b20-6334-49ed-871a-9d1d6df15f42", + "traceId": "25bc4f8838024520973270e4724c3069", + "evidence": "tenantId=2085961375817519106", + "checkedAt": "2026-08-08T05:28:43.083Z" + } + ] +} diff --git a/reports/admin-test-env-acceptance-20260808042004.json b/reports/admin-test-env-acceptance-20260808042004.json new file mode 100644 index 000000000..7bf002d7b --- /dev/null +++ b/reports/admin-test-env-acceptance-20260808042004.json @@ -0,0 +1,789 @@ +{ + "reportName": "后台管理测试环境 HTTP API 验收", + "marker": "ADMIN-API-20260808042004771", + "gateway": "http://8.163.30.128:9000", + "generatedAt": "2026-08-08T04:20:31.871Z", + "startedAt": "2026-08-08T04:20:04.771Z", + "success": false, + "fatal": null, + "summary": { + "total": 39, + "passed": 36, + "failed": 3 + }, + "modules": [ + { + "name": "orders", + "startedAt": "2026-08-08T04:20:06.120Z", + "finishedAt": "2026-08-08T04:20:31.869Z", + "success": false, + "passed": 35, + "failed": 2, + "fatal": "订单审核后的入库单契约未部署,无法向 OCR/墨家模块交接" + }, + { + "name": "inbound-measurement", + "startedAt": "2026-08-08T04:20:31.870Z", + "finishedAt": "2026-08-08T04:20:31.871Z", + "success": false, + "passed": 0, + "failed": 1, + "fatal": null + } + ], + "scenarios": [ + { + "name": "mojia-carton-measurement", + "module": "inbound-measurement", + "success": false, + "deploymentBlocked": true, + "passed": 0, + "failed": 1 + } + ], + "deploymentBlockers": [ + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "审核后生成隔离入库单", + "evidence": "20秒内未返回 inboundId", + "code": "S0503", + "requestId": "b2c13096-0eeb-41ff-a9c5-f59571ff93ac", + "traceId": "d033a920d751440bab00d46525147427" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "取得隔离的待测量入库单", + "evidence": "orders 模块未提供 marker=ADMIN-API-20260808042004771 的 inboundId/tenantId;为避免修改随机历史订单,本模块停止写入", + "code": null, + "requestId": null, + "traceId": null + } + ], + "createdResources": { + "orders": { + "marker": "ADMIN-API-20260808042004771", + "tenantId": "10001", + "orderId": "2085944124604219394", + "productImageFileId": "2085944119717855233", + "boxTypes": [ + "SMALL", + "MEDIUM", + "LARGE", + "EXTRA_LARGE" + ], + "inboundId": null, + "orderNo": "FL2085944124604219394" + } + }, + "excluded": [ + { + "scope": "dashboard", + "reason": "首页为静态演示数据,不调用后端 API" + }, + { + "scope": "hidden-prototypes", + "reason": "隐藏原型页面尚无已确认后端契约" + } + ], + "securityNote": "报告不保存登录密码、Access Token、Refresh Token、图片二进制或 OCR 原文全文。", + "steps": [ + { + "module": "authentication", + "scenario": null, + "name": "平台管理员登录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/auth/login" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "fd633a51-88e5-4480-acb6-af024e1414a1, 471e9ee4-7cce-47ff-927b-6f944cfde322", + "traceId": "f8deb6844ea44759a033c7a0bb505c67", + "evidence": "", + "checkedAt": "2026-08-08T04:20:06.119Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 测试账号登录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/auth/login" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e323e25c-a97e-4f0a-b0ea-921ce9659769, 23faaf1d-977c-4303-a38c-4806efa3f9a3", + "traceId": "c94d0164b0e24bfa8948b8fd5fa5337b", + "evidence": "username=merchant_admin", + "checkedAt": "2026-08-08T04:20:06.478Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询当前企业资料", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/iam/tenant/profile" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "daebe4e3-0570-40be-8ee4-1a45114bd5ce, 544284da-1c49-4128-a06a-67bd938d963f", + "traceId": "b23c3c5d961448499cc734720b58a671", + "evidence": "", + "checkedAt": "2026-08-08T04:20:06.768Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 测试企业已审核且客户 ID 有效", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/iam/tenant/profile" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "daebe4e3-0570-40be-8ee4-1a45114bd5ce, 544284da-1c49-4128-a06a-67bd938d963f", + "traceId": "b23c3c5d961448499cc734720b58a671", + "evidence": "tenantId=10001, status=ACTIVE", + "checkedAt": "2026-08-08T04:20:06.768Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询客户固定箱型", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e5aedbe9-f86a-4a2b-9b40-3124f4e4d2b4, 517cb219-b255-46ec-b0c8-4cf27719260a", + "traceId": "fb867d00d90b4dedad3ee1ba8c57fe0d", + "evidence": "tenantId=10001", + "checkedAt": "2026-08-08T04:20:07.184Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "固定四箱型顺序、内径及每边加2cm正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e5aedbe9-f86a-4a2b-9b40-3124f4e4d2b4, 517cb219-b255-46ec-b0c8-4cf27719260a", + "traceId": "fb867d00d90b4dedad3ee1ba8c57fe0d", + "evidence": "types=SMALL,MEDIUM,LARGE,EXTRA_LARGE", + "checkedAt": "2026-08-08T04:20:07.184Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询国内收货仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=DOMESTIC" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6750a16f-8e40-4552-88df-024958b69c93, 13e6c9ed-cce5-49db-bc46-e702b1ddd670", + "traceId": "00f17820d45c469fa76650b01633e3a2", + "evidence": "", + "checkedAt": "2026-08-08T04:20:07.911Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在可用国内收货仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=DOMESTIC" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6750a16f-8e40-4552-88df-024958b69c93, 13e6c9ed-cce5-49db-bc46-e702b1ddd670", + "traceId": "00f17820d45c469fa76650b01633e3a2", + "evidence": "count=2", + "checkedAt": "2026-08-08T04:20:07.911Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询 FBA 目的仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=FBA" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f9b86d50-6b37-4efc-9046-fd2c4a0e5944, 3bb55f48-f394-425c-8add-0e86cb6e14e9", + "traceId": "af08ebd097ae4dfda9eb5ffc6fab07a9", + "evidence": "", + "checkedAt": "2026-08-08T04:20:08.017Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在可用 FBA 目的仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=FBA" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f9b86d50-6b37-4efc-9046-fd2c4a0e5944, 3bb55f48-f394-425c-8add-0e86cb6e14e9", + "traceId": "af08ebd097ae4dfda9eb5ffc6fab07a9", + "evidence": "count=200", + "checkedAt": "2026-08-08T04:20:08.017Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询可用计费渠道", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/first-leg/pricing/channels?originWarehouseId=193000000000200001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6d0f39b1-e72a-4000-93fe-6ccf175d90ab, 98ab9721-78bb-46d4-884a-bfbcff8a0501", + "traceId": "3f482aec77d24c11bb6352ab7575dbd1", + "evidence": "", + "checkedAt": "2026-08-08T04:20:08.099Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在带计价税制的可用渠道", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/first-leg/pricing/channels?originWarehouseId=193000000000200001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6d0f39b1-e72a-4000-93fe-6ccf175d90ab, 98ab9721-78bb-46d4-884a-bfbcff8a0501", + "traceId": "3f482aec77d24c11bb6352ab7575dbd1", + "evidence": "count=15", + "checkedAt": "2026-08-08T04:20:08.100Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询发货客户候选", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/partners/candidates?type=SHIPPER" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d87b98d5-855c-4b5b-bf5b-2b873e57002f, 59990ae4-0290-43d4-88ea-36bafc7ad0aa", + "traceId": "432202b9a3684d1098a3fcae454aab0a", + "evidence": "", + "checkedAt": "2026-08-08T04:20:08.150Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 上传产品图片", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/files/product-images" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0484fb9b-e833-4aae-adf4-63b3c527ed40, 26e252e3-d5e7-4bae-aa22-bbca91576893", + "traceId": "aceb9173ad64475091cb0bb016e33843", + "evidence": "contentType=image/png", + "checkedAt": "2026-08-08T04:20:08.555Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "产品图片上传返回字符串文件 ID", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/files/product-images" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0484fb9b-e833-4aae-adf4-63b3c527ed40, 26e252e3-d5e7-4bae-aa22-bbca91576893", + "traceId": "aceb9173ad64475091cb0bb016e33843", + "evidence": "fileIdType=string, contentType=image/png", + "checkedAt": "2026-08-08T04:20:08.555Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 可下载本轮产品图片", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/files/product-images/2085944119717855233" + }, + "http": 200, + "code": null, + "message": null, + "requestId": "5b1e2446-67bb-4859-b49e-e5106cd64be9, 136b2647-2650-452c-a693-932b45c2e4ba", + "traceId": "e853f240f9294ea886cbab63a4f396cf", + "evidence": "bytes=68, contentType=image/png", + "checkedAt": "2026-08-08T04:20:08.636Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 创建四箱型隔离订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d1bd5de3-fc83-4941-a2d9-20a26f7af54f, fe8e5746-04c2-4d8b-bb52-33af5e84db18", + "traceId": "d609351e49dc46b79ac61fb3e2dbabeb", + "evidence": "marker=ADMIN-API-20260808042004771", + "checkedAt": "2026-08-08T04:20:09.788Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 创建订单幂等重放", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "023d6b8b-a8e4-4640-9341-a1efd3c52cb0, 6dcd5da5-cbf2-46ec-9bd2-6b994ee1077f", + "traceId": "bb93beaf25a44f82ad02201f3ab96877", + "evidence": "", + "checkedAt": "2026-08-08T04:20:09.979Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 创建幂等结果一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "023d6b8b-a8e4-4640-9341-a1efd3c52cb0, 6dcd5da5-cbf2-46ec-9bd2-6b994ee1077f", + "traceId": "bb93beaf25a44f82ad02201f3ab96877", + "evidence": "orderId=2085944124604219394, replayedId=2085944124604219394", + "checkedAt": "2026-08-08T04:20:09.979Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询隔离订单草稿", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085944124604219394" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b8a73339-02bb-4612-98a1-9b55970ea5b0, c79086c0-7ea4-4d05-9688-076c8221130a", + "traceId": "455f42de5cb448679dfa6122c07c7581", + "evidence": "", + "checkedAt": "2026-08-08T04:20:10.045Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 草稿身份、marker 和状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085944124604219394" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b8a73339-02bb-4612-98a1-9b55970ea5b0, c79086c0-7ea4-4d05-9688-076c8221130a", + "traceId": "455f42de5cb448679dfa6122c07c7581", + "evidence": "orderNo=FL2085944124604219394, status=DRAFT", + "checkedAt": "2026-08-08T04:20:10.045Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "四箱型产品字段及图片契约完整回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085944124604219394" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b8a73339-02bb-4612-98a1-9b55970ea5b0, c79086c0-7ea4-4d05-9688-076c8221130a", + "traceId": "455f42de5cb448679dfa6122c07c7581", + "evidence": "cargoes=4, imageFileId=2085944119717855233", + "checkedAt": "2026-08-08T04:20:10.045Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 提交隔离订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg/2085944124604219394/submit" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5fa8d0fa-ed17-44d7-b2df-123feeb87436, 5b616c43-257d-420e-af21-4f41a01201c0", + "traceId": "ac3b77467df44218aba192ca2f5d7295", + "evidence": "orderId=2085944124604219394", + "checkedAt": "2026-08-08T04:20:10.292Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 回查已提交订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085944124604219394" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c0da5e81-4419-410e-8e9a-605dc35d5d1e, a4e6650c-92c8-479b-a255-aebd44f85f87", + "traceId": "8a5d14f6373141d1adaae3846cbf61e0", + "evidence": "", + "checkedAt": "2026-08-08T04:20:10.334Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 订单已进入待审核状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085944124604219394" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c0da5e81-4419-410e-8e9a-605dc35d5d1e, a4e6650c-92c8-479b-a255-aebd44f85f87", + "traceId": "8a5d14f6373141d1adaae3846cbf61e0", + "evidence": "status=SUBMITTED", + "checkedAt": "2026-08-08T04:20:10.334Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询统一订单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders?page=1&size=100&tenantId=10001&orderNo=FL2085944124604219394" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4636f94e-ff1d-433e-9a83-f6492f3f2386, 3963a123-ccb3-4450-bdc8-4639d9ed91ce", + "traceId": "74cddcb66c14469f9e12a4909403ec89", + "evidence": "", + "checkedAt": "2026-08-08T04:20:10.516Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 统一订单列表只核对本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders?page=1&size=100&tenantId=10001&orderNo=FL2085944124604219394" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4636f94e-ff1d-433e-9a83-f6492f3f2386, 3963a123-ccb3-4450-bdc8-4639d9ed91ce", + "traceId": "74cddcb66c14469f9e12a4909403ec89", + "evidence": "orderId=2085944124604219394, found=true", + "checkedAt": "2026-08-08T04:20:10.516Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询统一订单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085944124604219394?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "828a2eb0-4a40-47a3-8509-6ecbb804f53e, 356a9c43-b508-435d-8a99-9e0e0ca1418f", + "traceId": "d18d0ddf28494353ad4b13fa5698539c", + "evidence": "", + "checkedAt": "2026-08-08T04:20:10.565Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 统一订单详情身份与待审核状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085944124604219394?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "828a2eb0-4a40-47a3-8509-6ecbb804f53e, 356a9c43-b508-435d-8a99-9e0e0ca1418f", + "traceId": "d18d0ddf28494353ad4b13fa5698539c", + "evidence": "mainStatus=PENDING_REVIEW, timeline=2", + "checkedAt": "2026-08-08T04:20:10.565Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询头程订单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg?tenantId=10001&keyword=FL2085944124604219394&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d81ef117-c3bc-4eaa-8f2e-0ccce6c164df, a0fab974-297e-4398-bfc7-f6ecd36523e5", + "traceId": "7efef225789f452fb051f636a57d144c", + "evidence": "", + "checkedAt": "2026-08-08T04:20:10.624Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 头程订单列表只核对本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg?tenantId=10001&keyword=FL2085944124604219394&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d81ef117-c3bc-4eaa-8f2e-0ccce6c164df, a0fab974-297e-4398-bfc7-f6ecd36523e5", + "traceId": "7efef225789f452fb051f636a57d144c", + "evidence": "orderId=2085944124604219394, found=true", + "checkedAt": "2026-08-08T04:20:10.624Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询头程订单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085944124604219394?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0d1425a4-7713-4ec9-95b5-5f353610ec7d, ca155238-4d80-4718-a09b-d793471b5730", + "traceId": "0b2f6fe9b5a6448e9b8a3286886d7067", + "evidence": "", + "checkedAt": "2026-08-08T04:20:10.679Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 头程订单详情聚合结构完整", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085944124604219394?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0d1425a4-7713-4ec9-95b5-5f353610ec7d, ca155238-4d80-4718-a09b-d793471b5730", + "traceId": "0b2f6fe9b5a6448e9b8a3286886d7067", + "evidence": "cargoes=4, history=2", + "checkedAt": "2026-08-08T04:20:10.679Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "四箱型产品字段及图片契约完整回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085944124604219394?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0d1425a4-7713-4ec9-95b5-5f353610ec7d, ca155238-4d80-4718-a09b-d793471b5730", + "traceId": "0b2f6fe9b5a6448e9b8a3286886d7067", + "evidence": "cargoes=4, imageFileId=2085944119717855233", + "checkedAt": "2026-08-08T04:20:10.679Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 为本轮订单添加内部备注", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085944124604219394/internal-notes?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "02b2cced-f7b0-4c8e-b98e-64a3d0fc9de9, c41ea1c4-3408-4643-941a-0dac9b2db008", + "traceId": "7cdf27b5f53a4297bea4648e6f6d6199", + "evidence": "", + "checkedAt": "2026-08-08T04:20:10.727Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 审核通过本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085944124604219394/approve?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9e0d8f5a-5f2c-40d2-b9df-db00e773050e, 3ec6fdff-7d5a-47b5-81b1-e47bb6724520", + "traceId": "666ab113e35347039018a0a97d051d49", + "evidence": "orderId=2085944124604219394", + "checkedAt": "2026-08-08T04:20:10.787Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "审核后生成隔离入库单", + "passed": false, + "deploymentBlocker": true, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085944124604219394?tenantId=10001" + }, + "http": 200, + "code": "S0503", + "message": "统一订单履约详情响应无效", + "requestId": "b2c13096-0eeb-41ff-a9c5-f59571ff93ac", + "traceId": "d033a920d751440bab00d46525147427", + "evidence": "20秒内未返回 inboundId", + "checkedAt": "2026-08-08T04:20:31.869Z" + }, + { + "module": "orders", + "scenario": null, + "name": "模块执行", + "passed": false, + "deploymentBlocker": false, + "request": null, + "http": null, + "code": null, + "message": null, + "requestId": null, + "traceId": null, + "evidence": "订单审核后的入库单契约未部署,无法向 OCR/墨家模块交接", + "checkedAt": "2026-08-08T04:20:31.869Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "取得隔离的待测量入库单", + "passed": false, + "deploymentBlocker": true, + "request": null, + "http": null, + "code": null, + "message": null, + "requestId": null, + "traceId": null, + "evidence": "orders 模块未提供 marker=ADMIN-API-20260808042004771 的 inboundId/tenantId;为避免修改随机历史订单,本模块停止写入", + "checkedAt": "2026-08-08T04:20:31.871Z" + } + ] +} diff --git a/reports/admin-test-env-acceptance-20260808042143.json b/reports/admin-test-env-acceptance-20260808042143.json new file mode 100644 index 000000000..7eafe561c --- /dev/null +++ b/reports/admin-test-env-acceptance-20260808042143.json @@ -0,0 +1,1391 @@ +{ + "reportName": "后台管理测试环境 HTTP API 验收", + "marker": "ADMIN-API-20260808042143154", + "gateway": "http://8.163.30.128:9000", + "generatedAt": "2026-08-08T04:21:46.845Z", + "startedAt": "2026-08-08T04:21:43.154Z", + "success": true, + "fatal": null, + "summary": { + "total": 75, + "passed": 75, + "failed": 0 + }, + "modules": [ + { + "name": "supplemental", + "startedAt": "2026-08-08T04:21:43.548Z", + "finishedAt": "2026-08-08T04:21:46.845Z", + "success": true, + "passed": 74, + "failed": 0, + "fatal": null + } + ], + "scenarios": [], + "deploymentBlockers": [], + "createdResources": {}, + "excluded": [ + { + "scope": "dashboard", + "reason": "首页为静态演示数据,不调用后端 API" + }, + { + "scope": "hidden-prototypes", + "reason": "隐藏原型页面尚无已确认后端契约" + } + ], + "securityNote": "报告不保存登录密码、Access Token、Refresh Token、图片二进制或 OCR 原文全文。", + "steps": [ + { + "module": "authentication", + "scenario": null, + "name": "平台管理员登录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/auth/login" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8ef2d445-2dc0-4453-ab52-858790e4cf2a, 8fe23b78-726b-4b4f-8de3-8b45d09798af", + "traceId": "18abde6e35cf4385bef5c899c7467d6c", + "evidence": "", + "checkedAt": "2026-08-08T04:21:43.546Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "order-service 状态响应使用统一成功体", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "238e0c38-4f86-490c-80c5-98e65a15c2d8, 4187bc4a-4c53-4872-88b7-3e4e50c7c203", + "traceId": "a794331d0e674079960a09e887c999a9", + "evidence": "HTTP=200, code=200", + "checkedAt": "2026-08-08T04:21:43.586Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "order-service 状态字段完整且 readiness 语义明确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "238e0c38-4f86-490c-80c5-98e65a15c2d8, 4187bc4a-4c53-4872-88b7-3e4e50c7c203", + "traceId": "a794331d0e674079960a09e887c999a9", + "evidence": "service=order-service, status=UP, readiness=UP", + "checkedAt": "2026-08-08T04:21:43.586Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "firstleg-service 状态响应使用统一成功体", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "26f9a529-8935-4d61-819d-8898fb965da9, 90e1b31b-e2be-4b5d-a79e-932ffe8d1590", + "traceId": "90ac09707d9549648f971eed9db21bb5", + "evidence": "HTTP=200, code=200", + "checkedAt": "2026-08-08T04:21:43.618Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "firstleg-service 状态字段完整且 readiness 语义明确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "26f9a529-8935-4d61-819d-8898fb965da9, 90e1b31b-e2be-4b5d-a79e-932ffe8d1590", + "traceId": "90ac09707d9549648f971eed9db21bb5", + "evidence": "service=firstleg-service, status=UP, readiness=UP", + "checkedAt": "2026-08-08T04:21:43.618Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "file-service 状态响应使用统一成功体", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "93e819fa-3264-4a1c-b76d-8dabee67b6fe, dc4eb8b6-8b51-41f6-b4fc-fc1d57d34b29", + "traceId": "056bb2030dcf44388ef3d003abf22e75", + "evidence": "HTTP=200, code=200", + "checkedAt": "2026-08-08T04:21:43.656Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "file-service 状态字段完整且 readiness 语义明确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "93e819fa-3264-4a1c-b76d-8dabee67b6fe, dc4eb8b6-8b51-41f6-b4fc-fc1d57d34b29", + "traceId": "056bb2030dcf44388ef3d003abf22e75", + "evidence": "service=file-service, status=UP, readiness=UP", + "checkedAt": "2026-08-08T04:21:43.656Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "warehouse-service 状态响应使用统一成功体", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouses/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9b1e86b0-5dbf-4cc2-88c3-3b8eb7482f92, 5883e797-b8c2-4fa9-857b-f3e8cf0b0caa", + "traceId": "a625ab0eeb1b45119209c4965dcc94b3", + "evidence": "HTTP=200, code=200", + "checkedAt": "2026-08-08T04:21:43.710Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "warehouse-service 状态字段完整且 readiness 语义明确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouses/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9b1e86b0-5dbf-4cc2-88c3-3b8eb7482f92, 5883e797-b8c2-4fa9-857b-f3e8cf0b0caa", + "traceId": "a625ab0eeb1b45119209c4965dcc94b3", + "evidence": "service=warehouse-service, status=UP, readiness=UP", + "checkedAt": "2026-08-08T04:21:43.710Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "平台接口未携带令牌返回 401", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/status" + }, + "http": 401, + "code": "A0401", + "message": "未登录或令牌已失效", + "requestId": "6b4f8b60-83", + "traceId": null, + "evidence": "HTTP=401, code=A0401", + "checkedAt": "2026-08-08T04:21:43.738Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "平台接口伪造令牌返回 401", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/status" + }, + "http": 401, + "code": "A0401", + "message": "未登录或令牌已失效", + "requestId": "780cc68b-84", + "traceId": null, + "evidence": "HTTP=401, code=A0401", + "checkedAt": "2026-08-08T04:21:43.771Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "未认证请求不返回业务成功码", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/status" + }, + "http": 401, + "code": "A0401", + "message": "未登录或令牌已失效", + "requestId": "6b4f8b60-85", + "traceId": null, + "evidence": "HTTP=401, code=A0401", + "checkedAt": "2026-08-08T04:21:43.794Z" + }, + { + "module": "supplemental", + "scenario": "master-data-readonly", + "name": "仓库分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=5&status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "45b0fd74-5d88-47a3-a995-000ccccef0db, e42aceca-8978-412a-9c88-eba0a431fdf6", + "traceId": "ce37c80458b5410d9382074380726bca", + "evidence": "path=/api/platform/v1/warehouse-admin?page=1&size=5&status=ACTIVE", + "checkedAt": "2026-08-08T04:21:43.868Z" + }, + { + "module": "supplemental", + "scenario": "master-data-readonly", + "name": "仓库分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=5&status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "45b0fd74-5d88-47a3-a995-000ccccef0db, e42aceca-8978-412a-9c88-eba0a431fdf6", + "traceId": "ce37c80458b5410d9382074380726bca", + "evidence": "records=5, current=1, size=5", + "checkedAt": "2026-08-08T04:21:43.868Z" + }, + { + "module": "supplemental", + "scenario": "master-data-readonly", + "name": "仓库筛选分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=5&tenantId=0&warehouseType=FBA" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c3f47cfd-702a-4c02-bcee-7cdb51d6d991, 3cecffb1-7565-4282-bad9-9b5952c0841a", + "traceId": "9ee9b64bcf98439dbcc215ebfe760b7a", + "evidence": "path=/api/platform/v1/warehouse-admin?page=1&size=5&tenantId=0&warehouseType=FBA", + "checkedAt": "2026-08-08T04:21:43.968Z" + }, + { + "module": "supplemental", + "scenario": "master-data-readonly", + "name": "仓库筛选分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=5&tenantId=0&warehouseType=FBA" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c3f47cfd-702a-4c02-bcee-7cdb51d6d991, 3cecffb1-7565-4282-bad9-9b5952c0841a", + "traceId": "9ee9b64bcf98439dbcc215ebfe760b7a", + "evidence": "records=5, current=1, size=5", + "checkedAt": "2026-08-08T04:21:43.968Z" + }, + { + "module": "supplemental", + "scenario": "master-data-readonly", + "name": "仓库非法状态安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=5&status=NOT_A_STATUS" + }, + "http": 200, + "code": "A0422", + "message": "status: must match \"ACTIVE|INACTIVE\"", + "requestId": "1b2c534d-cd6a-4a57-9c5c-cfd510566cdc", + "traceId": "c86bde9a0b894b07a3d1e21df2e88ad4", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T04:21:44.033Z" + }, + { + "module": "supplemental", + "scenario": "master-data-readonly", + "name": "仓库客户作用域安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=5&tenantId=10001" + }, + "http": 200, + "code": "A0400", + "message": "Platform resource scope must be 0 / 平台公共资源作用域必须为0", + "requestId": "5479fe98-981e-43e0-a6d1-0e0e4a401338", + "traceId": "572a7519d65f4ac4a14f3b77432ee17f", + "evidence": "HTTP=200, code=A0400", + "checkedAt": "2026-08-08T04:21:44.073Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "库位分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations?page=1&size=5&tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d9be99d3-44f8-4344-9364-bf7899529a4d, 264f05cb-209c-4e25-a58f-0c214abb0503", + "traceId": "0cd73d2944ad4042a282776763b2e482", + "evidence": "path=/api/platform/v1/locations?page=1&size=5&tenantId=0", + "checkedAt": "2026-08-08T04:21:44.130Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "库位分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations?page=1&size=5&tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d9be99d3-44f8-4344-9364-bf7899529a4d, 264f05cb-209c-4e25-a58f-0c214abb0503", + "traceId": "0cd73d2944ad4042a282776763b2e482", + "evidence": "records=3, current=1, size=5", + "checkedAt": "2026-08-08T04:21:44.130Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "托盘分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets?page=1&size=5&tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2dce31b7-37f7-43a2-b878-581212e38ae3, d20056d5-3e89-425d-bec9-12959c800d55", + "traceId": "5c675f1e610c480381bb98a95e391258", + "evidence": "path=/api/platform/v1/pallets?page=1&size=5&tenantId=0", + "checkedAt": "2026-08-08T04:21:44.187Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "托盘分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets?page=1&size=5&tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2dce31b7-37f7-43a2-b878-581212e38ae3, d20056d5-3e89-425d-bec9-12959c800d55", + "traceId": "5c675f1e610c480381bb98a95e391258", + "evidence": "records=3, current=1, size=5", + "checkedAt": "2026-08-08T04:21:44.187Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "库位仓库筛选分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations?page=1&size=5&tenantId=0&warehouseId=193000000000000001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b8823a9f-9e9c-4649-be31-f7fccbd435b7, 73380351-7962-4b69-a1d3-946491a3ec0d", + "traceId": "138ad6076cd54dbca1ed3a6688b84a18", + "evidence": "path=/api/platform/v1/locations?page=1&size=5&tenantId=0&warehouseId=193000000000000001", + "checkedAt": "2026-08-08T04:21:44.243Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "库位仓库筛选分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations?page=1&size=5&tenantId=0&warehouseId=193000000000000001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b8823a9f-9e9c-4649-be31-f7fccbd435b7, 73380351-7962-4b69-a1d3-946491a3ec0d", + "traceId": "138ad6076cd54dbca1ed3a6688b84a18", + "evidence": "records=0, current=1, size=5", + "checkedAt": "2026-08-08T04:21:44.244Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "托盘仓库筛选分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets?page=1&size=5&tenantId=0&warehouseId=193000000000000001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c5a03000-1406-45d3-be71-a63d34978055, b87786a2-1a10-4398-bcb2-c632658152fa", + "traceId": "eb71b8319ad74038aba58eff62d362a4", + "evidence": "path=/api/platform/v1/pallets?page=1&size=5&tenantId=0&warehouseId=193000000000000001", + "checkedAt": "2026-08-08T04:21:44.279Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "托盘仓库筛选分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets?page=1&size=5&tenantId=0&warehouseId=193000000000000001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c5a03000-1406-45d3-be71-a63d34978055, b87786a2-1a10-4398-bcb2-c632658152fa", + "traceId": "eb71b8319ad74038aba58eff62d362a4", + "evidence": "records=0, current=1, size=5", + "checkedAt": "2026-08-08T04:21:44.279Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "库位客户作用域安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations?page=1&size=5&tenantId=10001" + }, + "http": 200, + "code": "A0400", + "message": "平台公共资源作用域必须为0", + "requestId": "91d63c64-2a36-4b95-8e0a-a5273edd578e", + "traceId": "0fdc72b45e004363abaa937868525fa4", + "evidence": "HTTP=200, code=A0400", + "checkedAt": "2026-08-08T04:21:44.308Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "托盘客户作用域安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets?page=1&size=5&tenantId=10001" + }, + "http": 200, + "code": "A0400", + "message": "平台公共资源作用域必须为0", + "requestId": "c9bfcf03-26be-42bf-812c-d498b3a3919a", + "traceId": "143352bb9e5847b59428ba372e6f9f10", + "evidence": "HTTP=200, code=A0400", + "checkedAt": "2026-08-08T04:21:44.352Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "库位非法状态安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations?page=1&size=5&tenantId=0&status=ALLOCATED" + }, + "http": 200, + "code": "A0422", + "message": "status: must match \"^(AVAILABLE|RESERVED|OCCUPIED|DISABLED)$\"", + "requestId": "73c35040-8ff3-4de5-ba49-c592d344043b", + "traceId": "7c7194af476c451780dce0ec4294ed2a", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T04:21:44.382Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "库位过期版本/不存在资源不泄露或误修改数据", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations/999999999999?tenantId=0&warehouseId=999999999999" + }, + "http": 200, + "code": "A0404", + "message": "库位不存在或超出当前企业仓库数据范围", + "requestId": "e983999e-ff5e-4282-b6f7-e76d0f07b6ac", + "traceId": "dbd3f2b453d54902903d344ca82dbd9a", + "evidence": "HTTP=200, code=A0404", + "checkedAt": "2026-08-08T04:21:44.415Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "托盘占用资源保护边界不泄露或误修改数据", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets/999999999999?tenantId=0&warehouseId=999999999999" + }, + "http": 200, + "code": "A0404", + "message": "托盘不存在或不属于当前租户和仓库", + "requestId": "b9d629e2-fd87-4f0a-af9f-d956b6915e05", + "traceId": "38f837d6e0214d5cb2f549f6a8c8d795", + "evidence": "HTTP=200, code=A0404", + "checkedAt": "2026-08-08T04:21:44.447Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "快递公司分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "408f32f6-aa33-4fe9-bb5c-27b46e7546c0, 17060edc-e944-45fa-ad5c-55f3c3c4f947", + "traceId": "4d2a909d38af4828ba479972835d8ce8", + "evidence": "path=/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=ACTIVE", + "checkedAt": "2026-08-08T04:21:44.509Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "快递公司分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "408f32f6-aa33-4fe9-bb5c-27b46e7546c0, 17060edc-e944-45fa-ad5c-55f3c3c4f947", + "traceId": "4d2a909d38af4828ba479972835d8ce8", + "evidence": "records=4, current=1, size=5", + "checkedAt": "2026-08-08T04:21:44.509Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "快递公司停用筛选分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=INACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3dcd1cdb-fd0d-4d1c-8c8c-4157f11fc648, ddb1c931-4d1e-4129-8684-aacb8376f042", + "traceId": "0cc16058e80341f59f8a422856cbd80a", + "evidence": "path=/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=INACTIVE", + "checkedAt": "2026-08-08T04:21:44.558Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "快递公司停用筛选分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=INACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3dcd1cdb-fd0d-4d1c-8c8c-4157f11fc648, ddb1c931-4d1e-4129-8684-aacb8376f042", + "traceId": "0cc16058e80341f59f8a422856cbd80a", + "evidence": "records=5, current=1, size=5", + "checkedAt": "2026-08-08T04:21:44.558Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "快递公司状态枚举过滤不混入其他状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=INACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3dcd1cdb-fd0d-4d1c-8c8c-4157f11fc648, ddb1c931-4d1e-4129-8684-aacb8376f042", + "traceId": "0cc16058e80341f59f8a422856cbd80a", + "evidence": "records=5", + "checkedAt": "2026-08-08T04:21:44.558Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "快递公司无效筛选参数安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=UNKNOWN" + }, + "http": 200, + "code": "A0422", + "message": "status: must match \"^(ACTIVE|INACTIVE)$\"", + "requestId": "a48692ff-456d-44d2-9600-8f7f4ce7af0e", + "traceId": "7a2d51cb383447f5affb2ef0bcecd9a6", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T04:21:44.594Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "往来单位分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners?page=1&size=5&tenantId=0&status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3abb3563-06c1-42af-bee3-602782059401, 98b7bf9c-5a4d-472a-84a0-1498db4fc8e1", + "traceId": "fd38c44c69be48c7a87d76827ddfbf7d", + "evidence": "path=/api/platform/v1/partners?page=1&size=5&tenantId=0&status=ACTIVE", + "checkedAt": "2026-08-08T04:21:44.664Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "往来单位分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners?page=1&size=5&tenantId=0&status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3abb3563-06c1-42af-bee3-602782059401, 98b7bf9c-5a4d-472a-84a0-1498db4fc8e1", + "traceId": "fd38c44c69be48c7a87d76827ddfbf7d", + "evidence": "records=5, current=1, size=5", + "checkedAt": "2026-08-08T04:21:44.664Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "往来单位停用筛选分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners?page=1&size=5&tenantId=0&status=INACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5dc96b24-ac65-42d2-bf4d-6bc1f356cecd, 649b868f-b18c-4170-96bf-dc62ed39e4c5", + "traceId": "47ed1bcaab744c2aa505157387b45791", + "evidence": "path=/api/platform/v1/partners?page=1&size=5&tenantId=0&status=INACTIVE", + "checkedAt": "2026-08-08T04:21:44.710Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "往来单位停用筛选分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners?page=1&size=5&tenantId=0&status=INACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5dc96b24-ac65-42d2-bf4d-6bc1f356cecd, 649b868f-b18c-4170-96bf-dc62ed39e4c5", + "traceId": "47ed1bcaab744c2aa505157387b45791", + "evidence": "records=4, current=1, size=5", + "checkedAt": "2026-08-08T04:21:44.710Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "往来单位状态枚举过滤不混入其他状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners?page=1&size=5&tenantId=0&status=INACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5dc96b24-ac65-42d2-bf4d-6bc1f356cecd, 649b868f-b18c-4170-96bf-dc62ed39e4c5", + "traceId": "47ed1bcaab744c2aa505157387b45791", + "evidence": "records=4", + "checkedAt": "2026-08-08T04:21:44.710Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "往来单位无效筛选参数安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners?page=1&size=5&tenantId=0&types=UNKNOWN_TYPE" + }, + "http": 200, + "code": "A0422", + "message": "types[0]: must match \"^(CUSTOMER|SUPPLIER|CARRIER|CUSTOMS_BROKER|SHIPPER|CONSIGNEE)$\"", + "requestId": "7f891f47-0e6e-4068-bd4f-b41f1d5405bc", + "traceId": "41259db611394f979c92f13956e69702", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T04:21:44.757Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "仓库导入模板为 XLSX 且不记录二进制", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin/import-template" + }, + "http": 200, + "code": null, + "message": "3852 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "6df624d8-e608-49c0-9a2b-1f65187360a9, 8042f9ab-6fe5-4114-8e6f-a722bcdbe311", + "traceId": "405767bf4a174701b4bd34759f397d54", + "evidence": "HTTP=200, bytes=3852, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "checkedAt": "2026-08-08T04:21:45.252Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "快递公司导入模板为 XLSX 且不记录二进制", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies/import-template" + }, + "http": 200, + "code": null, + "message": "3691 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "650ef116-889d-4b67-9856-e83f235bfbc6, 81f7bcb3-8cdc-4dcb-b24f-a0cfbaf864f6", + "traceId": "7cbf60c966ef4f2497b7c26a0f777fc2", + "evidence": "HTTP=200, bytes=3691, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "checkedAt": "2026-08-08T04:21:45.420Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "往来单位导入模板为 XLSX 且不记录二进制", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners/import-template" + }, + "http": 200, + "code": null, + "message": "3829 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "adf92c62-89f0-40e8-8984-8c2bcb47d0cc, 3cc593c3-c902-4a97-a22d-df362f1b1fbf", + "traceId": "3881900b81714b3e948c106e0465e6e3", + "evidence": "HTTP=200, bytes=3829, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "checkedAt": "2026-08-08T04:21:45.473Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "船期价格表 PENDING_CONFIRMATION 状态过滤", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books?status=PENDING_CONFIRMATION" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "fe858070-ec60-444d-9e55-f5ffc5925c68, 171b4bcd-2d5d-45ee-bb4e-4ec7fa552cee", + "traceId": "e2071679025f4288884caa6deeae82e4", + "evidence": "count=1", + "checkedAt": "2026-08-08T04:21:45.534Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "船期价格表 PENDING_CONFIRMATION 结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books?status=PENDING_CONFIRMATION" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "fe858070-ec60-444d-9e55-f5ffc5925c68, 171b4bcd-2d5d-45ee-bb4e-4ec7fa552cee", + "traceId": "e2071679025f4288884caa6deeae82e4", + "evidence": "count=1", + "checkedAt": "2026-08-08T04:21:45.534Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "船期价格表 ACTIVE 状态过滤", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books?status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "31ce6456-94d1-4047-8317-420c94e0cf98, 8c4abf20-0053-4d71-949c-2e351bf21560", + "traceId": "747ea4e51a4d43779faf7ebff290f145", + "evidence": "count=1", + "checkedAt": "2026-08-08T04:21:45.559Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "船期价格表 ACTIVE 结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books?status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "31ce6456-94d1-4047-8317-420c94e0cf98, 8c4abf20-0053-4d71-949c-2e351bf21560", + "traceId": "747ea4e51a4d43779faf7ebff290f145", + "evidence": "count=1", + "checkedAt": "2026-08-08T04:21:45.559Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "船期价格表 SUPERSEDED 状态过滤", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books?status=SUPERSEDED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6d4466db-9da7-4949-abcd-8f0e73723715, fb8eac4d-2495-4071-a633-0c62762d58f3", + "traceId": "8f7c1c564a45497396607dbd07ef865b", + "evidence": "count=5", + "checkedAt": "2026-08-08T04:21:45.591Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "船期价格表 SUPERSEDED 结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books?status=SUPERSEDED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6d4466db-9da7-4949-abcd-8f0e73723715, fb8eac4d-2495-4071-a633-0c62762d58f3", + "traceId": "8f7c1c564a45497396607dbd07ef865b", + "evidence": "count=5", + "checkedAt": "2026-08-08T04:21:45.591Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "读取现有生效价格版本用于下载安全检查", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books?status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ae70634a-cfe1-486d-8318-00e85ed4ed65, dae64088-f3a9-4f18-9fc9-e192a0e2b48a", + "traceId": "d025779c258541489c55b3901aecd248", + "evidence": "", + "checkedAt": "2026-08-08T04:21:45.618Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "现有生效价格源文件下载为 XLSX", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books/2085930794353209345/source" + }, + "http": 200, + "code": null, + "message": "1343413 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "33e3038a-7a7e-4897-959a-106e7b4de805, 7eba1f93-1ecc-42db-9d25-e7ec1ccc9860, 9941da4e-f1c9-4837-81d5-d1a91e492f0d", + "traceId": "292c8efa76d4439485e5c965bfdee5c6, 72053a5b0ff441b1be00aa041000bd35", + "evidence": "versionId=2085930794353209345, bytes=1343413, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "checkedAt": "2026-08-08T04:21:45.873Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 PENDING 状态分页", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=PENDING" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "48a04fb1-5a83-4248-800c-31ad4aaf5632, 880336e5-96e0-4ded-b5b8-1914a67510e7", + "traceId": "df972ab73a81444c920126dfb55e790d", + "evidence": "", + "checkedAt": "2026-08-08T04:21:46.053Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 PENDING 过滤结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=PENDING" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "48a04fb1-5a83-4248-800c-31ad4aaf5632, 880336e5-96e0-4ded-b5b8-1914a67510e7", + "traceId": "df972ab73a81444c920126dfb55e790d", + "evidence": "records=0", + "checkedAt": "2026-08-08T04:21:46.054Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 RUNNING 状态分页", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=RUNNING" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a63e6a4b-58d9-4292-b20e-6fdd0b2c7546, db78bd68-de87-4a58-bf5d-c4d88de96582", + "traceId": "fe0832b4fa044cd0b1f482d4abb15575", + "evidence": "", + "checkedAt": "2026-08-08T04:21:46.097Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 RUNNING 过滤结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=RUNNING" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a63e6a4b-58d9-4292-b20e-6fdd0b2c7546, db78bd68-de87-4a58-bf5d-c4d88de96582", + "traceId": "fe0832b4fa044cd0b1f482d4abb15575", + "evidence": "records=0", + "checkedAt": "2026-08-08T04:21:46.097Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 SUCCEEDED 状态分页", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=SUCCEEDED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6b134161-c26e-4475-887d-63f85b7c387d, 2acfba4e-b11f-4005-acac-f09ede9f825e", + "traceId": "4d9befe8f8644f6ba1e2337e054148f7", + "evidence": "", + "checkedAt": "2026-08-08T04:21:46.157Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 SUCCEEDED 过滤结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=SUCCEEDED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6b134161-c26e-4475-887d-63f85b7c387d, 2acfba4e-b11f-4005-acac-f09ede9f825e", + "traceId": "4d9befe8f8644f6ba1e2337e054148f7", + "evidence": "records=5", + "checkedAt": "2026-08-08T04:21:46.157Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 FAILED 状态分页", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=FAILED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d3ef8c7c-a39c-4021-84b5-3952bd57a3d3, bd918fa2-9a08-403c-a4b3-b3b070acd5f3", + "traceId": "a8143a25756b4964a2b2d8c7cda12c69", + "evidence": "", + "checkedAt": "2026-08-08T04:21:46.202Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 FAILED 过滤结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=FAILED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d3ef8c7c-a39c-4021-84b5-3952bd57a3d3, bd918fa2-9a08-403c-a4b3-b3b070acd5f3", + "traceId": "a8143a25756b4964a2b2d8c7cda12c69", + "evidence": "records=0", + "checkedAt": "2026-08-08T04:21:46.203Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 EXPIRED 状态分页", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=EXPIRED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "48289a7c-13f5-45a6-a793-50a296f948fe, cb4cdafa-6c38-4865-ab10-09dc87d9b595", + "traceId": "82e45b16aee145a28aed70890b814454", + "evidence": "", + "checkedAt": "2026-08-08T04:21:46.251Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 EXPIRED 过滤结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=EXPIRED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "48289a7c-13f5-45a6-a793-50a296f948fe, cb4cdafa-6c38-4865-ab10-09dc87d9b595", + "traceId": "82e45b16aee145a28aed70890b814454", + "evidence": "records=0", + "checkedAt": "2026-08-08T04:21:46.252Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "不存在下载任务详情安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks/999999999999" + }, + "http": 200, + "code": "A0404", + "message": "导出任务不存在", + "requestId": "97e21f10-e85c-4211-bf9a-c4b38cc2eea2", + "traceId": "3ecc40b1ff5c441db921dfdf27b16e0e", + "evidence": "HTTP=200, code=A0404", + "checkedAt": "2026-08-08T04:21:46.297Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "不存在下载任务文件安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks/999999999999/download" + }, + "http": 200, + "code": "A0404", + "message": "导出任务不存在", + "requestId": "45038f7d-6a08-49b5-8140-7aac08005cde", + "traceId": "2b38debe211c47bba70e32458df4a79b", + "evidence": "HTTP=200, code=A0404", + "checkedAt": "2026-08-08T04:21:46.337Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "未授权下载请求被拒绝", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks/999999999999/download" + }, + "http": 401, + "code": "A0401", + "message": "未登录或令牌已失效", + "requestId": "780cc68b-120", + "traceId": null, + "evidence": "HTTP=401, code=A0401", + "checkedAt": "2026-08-08T04:21:46.357Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "平台用户只读列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/users?page=1&size=5" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3ea4be14-6bfd-4d2f-95f7-ffd8abd65757, a42f960e-cdd0-4d61-a543-e683080dd650", + "traceId": "68c17f6849d146dab78cad6204ee1258", + "evidence": "", + "checkedAt": "2026-08-08T04:21:46.676Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "平台用户列表结构正确且包含内置保护标识", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/users?page=1&size=5" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3ea4be14-6bfd-4d2f-95f7-ffd8abd65757, a42f960e-cdd0-4d61-a543-e683080dd650", + "traceId": "68c17f6849d146dab78cad6204ee1258", + "evidence": "records=5, builtInField=protectedAccount", + "checkedAt": "2026-08-08T04:21:46.676Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "平台角色只读列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/roles" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "95f75e2d-3164-4d66-8dc0-d928814856b1, 25d802bd-765c-4ec0-b4de-ca8356f0e44c", + "traceId": "e9bb801faa03432d98ab71f8ec5d6076", + "evidence": "", + "checkedAt": "2026-08-08T04:21:46.736Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "平台角色列表结构正确且包含内置保护标识", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/roles" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "95f75e2d-3164-4d66-8dc0-d928814856b1, 25d802bd-765c-4ec0-b4de-ca8356f0e44c", + "traceId": "e9bb801faa03432d98ab71f8ec5d6076", + "evidence": "records=10, builtInField=roleType", + "checkedAt": "2026-08-08T04:21:46.736Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "菜单权限只读列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/permissions" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2474e1e8-6330-4b3d-a451-ca164514d49d, c7b8ea75-7e0a-41e6-9e2c-de93317af67d", + "traceId": "31a9d0b6262943e1b6e12a55ee11102a", + "evidence": "", + "checkedAt": "2026-08-08T04:21:46.791Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "菜单权限列表结构正确且包含内置保护标识", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/permissions" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2474e1e8-6330-4b3d-a451-ca164514d49d, c7b8ea75-7e0a-41e6-9e2c-de93317af67d", + "traceId": "31a9d0b6262943e1b6e12a55ee11102a", + "evidence": "records=120, builtInField=builtIn", + "checkedAt": "2026-08-08T04:21:46.791Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "角色列表伪造令牌拒绝访问", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/roles" + }, + "http": 401, + "code": "A0401", + "message": "未登录或令牌已失效", + "requestId": "780cc68b-124", + "traceId": null, + "evidence": "HTTP=401, code=A0401", + "checkedAt": "2026-08-08T04:21:46.820Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "菜单权限未携带令牌拒绝访问", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/permissions" + }, + "http": 401, + "code": "A0401", + "message": "未登录或令牌已失效", + "requestId": "6b4f8b60-125", + "traceId": null, + "evidence": "HTTP=401, code=A0401", + "checkedAt": "2026-08-08T04:21:46.845Z" + } + ] +} diff --git a/reports/admin-test-env-acceptance-20260808043609.json b/reports/admin-test-env-acceptance-20260808043609.json new file mode 100644 index 000000000..ac360a4ba --- /dev/null +++ b/reports/admin-test-env-acceptance-20260808043609.json @@ -0,0 +1,1518 @@ +{ + "reportName": "后台管理测试环境 HTTP API 验收", + "marker": "ADMIN-API-20260808043609375", + "gateway": "http://8.163.30.128:9000", + "generatedAt": "2026-08-08T04:36:13.912Z", + "startedAt": "2026-08-08T04:36:09.375Z", + "success": false, + "fatal": null, + "summary": { + "total": 78, + "passed": 76, + "failed": 2 + }, + "modules": [ + { + "name": "orders", + "startedAt": "2026-08-08T04:36:09.773Z", + "finishedAt": "2026-08-08T04:36:12.559Z", + "success": true, + "passed": 49, + "failed": 0, + "fatal": null + }, + { + "name": "inbound-measurement", + "startedAt": "2026-08-08T04:36:12.560Z", + "finishedAt": "2026-08-08T04:36:13.912Z", + "success": false, + "passed": 26, + "failed": 2, + "fatal": null + } + ], + "scenarios": [ + { + "name": "mojia-carton-measurement", + "module": "inbound-measurement", + "success": false, + "deploymentBlocked": true, + "passed": 26, + "failed": 2 + } + ], + "deploymentBlockers": [ + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "覆盖尺寸、箱数和服务端体积公式正确", + "evidence": "unitVolume=0.0768, totalVolume=0.3072, volumeWeight=51.303, girth=204.5", + "code": "200", + "requestId": "439a7df8-c589-4b7c-b5c8-626e3a6fdcd4, aff22706-6b0d-4738-b3a6-b4f88929bcba", + "traceId": "5f6ec0d789574bd99af1403e0e2a1c88" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "审核后入库与测量状态闭环且结果未变化", + "evidence": "processStatus=INBOUNDED, measurementStatus=APPROVED, packages=4", + "code": "200", + "requestId": "6f45b738-574a-47b4-a59d-c4c1e0c757cb, 900dc373-fcef-4f02-833f-e41b7dcfdc38", + "traceId": "42eb92b60cc14d9ab3d3e1121495376c" + } + ], + "createdResources": { + "orders": { + "marker": "ADMIN-API-20260808043609375", + "tenantId": "10001", + "orderId": "2085948154755743746", + "productImageFileId": "2085948154252427265", + "boxTypes": [ + "SMALL", + "MEDIUM", + "LARGE", + "EXTRA_LARGE" + ], + "inboundId": "2085948160550154241", + "orderNo": "FL2085948154755743746", + "inboundCode": "RK-2085948154755743746", + "processStatus": "WAIT_MEASURE", + "taskId": "2085948160529182722" + }, + "ocrInbound": { + "tenantId": "10001", + "inboundId": "2085948160550154241", + "marker": "ADMIN-API-20260808043609375" + }, + "testInbound": { + "tenantId": "10001", + "inboundId": "2085948160550154241", + "marker": "ADMIN-API-20260808043609375" + }, + "inboundMeasurement": { + "marker": "ADMIN-API-20260808043609375", + "tenantId": "10001", + "inboundId": "2085948160550154241", + "measurementId": "2085948166124384257", + "boxCode": "RK-2085948154755743746#4-1", + "finalStatus": "APPROVED" + } + }, + "excluded": [ + { + "scope": "dashboard", + "reason": "首页为静态演示数据,不调用后端 API" + }, + { + "scope": "hidden-prototypes", + "reason": "隐藏原型页面尚无已确认后端契约" + } + ], + "securityNote": "报告不保存登录密码、Access Token、Refresh Token、图片二进制或 OCR 原文全文。", + "steps": [ + { + "module": "authentication", + "scenario": null, + "name": "平台管理员登录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/auth/login" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4acd665d-a7bb-422a-8a9d-ea21ea0ea153, 55274877-f94f-4d27-94ca-c349de49b442", + "traceId": "c33fe21e1ca941b68a8bb60f2615840d", + "evidence": "", + "checkedAt": "2026-08-08T04:36:09.770Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 测试账号登录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/auth/login" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ffd1ae4d-8b98-4fcc-b6f2-22866be771c4, ff2bd6b7-6280-4f66-97ca-eb73bf1845fd", + "traceId": "d18b270901544b978955e1daeee27df2", + "evidence": "username=merchant_admin", + "checkedAt": "2026-08-08T04:36:10.138Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询当前企业资料", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/iam/tenant/profile" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a8331d15-268e-4186-86c5-568cbeda06f7, 867ed30c-ce9b-4a5e-8d81-7be3a4ce36ae", + "traceId": "f4fc3b73acc8447b897da0004769642b", + "evidence": "", + "checkedAt": "2026-08-08T04:36:10.178Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 测试企业已审核且客户 ID 有效", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/iam/tenant/profile" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a8331d15-268e-4186-86c5-568cbeda06f7, 867ed30c-ce9b-4a5e-8d81-7be3a4ce36ae", + "traceId": "f4fc3b73acc8447b897da0004769642b", + "evidence": "tenantId=10001, status=ACTIVE", + "checkedAt": "2026-08-08T04:36:10.178Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询客户固定箱型", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "62ef0c67-fcd0-4f46-b352-5455cbe12817, 38682e65-fdb4-41a6-bc4d-65eb683c2162", + "traceId": "09d00b18faa74c999f8fce172fa70ea1", + "evidence": "tenantId=10001", + "checkedAt": "2026-08-08T04:36:10.216Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "固定四箱型顺序、内径及每边加2cm正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "62ef0c67-fcd0-4f46-b352-5455cbe12817, 38682e65-fdb4-41a6-bc4d-65eb683c2162", + "traceId": "09d00b18faa74c999f8fce172fa70ea1", + "evidence": "types=SMALL,MEDIUM,LARGE,EXTRA_LARGE", + "checkedAt": "2026-08-08T04:36:10.216Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询国内收货仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=DOMESTIC" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2bb2a55a-b349-450c-80f6-10207d3d1a0c, 1d9a7483-3b8d-493d-b968-2338133d6588", + "traceId": "2fc1924f55f54b7a82fcea8d0aeba3b4", + "evidence": "", + "checkedAt": "2026-08-08T04:36:10.260Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在可用国内收货仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=DOMESTIC" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2bb2a55a-b349-450c-80f6-10207d3d1a0c, 1d9a7483-3b8d-493d-b968-2338133d6588", + "traceId": "2fc1924f55f54b7a82fcea8d0aeba3b4", + "evidence": "count=2", + "checkedAt": "2026-08-08T04:36:10.260Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询 FBA 目的仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=FBA" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3ce55223-07b3-4e6f-b709-f04a7db91d5a, 0b23b0cc-aee5-4f6f-bf5e-339e94eac7fc", + "traceId": "e79b5f0264dd48ceb520c090656ecc7f", + "evidence": "", + "checkedAt": "2026-08-08T04:36:10.313Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在可用 FBA 目的仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=FBA" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3ce55223-07b3-4e6f-b709-f04a7db91d5a, 0b23b0cc-aee5-4f6f-bf5e-339e94eac7fc", + "traceId": "e79b5f0264dd48ceb520c090656ecc7f", + "evidence": "count=200", + "checkedAt": "2026-08-08T04:36:10.313Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询可用计费渠道", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/first-leg/pricing/channels?originWarehouseId=193000000000200001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "aa7a25ae-f66a-421c-b920-861a2d318032, f68d3642-522b-49c3-af72-242ff95e466d", + "traceId": "b5d343706c6a4ffdb0786407dde7620c", + "evidence": "", + "checkedAt": "2026-08-08T04:36:10.362Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在带计价税制的可用渠道", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/first-leg/pricing/channels?originWarehouseId=193000000000200001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "aa7a25ae-f66a-421c-b920-861a2d318032, f68d3642-522b-49c3-af72-242ff95e466d", + "traceId": "b5d343706c6a4ffdb0786407dde7620c", + "evidence": "count=15", + "checkedAt": "2026-08-08T04:36:10.363Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询发货客户候选", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/partners/candidates?type=SHIPPER" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a1394aef-3636-482f-9fe9-83e0f16f4399, 176d2245-4605-4d6f-9543-bfbc813791ab", + "traceId": "0233bdeff2f84e85b5c9753ce7c45926", + "evidence": "", + "checkedAt": "2026-08-08T04:36:10.401Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 上传产品图片", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/files/product-images" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "bf48244f-6095-4954-ac0e-2dbcd4bc7278, c15497b6-d4c1-4c59-a986-93e0991359eb", + "traceId": "c3b1aacf3bda492abb0b12a4a1d9df64", + "evidence": "contentType=image/png", + "checkedAt": "2026-08-08T04:36:10.448Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "产品图片上传返回字符串文件 ID", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/files/product-images" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "bf48244f-6095-4954-ac0e-2dbcd4bc7278, c15497b6-d4c1-4c59-a986-93e0991359eb", + "traceId": "c3b1aacf3bda492abb0b12a4a1d9df64", + "evidence": "fileIdType=string, contentType=image/png", + "checkedAt": "2026-08-08T04:36:10.448Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 可下载本轮产品图片", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/files/product-images/2085948154252427265" + }, + "http": 200, + "code": null, + "message": null, + "requestId": "0867a4f6-f0d8-4450-9157-4eb0b3ba9fac, cd279023-5672-44ae-b9a7-f3b06d458505", + "traceId": "a989a181daa6486fa2ef773ed3f18eb7", + "evidence": "bytes=68, contentType=image/png", + "checkedAt": "2026-08-08T04:36:10.470Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 创建四箱型隔离订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1c67e751-1ad0-48ba-a474-64275a1ccdd5, 9ecce0bd-1686-4bea-8f9b-0fd5bab7cc9e", + "traceId": "646a3de8cf0e475ea715a3895338bb13", + "evidence": "marker=ADMIN-API-20260808043609375", + "checkedAt": "2026-08-08T04:36:10.577Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 创建订单幂等重放", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6d5b7aa8-32b8-4794-b2cc-80134904f59a, 07d1efa7-7c80-4bda-9545-4b0ecc6fe213", + "traceId": "0d83a977372f4b368404eed7bee4b51f", + "evidence": "", + "checkedAt": "2026-08-08T04:36:10.614Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 创建幂等结果一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6d5b7aa8-32b8-4794-b2cc-80134904f59a, 07d1efa7-7c80-4bda-9545-4b0ecc6fe213", + "traceId": "0d83a977372f4b368404eed7bee4b51f", + "evidence": "orderId=2085948154755743746, replayedId=2085948154755743746", + "checkedAt": "2026-08-08T04:36:10.614Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询隔离订单草稿", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085948154755743746" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2abb2362-4770-4b6a-b859-aeca662d7c5e, 3f45fead-3e19-4692-a49e-ba829a17a164", + "traceId": "a47519fa787e4bc7ad8992feb454c44e", + "evidence": "", + "checkedAt": "2026-08-08T04:36:10.660Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 草稿身份、marker 和状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085948154755743746" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2abb2362-4770-4b6a-b859-aeca662d7c5e, 3f45fead-3e19-4692-a49e-ba829a17a164", + "traceId": "a47519fa787e4bc7ad8992feb454c44e", + "evidence": "orderNo=FL2085948154755743746, status=DRAFT", + "checkedAt": "2026-08-08T04:36:10.660Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "四箱型产品字段及图片契约完整回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085948154755743746" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2abb2362-4770-4b6a-b859-aeca662d7c5e, 3f45fead-3e19-4692-a49e-ba829a17a164", + "traceId": "a47519fa787e4bc7ad8992feb454c44e", + "evidence": "cargoes=4, imageFileId=2085948154252427265", + "checkedAt": "2026-08-08T04:36:10.661Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 提交隔离订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg/2085948154755743746/submit" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ca10d327-6591-4a12-abd0-c9012ab33682, 1aae0a1d-8ed1-4e4d-80af-8fb6409c74c8", + "traceId": "bbc25c215c254e05b5d66861e97a3c84", + "evidence": "orderId=2085948154755743746", + "checkedAt": "2026-08-08T04:36:10.762Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 回查已提交订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085948154755743746" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "77814b7e-d365-4020-b5f5-c51125c5c62c, ff5bd51e-2b6e-4e90-be2e-901149bae506", + "traceId": "aa200570de2548a199ca78cfb8588893", + "evidence": "", + "checkedAt": "2026-08-08T04:36:10.798Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 订单已进入待审核状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085948154755743746" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "77814b7e-d365-4020-b5f5-c51125c5c62c, ff5bd51e-2b6e-4e90-be2e-901149bae506", + "traceId": "aa200570de2548a199ca78cfb8588893", + "evidence": "status=SUBMITTED", + "checkedAt": "2026-08-08T04:36:10.798Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询统一订单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders?page=1&size=100&tenantId=10001&orderNo=FL2085948154755743746" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e6fde556-3139-4490-b380-46a403c7546b, c363857a-b1f0-4d0a-a7fe-2a547860a51e", + "traceId": "d61297fbe404483d96dc43473c3162ee", + "evidence": "", + "checkedAt": "2026-08-08T04:36:10.854Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 统一订单列表只核对本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders?page=1&size=100&tenantId=10001&orderNo=FL2085948154755743746" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e6fde556-3139-4490-b380-46a403c7546b, c363857a-b1f0-4d0a-a7fe-2a547860a51e", + "traceId": "d61297fbe404483d96dc43473c3162ee", + "evidence": "orderId=2085948154755743746, found=true", + "checkedAt": "2026-08-08T04:36:10.854Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询统一订单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085948154755743746?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ff2579dc-100e-420f-8c1f-3c0fe0933d78, bd7f0d47-c02b-413a-aa3c-9f8c129f8495", + "traceId": "ad36d11abda840c9a9efa6c7353ff3e9", + "evidence": "", + "checkedAt": "2026-08-08T04:36:10.895Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 统一订单详情身份与待审核状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085948154755743746?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ff2579dc-100e-420f-8c1f-3c0fe0933d78, bd7f0d47-c02b-413a-aa3c-9f8c129f8495", + "traceId": "ad36d11abda840c9a9efa6c7353ff3e9", + "evidence": "mainStatus=PENDING_REVIEW, timeline=2", + "checkedAt": "2026-08-08T04:36:10.895Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询头程订单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg?tenantId=10001&keyword=FL2085948154755743746&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "386f7d9c-6154-4a14-8aec-7a143133a420, 208b67d3-6827-45b6-a28d-20f851236b51", + "traceId": "416242fd7a404095ba8c53ff785b2e53", + "evidence": "", + "checkedAt": "2026-08-08T04:36:10.937Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 头程订单列表只核对本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg?tenantId=10001&keyword=FL2085948154755743746&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "386f7d9c-6154-4a14-8aec-7a143133a420, 208b67d3-6827-45b6-a28d-20f851236b51", + "traceId": "416242fd7a404095ba8c53ff785b2e53", + "evidence": "orderId=2085948154755743746, found=true", + "checkedAt": "2026-08-08T04:36:10.938Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询头程订单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085948154755743746?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0303948f-f3d9-49a9-9d60-8639ece5c9cf, 3acb1146-2cdc-4626-8ffc-ff23d713544a", + "traceId": "324c115d2155467aae9a6960e4037746", + "evidence": "", + "checkedAt": "2026-08-08T04:36:10.970Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 头程订单详情聚合结构完整", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085948154755743746?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0303948f-f3d9-49a9-9d60-8639ece5c9cf, 3acb1146-2cdc-4626-8ffc-ff23d713544a", + "traceId": "324c115d2155467aae9a6960e4037746", + "evidence": "cargoes=4, history=2", + "checkedAt": "2026-08-08T04:36:10.970Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "四箱型产品字段及图片契约完整回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085948154755743746?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0303948f-f3d9-49a9-9d60-8639ece5c9cf, 3acb1146-2cdc-4626-8ffc-ff23d713544a", + "traceId": "324c115d2155467aae9a6960e4037746", + "evidence": "cargoes=4, imageFileId=2085948154252427265", + "checkedAt": "2026-08-08T04:36:10.970Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 为本轮订单添加内部备注", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085948154755743746/internal-notes?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "87199bb7-01da-4d45-8f3d-eea8f7be93ed, 0dce33c5-bb05-4624-a22e-56a2da257484", + "traceId": "f8b41ac6d74e4580bde0e0fbee5116a3", + "evidence": "", + "checkedAt": "2026-08-08T04:36:11.041Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 审核通过本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085948154755743746/approve?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5610adc8-a819-4f7e-873f-f0accbee4ded, 49152577-f2a0-45d3-981b-fcf4cd8e049d", + "traceId": "1d6b5daab8204eaf89d1b7e9de041a5f", + "evidence": "orderId=2085948154755743746", + "checkedAt": "2026-08-08T04:36:11.074Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "审核后生成隔离入库单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085948154755743746?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "df0be278-f6e6-476e-80b7-60da18ede6b5, f483f4b1-db20-4e40-a0fc-688f9c97238f", + "traceId": "5b5fbf2ec9204215abc51a180f821a61", + "evidence": "inboundId=2085948160550154241", + "checkedAt": "2026-08-08T04:36:12.178Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询本轮入库单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085948160550154241?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "987a80b9-7e98-4d1d-a244-be5f2b4e0224, 64f0b250-2e91-4749-8c6d-ebe959d25b6f", + "traceId": "322b037542b4438fb159e1bd57d07cbe", + "evidence": "inboundId=2085948160550154241", + "checkedAt": "2026-08-08T04:36:12.216Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "隔离入库单 marker 来源与可测量状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085948160550154241?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "987a80b9-7e98-4d1d-a244-be5f2b4e0224, 64f0b250-2e91-4749-8c6d-ebe959d25b6f", + "traceId": "322b037542b4438fb159e1bd57d07cbe", + "evidence": "markerFound=true, status=WAIT_MEASURE", + "checkedAt": "2026-08-08T04:36:12.216Z" + }, + { + "module": "orders", + "scenario": null, + "name": "入库单详情包含托盘库位、文件、备注和状态历史", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085948160550154241?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "987a80b9-7e98-4d1d-a244-be5f2b4e0224, 64f0b250-2e91-4749-8c6d-ebe959d25b6f", + "traceId": "322b037542b4438fb159e1bd57d07cbe", + "evidence": "inboundId=2085948160550154241, history=1", + "checkedAt": "2026-08-08T04:36:12.216Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询入库单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds?tenantId=10001&inboundCode=RK-2085948154755743746&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "99b39c31-9046-4eae-a76e-f977414f6317, a75bfd8e-34da-484f-a05e-9bd1a53c31e6", + "traceId": "23f6d141f4b641b1999080b51b0c59c5", + "evidence": "", + "checkedAt": "2026-08-08T04:36:12.341Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 入库单列表只核对本轮入库单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds?tenantId=10001&inboundCode=RK-2085948154755743746&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "99b39c31-9046-4eae-a76e-f977414f6317, a75bfd8e-34da-484f-a05e-9bd1a53c31e6", + "traceId": "23f6d141f4b641b1999080b51b0c59c5", + "evidence": "inboundId=2085948160550154241, total=1", + "checkedAt": "2026-08-08T04:36:12.341Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询本轮订单履约任务", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/by-order/2085948154755743746?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "df21269e-d82e-4495-9a56-4b4b8905e0d0, 5d95f8a6-b012-4be6-b5eb-853863eb884f", + "traceId": "c9959f166ac849a6b34d0c548b990849", + "evidence": "新订单应生成可查询的履约任务", + "checkedAt": "2026-08-08T04:36:12.381Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "履约任务与本轮订单和客户一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/by-order/2085948154755743746?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "df21269e-d82e-4495-9a56-4b4b8905e0d0, 5d95f8a6-b012-4be6-b5eb-853863eb884f", + "traceId": "c9959f166ac849a6b34d0c548b990849", + "evidence": "taskId=2085948160529182722, status=PENDING_ASSIGNMENT", + "checkedAt": "2026-08-08T04:36:12.381Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询本轮履约任务分配历史", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/2085948160529182722/assignment-history?tenantId=10001&page=1&size=20" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ecdde680-07d5-4d79-b69c-dae6ff676c9a, 61404a21-731f-4dd9-8971-14fa8154d99e", + "traceId": "25398a03f26e40dd9c184eef549601ee", + "evidence": "", + "checkedAt": "2026-08-08T04:36:12.447Z" + }, + { + "module": "orders", + "scenario": null, + "name": "履约分配历史分页结构正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/2085948160529182722/assignment-history?tenantId=10001&page=1&size=20" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ecdde680-07d5-4d79-b69c-dae6ff676c9a, 61404a21-731f-4dd9-8971-14fa8154d99e", + "traceId": "25398a03f26e40dd9c184eef549601ee", + "evidence": "taskId=2085948160529182722, total=0", + "checkedAt": "2026-08-08T04:36:12.447Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 受理本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085948154755743746/accept?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "879222a5-eec1-4fbb-bfa7-77101c052885, e27339bb-5d23-4ae3-8121-28d647a624d2", + "traceId": "a3f297ed90fb4eb69789c4078ac8c85d", + "evidence": "", + "checkedAt": "2026-08-08T04:36:12.489Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 启动本轮订单履约", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085948154755743746/start?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "75b418aa-2e1d-4307-afa8-1b97fd00e861, fccbdc81-370c-4204-84c0-b811fc81970b", + "traceId": "a9f6c14ff32e4a85b3874f5f712b4689", + "evidence": "", + "checkedAt": "2026-08-08T04:36:12.521Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 回查本轮订单履约状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085948154755743746?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7e33d6ea-2028-43f0-b905-be6b29012589, 4e371197-d95f-480a-8b22-d4e601110ad0", + "traceId": "453c92d4b4bd4ea79d452e3e217c9e24", + "evidence": "", + "checkedAt": "2026-08-08T04:36:12.559Z" + }, + { + "module": "orders", + "scenario": null, + "name": "本轮订单已进入处理中且保留状态历史", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085948154755743746?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7e33d6ea-2028-43f0-b905-be6b29012589, 4e371197-d95f-480a-8b22-d4e601110ad0", + "traceId": "453c92d4b4bd4ea79d452e3e217c9e24", + "evidence": "status=PROCESSING, history=5", + "checkedAt": "2026-08-08T04:36:12.559Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "查询隔离入库单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085948160550154241?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f23c431c-b927-4ed4-a410-eadf4e7c0ad6, 12680c2c-945b-4c70-97b0-efc15bd337a1", + "traceId": "328530a430c34e628d1108546602b30b", + "evidence": "inboundId=2085948160550154241, tenantId=10001", + "checkedAt": "2026-08-08T04:36:12.599Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "隔离入库单身份与可测量状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085948160550154241?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f23c431c-b927-4ed4-a410-eadf4e7c0ad6, 12680c2c-945b-4c70-97b0-efc15bd337a1", + "traceId": "328530a430c34e628d1108546602b30b", + "evidence": "identity=true, status=WAIT_MEASURE", + "checkedAt": "2026-08-08T04:36:12.599Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "生成箱唛 PDF 并冻结稳定箱码", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/inbounds/2085948160550154241/carton-label-pdf?tenantId=10001" + }, + "http": 200, + "code": null, + "message": "13844 bytes (application/pdf)", + "requestId": "3c7772f5-9557-4037-b90c-8c6deccaf1ca, 27be93ec-a0af-4efa-bb67-f557841915ae, 9521a7b8-944e-4d4e-bd8c-6ee776cf4281", + "traceId": "d1b2401d260b421e83738930d091931d, ddb11d43433a40d3860f28ea9b586213", + "evidence": "contentType=application/pdf, bytes=13844", + "checkedAt": "2026-08-08T04:36:12.806Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "首次打印后回查冻结箱数", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085948160550154241?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "64878e2f-2442-43f2-ad07-3c6bea3f14f1, d8f3e377-62e8-417e-91c5-c9927fc24eee", + "traceId": "66d7dd950f58436396475adf58171769", + "evidence": "", + "checkedAt": "2026-08-08T04:36:12.848Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "首次打印按订单货物冻结原始总箱数", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085948160550154241?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "64878e2f-2442-43f2-ad07-3c6bea3f14f1, d8f3e377-62e8-417e-91c5-c9927fc24eee", + "traceId": "66d7dd950f58436396475adf58171769", + "evidence": "inboundCodeStable=true, totalPackageCount=4", + "checkedAt": "2026-08-08T04:36:12.849Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "重复整单打印复用已冻结箱码映射", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/inbounds/2085948160550154241/carton-label-pdf?tenantId=10001" + }, + "http": 200, + "code": null, + "message": "13844 bytes (application/pdf)", + "requestId": "fc39fbc1-d641-466d-b299-70b34a3a692f, c58edeb6-6667-4ee9-9293-210d1bb2441d, 44a5663b-8557-4554-b947-443b6f0c7a4c", + "traceId": "01e4dd68f1a24e8eacd81aef42a9ee67, d80e9ee16de647dc968e4bc130b595f8", + "evidence": "boxCode=RK-2085948154755743746#4-1, contentType=application/pdf, bytes=13844", + "checkedAt": "2026-08-08T04:36:13.011Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "指定第1箱补打复用已冻结箱码映射", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/inbounds/2085948160550154241/carton-label-pdf?tenantId=10001&cartonIndex=1" + }, + "http": 200, + "code": null, + "message": "7742 bytes (application/pdf)", + "requestId": "3791fc0b-979c-456d-8e51-972b0141ffb7, 27f2214f-7c3e-4590-bd82-ce760f0550ef, 4add0718-93fc-4aae-b4d0-cf26f5272405", + "traceId": "b388d8d2d302491dab976097cb4e1c9f, 2738128767c64b57acd9999c1baef557", + "evidence": "boxCode=RK-2085948154755743746#4-1, cartonIndex=1, contentType=application/pdf, bytes=7742", + "checkedAt": "2026-08-08T04:36:13.150Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "模拟墨家首次扫描单箱", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085948160550154241/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0160d447-3a8a-4f1a-9dde-2ee0ad9daf5d, d8b51824-6d16-4796-a8dc-720928e778af", + "traceId": "36b293952c7d4039bdb127589da87764", + "evidence": "boxCode=RK-2085948154755743746#4-1, machineNo=MJ-ADMIN-E2E-01", + "checkedAt": "2026-08-08T04:36:13.301Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "首次扫描新增一条且默认代表1箱", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085948160550154241/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0160d447-3a8a-4f1a-9dde-2ee0ad9daf5d, d8b51824-6d16-4796-a8dc-720928e778af", + "traceId": "36b293952c7d4039bdb127589da87764", + "evidence": "created=true, confirmedPackageCount=1", + "checkedAt": "2026-08-08T04:36:13.301Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "重复打印及指定箱补打后原箱码仍可解析", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085948160550154241/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0160d447-3a8a-4f1a-9dde-2ee0ad9daf5d, d8b51824-6d16-4796-a8dc-720928e778af", + "traceId": "36b293952c7d4039bdb127589da87764", + "evidence": "boxCodeStable=true, resolvedInboundId=2085948160550154241", + "checkedAt": "2026-08-08T04:36:13.301Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "查询箱级测量详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085948160550154241/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "56b995a3-17e8-4626-b1a6-8ebee3e252f8, 7d5b59d9-4d3f-4e23-b7c7-a5a3bf28a371", + "traceId": "5c5e0a16857e4d51825ea9a0bed59f13", + "evidence": "measurementId=2085948166124384257", + "checkedAt": "2026-08-08T04:36:13.334Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "箱级查询回显箱码、尺寸、图片与设备信息", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085948160550154241/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "56b995a3-17e8-4626-b1a6-8ebee3e252f8, 7d5b59d9-4d3f-4e23-b7c7-a5a3bf28a371", + "traceId": "5c5e0a16857e4d51825ea9a0bed59f13", + "evidence": "itemFound=true, imageFileId=2085948166055198722", + "checkedAt": "2026-08-08T04:36:13.335Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "人工确认当前测量代表箱数", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/inbounds/2085948160550154241/measurement/items/2085948166128578562/confirmed-package-count?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "09a663e8-f552-471d-a3d2-7d63e7604e71, 0f4ae5dd-d0af-47bb-87cb-502b8a328f84", + "traceId": "bd277781034142bcaf20ebbe83b3bde2", + "evidence": "confirmedPackageCount=4", + "checkedAt": "2026-08-08T04:36:13.391Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "人工箱数更新且测量版本递增", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/inbounds/2085948160550154241/measurement/items/2085948166128578562/confirmed-package-count?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "09a663e8-f552-471d-a3d2-7d63e7604e71, 0f4ae5dd-d0af-47bb-87cb-502b8a328f84", + "traceId": "bd277781034142bcaf20ebbe83b3bde2", + "evidence": "version=2", + "checkedAt": "2026-08-08T04:36:13.391Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "同箱号重新扫描覆盖当前记录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085948160550154241/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a39018f4-f9dd-4f63-b0b4-de8980f0b6e7, 9a1bbdf6-5e06-4714-8244-c54a9c316c7c", + "traceId": "5f9922b4891b4dfc8932752fce59345f", + "evidence": "boxCode=RK-2085948154755743746#4-1, machineNo=MJ-ADMIN-E2E-02", + "checkedAt": "2026-08-08T04:36:13.481Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "覆盖保留同一条记录和人工箱数", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085948160550154241/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a39018f4-f9dd-4f63-b0b4-de8980f0b6e7, 9a1bbdf6-5e06-4714-8244-c54a9c316c7c", + "traceId": "5f9922b4891b4dfc8932752fce59345f", + "evidence": "sameItem=true, confirmedPackageCount=4", + "checkedAt": "2026-08-08T04:36:13.481Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "回查覆盖后的尺寸与体积结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085948160550154241/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "439a7df8-c589-4b7c-b5c8-626e3a6fdcd4, aff22706-6b0d-4738-b3a6-b4f88929bcba", + "traceId": "5f6ec0d789574bd99af1403e0e2a1c88", + "evidence": "", + "checkedAt": "2026-08-08T04:36:13.525Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "覆盖尺寸、箱数和服务端体积公式正确", + "passed": false, + "deploymentBlocker": true, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085948160550154241/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "439a7df8-c589-4b7c-b5c8-626e3a6fdcd4, aff22706-6b0d-4738-b3a6-b4f88929bcba", + "traceId": "5f6ec0d789574bd99af1403e0e2a1c88", + "evidence": "unitVolume=0.0768, totalVolume=0.3072, volumeWeight=51.303, girth=204.5", + "checkedAt": "2026-08-08T04:36:13.525Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "保存同一测量批次草稿", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/inbounds/2085948160550154241/measurement/draft?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f942c7d4-c0c8-4492-9f9d-6d55f20adf73, 04b4068c-573c-4635-9619-a54fa390f54e", + "traceId": "b8328c9c785c47588e332d253501fdce", + "evidence": "measurementId=2085948166124384257, items=1", + "checkedAt": "2026-08-08T04:36:13.633Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "草稿沿用批次并递增版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/inbounds/2085948160550154241/measurement/draft?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f942c7d4-c0c8-4492-9f9d-6d55f20adf73, 04b4068c-573c-4635-9619-a54fa390f54e", + "traceId": "b8328c9c785c47588e332d253501fdce", + "evidence": "status=DRAFT, version=4", + "checkedAt": "2026-08-08T04:36:13.633Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "提交测量审核", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085948160550154241/measurement/submit?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5c719e9d-1a00-4bba-9761-9cbd98393636, f0ef4978-dadb-4c54-ab8f-9876762995cd", + "traceId": "955b1aeea5774f5ab6043391f0c173cd", + "evidence": "measurementId=2085948166124384257", + "checkedAt": "2026-08-08T04:36:13.707Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "提交后进入待测量审核状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085948160550154241/measurement/submit?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5c719e9d-1a00-4bba-9761-9cbd98393636, f0ef4978-dadb-4c54-ab8f-9876762995cd", + "traceId": "955b1aeea5774f5ab6043391f0c173cd", + "evidence": "processStatus=MEASURE_PENDING, reviewStatus=PENDING", + "checkedAt": "2026-08-08T04:36:13.707Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "测量提交后拒绝设备覆盖并返回中文提示", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085948160550154241/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "A0409", + "message": "测量已提交,设备不能新增或覆盖数据", + "requestId": "7d406d9b-18ed-46f1-8f36-063c664a515c", + "traceId": "b0caec2d918a41948aac1f688b8f778c", + "evidence": "HTTP=200, code=A0409, chineseMessage=true", + "checkedAt": "2026-08-08T04:36:13.759Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "审核前读取最新入库单版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085948160550154241?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3e03daf2-17cb-41a0-bedb-44d8395cfc7a, 69756ad1-bc75-4597-8994-978f6c748fd8", + "traceId": "3a10d0732cd144c59b5ca22b70518e6c", + "evidence": "", + "checkedAt": "2026-08-08T04:36:13.812Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "审核前状态和版本有效", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085948160550154241?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3e03daf2-17cb-41a0-bedb-44d8395cfc7a, 69756ad1-bc75-4597-8994-978f6c748fd8", + "traceId": "3a10d0732cd144c59b5ca22b70518e6c", + "evidence": "status=MEASURE_PENDING, version=1", + "checkedAt": "2026-08-08T04:36:13.812Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "Admin 审核通过墨家测量", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/inbounds/2085948160550154241/measurements/approve?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4b37ff3a-af02-44fe-bb19-0677a888d519, 7cc69de6-f3e5-4aa5-bef7-16cfa3995d67", + "traceId": "56f49b5dbc3e4bf8bd61eed62e7bec99", + "evidence": "measurementId=2085948166124384257", + "checkedAt": "2026-08-08T04:36:13.872Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "查询审核后的最终测量状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085948160550154241/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6f45b738-574a-47b4-a59d-c4c1e0c757cb, 900dc373-fcef-4f02-833f-e41b7dcfdc38", + "traceId": "42eb92b60cc14d9ab3d3e1121495376c", + "evidence": "", + "checkedAt": "2026-08-08T04:36:13.912Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "审核后入库与测量状态闭环且结果未变化", + "passed": false, + "deploymentBlocker": true, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085948160550154241/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6f45b738-574a-47b4-a59d-c4c1e0c757cb, 900dc373-fcef-4f02-833f-e41b7dcfdc38", + "traceId": "42eb92b60cc14d9ab3d3e1121495376c", + "evidence": "processStatus=INBOUNDED, measurementStatus=APPROVED, packages=4", + "checkedAt": "2026-08-08T04:36:13.912Z" + } + ] +} diff --git a/reports/admin-test-env-acceptance-20260808050925.json b/reports/admin-test-env-acceptance-20260808050925.json new file mode 100644 index 000000000..344b0b476 --- /dev/null +++ b/reports/admin-test-env-acceptance-20260808050925.json @@ -0,0 +1,6399 @@ +{ + "reportName": "后台管理测试环境 HTTP API 验收", + "marker": "ADMIN-API-20260808050925886", + "gateway": "http://8.163.30.128:9000", + "generatedAt": "2026-08-08T05:09:55.501Z", + "startedAt": "2026-08-08T05:09:25.886Z", + "success": false, + "fatal": null, + "summary": { + "total": 341, + "passed": 338, + "failed": 3 + }, + "modules": [ + { + "name": "customers", + "startedAt": "2026-08-08T05:09:26.272Z", + "finishedAt": "2026-08-08T05:09:27.675Z", + "success": true, + "passed": 38, + "failed": 0, + "fatal": null + }, + { + "name": "system", + "startedAt": "2026-08-08T05:09:27.677Z", + "finishedAt": "2026-08-08T05:09:30.543Z", + "success": true, + "passed": 41, + "failed": 0, + "fatal": null + }, + { + "name": "master-data", + "startedAt": "2026-08-08T05:09:30.544Z", + "finishedAt": "2026-08-08T05:09:32.059Z", + "success": true, + "passed": 42, + "failed": 0, + "fatal": null + }, + { + "name": "orders", + "startedAt": "2026-08-08T05:09:32.060Z", + "finishedAt": "2026-08-08T05:09:34.468Z", + "success": true, + "passed": 49, + "failed": 0, + "fatal": null + }, + { + "name": "pricing", + "startedAt": "2026-08-08T05:09:34.470Z", + "finishedAt": "2026-08-08T05:09:40.064Z", + "success": true, + "passed": 26, + "failed": 0, + "fatal": null + }, + { + "name": "downloads", + "startedAt": "2026-08-08T05:09:40.065Z", + "finishedAt": "2026-08-08T05:09:46.416Z", + "success": true, + "passed": 8, + "failed": 0, + "fatal": null + }, + { + "name": "inbound-weight-ocr", + "startedAt": "2026-08-08T05:09:46.419Z", + "finishedAt": "2026-08-08T05:09:53.457Z", + "success": true, + "passed": 52, + "failed": 0, + "fatal": null + }, + { + "name": "inbound-measurement", + "startedAt": "2026-08-08T05:09:53.459Z", + "finishedAt": "2026-08-08T05:09:53.921Z", + "success": false, + "passed": 7, + "failed": 3, + "fatal": null + }, + { + "name": "supplemental", + "startedAt": "2026-08-08T05:09:53.923Z", + "finishedAt": "2026-08-08T05:09:55.501Z", + "success": true, + "passed": 74, + "failed": 0, + "fatal": null + } + ], + "scenarios": [ + { + "name": "customer-dimension-rules", + "module": "customers", + "success": true, + "deploymentBlocked": false, + "passed": 13, + "failed": 0 + }, + { + "name": "price-book-lifecycle", + "module": "pricing", + "success": true, + "deploymentBlocked": false, + "passed": 26, + "failed": 0 + }, + { + "name": "weight-image-recognition-and-confirmation", + "module": "inbound-weight-ocr", + "success": true, + "deploymentBlocked": false, + "passed": 52, + "failed": 0 + }, + { + "name": "mojia-carton-measurement", + "module": "inbound-measurement", + "success": false, + "deploymentBlocked": true, + "passed": 7, + "failed": 3 + } + ], + "deploymentBlockers": [ + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "模拟墨家首次扫描单箱", + "evidence": "boxCode=RK-2085956552557658114#4-1, machineNo=MJ-ADMIN-E2E-01", + "code": "A0409", + "requestId": "e48b660b-25bd-4f3c-8200-192dce2556ff", + "traceId": "792b4db2e51c4b90ac159ae3f141c730" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "首次扫描新增一条且默认代表1箱", + "evidence": "created=undefined, confirmedPackageCount=missing", + "code": "A0409", + "requestId": "e48b660b-25bd-4f3c-8200-192dce2556ff", + "traceId": "792b4db2e51c4b90ac159ae3f141c730" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "重复打印及指定箱补打后原箱码仍可解析", + "evidence": "boxCodeStable=false, resolvedInboundId=2085956557911666689", + "code": "A0409", + "requestId": "e48b660b-25bd-4f3c-8200-192dce2556ff", + "traceId": "792b4db2e51c4b90ac159ae3f141c730" + } + ], + "createdResources": { + "customer": { + "tenantId": "2085956526057050114", + "marker": "ADMIN-API-20260808050925886", + "contactPhone": "16165766273" + }, + "systemPermission": { + "id": "2085956531526422529", + "code": "platform:acceptance:808050925886" + }, + "systemRole": { + "id": "2085956532226871297", + "code": "ADMIN_ACCEPT_808050925886", + "finalStatus": "DISABLED", + "retainedBecauseAssigned": true + }, + "systemUser": { + "membershipId": "2085956533527105540", + "username": "admin_accept_808050925886", + "finalStatus": "DISABLED" + }, + "warehouse": { + "id": "2085956544119226369", + "code": "AW808050925886", + "finalStatus": "INACTIVE" + }, + "location": { + "id": "2085956545100693506", + "warehouseId": "2085956544119226369", + "deleted": false + }, + "pallet": { + "id": "2085956546178629634", + "warehouseId": "2085956544119226369", + "deleted": true + }, + "expressCompany": { + "id": "2085956547013296130", + "code": "EX808050925886", + "finalStatus": "INACTIVE" + }, + "partner": { + "id": "2085956547957014530", + "code": "PT808050925886", + "finalStatus": "INACTIVE" + }, + "orders": { + "marker": "ADMIN-API-20260808050925886", + "tenantId": "10001", + "orderId": "2085956552557658114", + "productImageFileId": "2085956552150810626", + "boxTypes": [ + "SMALL", + "MEDIUM", + "LARGE", + "EXTRA_LARGE" + ], + "inboundId": "2085956557911666689", + "orderNo": "FL2085956552557658114", + "inboundCode": "RK-2085956552557658114", + "processStatus": "WAIT_MEASURE", + "taskId": "2085956557907472385" + }, + "ocrInbound": { + "tenantId": "10001", + "inboundId": "2085956557911666689", + "marker": "ADMIN-API-20260808050925886" + }, + "testInbound": { + "tenantId": "10001", + "inboundId": "2085956557911666689", + "marker": "ADMIN-API-20260808050925886" + }, + "priceBookVersion": { + "versionId": "2085956560252088321", + "marker": "ADMIN-API-20260808050925886", + "sourceSha256": "3170fd3aa8795cd816ca9600f87a6a2a06b15d0cf6042d4592f33d4b30c7b8ab" + }, + "exportTask": { + "id": "2085956583461289986" + }, + "inboundWeightOcr": { + "tenantId": "10001", + "inboundId": "2085956557911666689", + "resultIds": [ + "2085956627570667521", + "2085956637414699009" + ], + "cleaned": true + } + }, + "excluded": [ + { + "scope": "dashboard", + "reason": "首页为静态演示数据,不调用后端 API" + }, + { + "scope": "hidden-prototypes", + "reason": "隐藏原型页面尚无已确认后端契约" + } + ], + "securityNote": "报告不保存登录密码、Access Token、Refresh Token、图片二进制或 OCR 原文全文。", + "steps": [ + { + "module": "authentication", + "scenario": null, + "name": "平台管理员登录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/auth/login" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2f9c7591-bf61-45ef-b6fa-efe31c5e11e7, 1c6d1989-0473-43f5-8b66-7d8c1e98e170", + "traceId": "a9f2eba96c8e4925807416f1ef770a3c", + "evidence": "", + "checkedAt": "2026-08-08T05:09:26.272Z" + }, + { + "module": "customers", + "scenario": null, + "name": "检查测试联系电话可用性", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/contact-phone-availability?contactPhone=16165766273" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "89532583-1252-4cba-b421-b236c6ce241d, 2dd7e23a-a496-4fdc-91a3-41f39e46814b", + "traceId": "67346debb80548ca9d0fe0ffdfd46325", + "evidence": "attempt=1", + "checkedAt": "2026-08-08T05:09:26.353Z" + }, + { + "module": "customers", + "scenario": null, + "name": "创建客户", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0ba137b3-f722-4b8d-9afc-0cdafa2fdcdc, be90930c-e0a5-4f33-93a1-1047e253e27b", + "traceId": "c0e5d45a74204b7b834b8c39effc8ce8", + "evidence": "", + "checkedAt": "2026-08-08T05:09:26.898Z" + }, + { + "module": "customers", + "scenario": null, + "name": "创建响应客户字段完整", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0ba137b3-f722-4b8d-9afc-0cdafa2fdcdc, be90930c-e0a5-4f33-93a1-1047e253e27b", + "traceId": "c0e5d45a74204b7b834b8c39effc8ce8", + "evidence": "missing=none", + "checkedAt": "2026-08-08T05:09:26.899Z" + }, + { + "module": "customers", + "scenario": null, + "name": "新客户基础字段正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0ba137b3-f722-4b8d-9afc-0cdafa2fdcdc, be90930c-e0a5-4f33-93a1-1047e253e27b", + "traceId": "c0e5d45a74204b7b834b8c39effc8ce8", + "evidence": "tenantId=2085956526057050114, status=PROFILE_REQUIRED", + "checkedAt": "2026-08-08T05:09:26.899Z" + }, + { + "module": "customers", + "scenario": "customer-owner-provisioning", + "name": "创建客户生成初始密码", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0ba137b3-f722-4b8d-9afc-0cdafa2fdcdc, be90930c-e0a5-4f33-93a1-1047e253e27b", + "traceId": "c0e5d45a74204b7b834b8c39effc8ce8", + "evidence": "generated=true, length=16", + "checkedAt": "2026-08-08T05:09:26.899Z" + }, + { + "module": "customers", + "scenario": "customer-owner-provisioning", + "name": "管理员用户名默认使用联系电话", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0ba137b3-f722-4b8d-9afc-0cdafa2fdcdc, be90930c-e0a5-4f33-93a1-1047e253e27b", + "traceId": "c0e5d45a74204b7b834b8c39effc8ce8", + "evidence": "matches=true", + "checkedAt": "2026-08-08T05:09:26.899Z" + }, + { + "module": "customers", + "scenario": null, + "name": "待完善客户的审核字段保持为空", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0ba137b3-f722-4b8d-9afc-0cdafa2fdcdc, be90930c-e0a5-4f33-93a1-1047e253e27b", + "traceId": "c0e5d45a74204b7b834b8c39effc8ce8", + "evidence": "creditCode=omitted, approvedAt=omitted", + "checkedAt": "2026-08-08T05:09:26.899Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "新客户尺寸规则可查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085956526057050114" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "76e23351-1a14-4c86-b047-801d1b346f9f, aa4452ad-dbae-4558-8928-ea03a4d970d7", + "traceId": "b020300825e146f6b8da7af75cdf615a", + "evidence": "tenantId=2085956526057050114", + "checkedAt": "2026-08-08T05:09:26.931Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "固定四箱规顺序完整且无重复", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085956526057050114" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "76e23351-1a14-4c86-b047-801d1b346f9f, aa4452ad-dbae-4558-8928-ea03a4d970d7", + "traceId": "b020300825e146f6b8da7af75cdf615a", + "evidence": "count=4, order=SMALL,MEDIUM,LARGE,EXTRA_LARGE", + "checkedAt": "2026-08-08T05:09:26.931Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "四箱规默认内径、加边和备注正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085956526057050114" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "76e23351-1a14-4c86-b047-801d1b346f9f, aa4452ad-dbae-4558-8928-ea03a4d970d7", + "traceId": "b020300825e146f6b8da7af75cdf615a", + "evidence": "defaults=matched", + "checkedAt": "2026-08-08T05:09:26.931Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "客户 ID、规则 ID 为字符串且初始版本为0", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085956526057050114" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "76e23351-1a14-4c86-b047-801d1b346f9f, aa4452ad-dbae-4558-8928-ea03a4d970d7", + "traceId": "b020300825e146f6b8da7af75cdf615a", + "evidence": "groupTenantIdType=string, rows=string/v0,string/v0,string/v0,string/v0", + "checkedAt": "2026-08-08T05:09:26.931Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "默认规则外径与 HALF_UP 三位 CBM 正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085956526057050114" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "76e23351-1a14-4c86-b047-801d1b346f9f, aa4452ad-dbae-4558-8928-ea03a4d970d7", + "traceId": "b020300825e146f6b8da7af75cdf615a", + "evidence": "derivedRows=4", + "checkedAt": "2026-08-08T05:09:26.931Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "PUT 每行只发送约定7字段并整组保存", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085956526057050114" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "76e23351-1a14-4c86-b047-801d1b346f9f, aa4452ad-dbae-4558-8928-ea03a4d970d7", + "traceId": "b020300825e146f6b8da7af75cdf615a", + "evidence": "fields=boxType,innerLengthCm,innerWidthCm,innerHeightCm,edgeAdditionCm,remark,version", + "checkedAt": "2026-08-08T05:09:26.931Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "一次 PUT 保存四条三位小数规则", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085956526057050114" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "80cd75fc-20b7-4bb0-ae1d-11aaa3e323e4, 74c28696-da7d-49d3-b7ae-17da68fede38", + "traceId": "905891d7d86b4816b6eb9b5810857c7c", + "evidence": "rows=4", + "checkedAt": "2026-08-08T05:09:26.987Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "修改后四行版本+1且派生外径/CBM正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085956526057050114" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "80cd75fc-20b7-4bb0-ae1d-11aaa3e323e4, 74c28696-da7d-49d3-b7ae-17da68fede38", + "traceId": "905891d7d86b4816b6eb9b5810857c7c", + "evidence": "versions=1,1,1,1", + "checkedAt": "2026-08-08T05:09:26.987Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "旧 version 重放 PUT 返回冲突", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085956526057050114" + }, + "http": 200, + "code": "A0409", + "message": "箱规尺寸配置已被修改,请刷新后重试", + "requestId": "8b74b4ce-efeb-49f4-b598-6c4ba6f513a2", + "traceId": "78397e85122a4ef58b4d96137c80aa5a", + "evidence": "HTTP=200, code=A0409", + "checkedAt": "2026-08-08T05:09:27.024Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "冲突后重新查询四条规则", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085956526057050114" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "28f7d785-cc8c-4280-94c2-968528d757c4, f4029933-648c-43c6-b688-484bb4cf29e8", + "traceId": "aa281788d9b84e6684b08e22b54f411c", + "evidence": "", + "checkedAt": "2026-08-08T05:09:27.047Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "冲突请求未造成四行部分更新", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085956526057050114" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "28f7d785-cc8c-4280-94c2-968528d757c4, f4029933-648c-43c6-b688-484bb4cf29e8", + "traceId": "aa281788d9b84e6684b08e22b54f411c", + "evidence": "unchangedRows=4", + "checkedAt": "2026-08-08T05:09:27.047Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "恢复本轮修改前的四箱规配置", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085956526057050114" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ed2845f5-b1b5-4744-8a46-e8d1641d3f10, da12f546-8698-423a-af07-7d2f97a73cae", + "traceId": "132d26b3fa554dcd942b8a7db93adce8", + "evidence": "restore=original-values", + "checkedAt": "2026-08-08T05:09:27.095Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "尺寸规则恢复后回显与初始值一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085956526057050114" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ed2845f5-b1b5-4744-8a46-e8d1641d3f10, da12f546-8698-423a-af07-7d2f97a73cae", + "traceId": "132d26b3fa554dcd942b8a7db93adce8", + "evidence": "restoredRows=4", + "checkedAt": "2026-08-08T05:09:27.095Z" + }, + { + "module": "customers", + "scenario": null, + "name": "查询客户列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants?page=1&size=20&keyword=%E5%90%8E%E5%8F%B0%E5%AE%A2%E6%88%B7%E9%AA%8C%E6%94%B6-808050925886" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "056e105e-2a7a-4a93-8d64-28f3f1ccc6b4, 8f223851-05b9-466a-a122-793026583dc4", + "traceId": "aa05ad8a7508465faca94bd1e81cdbc0", + "evidence": "", + "checkedAt": "2026-08-08T05:09:27.141Z" + }, + { + "module": "customers", + "scenario": null, + "name": "列表包含新客户且字段完整", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants?page=1&size=20&keyword=%E5%90%8E%E5%8F%B0%E5%AE%A2%E6%88%B7%E9%AA%8C%E6%94%B6-808050925886" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "056e105e-2a7a-4a93-8d64-28f3f1ccc6b4, 8f223851-05b9-466a-a122-793026583dc4", + "traceId": "aa05ad8a7508465faca94bd1e81cdbc0", + "evidence": "found=true, missing=none", + "checkedAt": "2026-08-08T05:09:27.141Z" + }, + { + "module": "customers", + "scenario": null, + "name": "查询客户详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085956526057050114" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "08e20817-2b14-42b5-a522-8260759a87f8, cf48b68b-978b-420f-aacc-d183a8536bcb", + "traceId": "9071806d8b444a1588cf585fb1325433", + "evidence": "", + "checkedAt": "2026-08-08T05:09:27.165Z" + }, + { + "module": "customers", + "scenario": null, + "name": "客户详情基本信息正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085956526057050114" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "08e20817-2b14-42b5-a522-8260759a87f8, cf48b68b-978b-420f-aacc-d183a8536bcb", + "traceId": "9071806d8b444a1588cf585fb1325433", + "evidence": "tenantId=2085956526057050114", + "checkedAt": "2026-08-08T05:09:27.165Z" + }, + { + "module": "customers", + "scenario": null, + "name": "编辑客户", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/tenants/2085956526057050114" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "beaf7115-58ff-46f7-a858-828eacc61332, ef5574d6-ae21-4fa1-aa6a-f52d1c5b6261", + "traceId": "b76718cddbe14e59a80f340722643ea8", + "evidence": "", + "checkedAt": "2026-08-08T05:09:27.228Z" + }, + { + "module": "customers", + "scenario": null, + "name": "客户编辑正确回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/tenants/2085956526057050114" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "beaf7115-58ff-46f7-a858-828eacc61332, ef5574d6-ae21-4fa1-aa6a-f52d1c5b6261", + "traceId": "b76718cddbe14e59a80f340722643ea8", + "evidence": "tenantId=2085956526057050114", + "checkedAt": "2026-08-08T05:09:27.229Z" + }, + { + "module": "customers", + "scenario": null, + "name": "回查客户编辑结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085956526057050114" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8fc45cfa-b704-4bb6-be7c-935e48240f32, 000833fc-80fb-4b37-9ebd-d9cdb499d72d", + "traceId": "534b09030efd421b8e8c8ec80a72df52", + "evidence": "", + "checkedAt": "2026-08-08T05:09:27.253Z" + }, + { + "module": "customers", + "scenario": null, + "name": "客户编辑已持久化", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085956526057050114" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8fc45cfa-b704-4bb6-be7c-935e48240f32, 000833fc-80fb-4b37-9ebd-d9cdb499d72d", + "traceId": "534b09030efd421b8e8c8ec80a72df52", + "evidence": "tenantId=2085956526057050114", + "checkedAt": "2026-08-08T05:09:27.253Z" + }, + { + "module": "customers", + "scenario": null, + "name": "业务概况查询资质", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085956526057050114/qualifications" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c16b7313-27b3-4fe7-8079-319418123240, 0a3b5546-9ac8-4739-a6c9-6b4409fd7c5b", + "traceId": "2d2cee0ead114a049367443dd81adb0b", + "evidence": "", + "checkedAt": "2026-08-08T05:09:27.288Z" + }, + { + "module": "customers", + "scenario": null, + "name": "资质概况结构正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085956526057050114/qualifications" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c16b7313-27b3-4fe7-8079-319418123240, 0a3b5546-9ac8-4739-a6c9-6b4409fd7c5b", + "traceId": "2d2cee0ead114a049367443dd81adb0b", + "evidence": "count=0", + "checkedAt": "2026-08-08T05:09:27.288Z" + }, + { + "module": "customers", + "scenario": null, + "name": "业务概况查询成员", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085956526057050114/members" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "37934ee4-1cfa-4f3a-840c-aa8c512efdf4, b942173c-ca2c-4f10-9b48-27a87d0d8da7", + "traceId": "fde228cb2bf0483da2b4feb7dcfdff4a", + "evidence": "", + "checkedAt": "2026-08-08T05:09:27.333Z" + }, + { + "module": "customers", + "scenario": "customer-owner-provisioning", + "name": "联系电话账号是企业管理员", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085956526057050114/members" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "37934ee4-1cfa-4f3a-840c-aa8c512efdf4, b942173c-ca2c-4f10-9b48-27a87d0d8da7", + "traceId": "fde228cb2bf0483da2b4feb7dcfdff4a", + "evidence": "ownerFound=true, matches=true", + "checkedAt": "2026-08-08T05:09:27.333Z" + }, + { + "module": "customers", + "scenario": null, + "name": "业务概况查询运单数量", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/tenant-counts?tenantIds=2085956526057050114" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "73e304a9-4ebf-4e18-8863-de798bb44ae9, 36b915db-156e-4dfa-89f6-3448773dbb28", + "traceId": "a8190c8ff23242a4855c8ef46b175596", + "evidence": "", + "checkedAt": "2026-08-08T05:09:27.367Z" + }, + { + "module": "customers", + "scenario": null, + "name": "业务概况返回当前客户运单数", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/tenant-counts?tenantIds=2085956526057050114" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "73e304a9-4ebf-4e18-8863-de798bb44ae9, 36b915db-156e-4dfa-89f6-3448773dbb28", + "traceId": "a8190c8ff23242a4855c8ef46b175596", + "evidence": "orderCount=0", + "checkedAt": "2026-08-08T05:09:27.367Z" + }, + { + "module": "customers", + "scenario": null, + "name": "查询客户运单记录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg?tenantId=2085956526057050114&page=1&size=10" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9b9e0db1-096c-4bab-9c04-b42c5c8bc594, 1e8640b8-585d-449d-b7f0-4eeb3c6113fe", + "traceId": "102d792489944c12b7f5c34a62429b6f", + "evidence": "", + "checkedAt": "2026-08-08T05:09:27.395Z" + }, + { + "module": "customers", + "scenario": null, + "name": "运单记录分页结构正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg?tenantId=2085956526057050114&page=1&size=10" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9b9e0db1-096c-4bab-9c04-b42c5c8bc594, 1e8640b8-585d-449d-b7f0-4eeb3c6113fe", + "traceId": "102d792489944c12b7f5c34a62429b6f", + "evidence": "records=0, total=0", + "checkedAt": "2026-08-08T05:09:27.395Z" + }, + { + "module": "customers", + "scenario": "customer-draft-archive", + "name": "归档测试客户", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants/2085956526057050114/archive" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9df6cd02-7512-472d-9034-17a9dd076b2a, 89adbeaa-9c57-4b17-b2cf-064d74143367", + "traceId": "cf933b4451f74d66b867002374362629", + "evidence": "tenantId=2085956526057050114", + "checkedAt": "2026-08-08T05:09:27.675Z" + }, + { + "module": "customers", + "scenario": "customer-draft-archive", + "name": "测试客户归档后处于停用状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants/2085956526057050114/archive" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9df6cd02-7512-472d-9034-17a9dd076b2a, 89adbeaa-9c57-4b17-b2cf-064d74143367", + "traceId": "cf933b4451f74d66b867002374362629", + "evidence": "status=DISABLED", + "checkedAt": "2026-08-08T05:09:27.675Z" + }, + { + "module": "system", + "scenario": null, + "name": "查询菜单权限资源", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/permissions" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4bfe1f4c-5f28-4f5c-9231-0062ab425a93, 223c06ed-8fe5-4d2b-aee7-ada973876e89", + "traceId": "cbd85ddd539a4cf39221c3ca56d6b84a", + "evidence": "", + "checkedAt": "2026-08-08T05:09:27.717Z" + }, + { + "module": "system", + "scenario": null, + "name": "权限资源返回数组", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/permissions" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4bfe1f4c-5f28-4f5c-9231-0062ab425a93, 223c06ed-8fe5-4d2b-aee7-ada973876e89", + "traceId": "cbd85ddd539a4cf39221c3ca56d6b84a", + "evidence": "count=136", + "checkedAt": "2026-08-08T05:09:27.717Z" + }, + { + "module": "system", + "scenario": null, + "name": "创建自定义权限资源", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/permissions" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0cac872e-03ed-471a-93ef-f5397796f6e3, c4c55390-8336-43de-b75c-7a60cb457eaf", + "traceId": "016adaf517ae4526aaa7c86b5165602f", + "evidence": "", + "checkedAt": "2026-08-08T05:09:27.751Z" + }, + { + "module": "system", + "scenario": null, + "name": "权限创建字段正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/permissions" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0cac872e-03ed-471a-93ef-f5397796f6e3, c4c55390-8336-43de-b75c-7a60cb457eaf", + "traceId": "016adaf517ae4526aaa7c86b5165602f", + "evidence": "permissionId=2085956531526422529", + "checkedAt": "2026-08-08T05:09:27.751Z" + }, + { + "module": "system", + "scenario": null, + "name": "编辑自定义权限资源", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/permissions/2085956531526422529" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7c4b95b9-4033-4582-a699-2e75444d4ad0, f1814825-e514-4da3-805b-b50d340f4586", + "traceId": "e780ca5a5f204f95850cee9f6f06bcf2", + "evidence": "", + "checkedAt": "2026-08-08T05:09:27.792Z" + }, + { + "module": "system", + "scenario": null, + "name": "权限编辑正确回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/permissions/2085956531526422529" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7c4b95b9-4033-4582-a699-2e75444d4ad0, f1814825-e514-4da3-805b-b50d340f4586", + "traceId": "e780ca5a5f204f95850cee9f6f06bcf2", + "evidence": "permissionId=2085956531526422529", + "checkedAt": "2026-08-08T05:09:27.792Z" + }, + { + "module": "system", + "scenario": null, + "name": "停用自定义权限", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/permissions/2085956531526422529/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "56e902fc-f4a1-4e1d-a90d-2103c4bc5587, fe694d0f-1f1e-4e1a-add8-ec21579c635a", + "traceId": "911ad1d201f746fd9f222fdc162bb4e1", + "evidence": "", + "checkedAt": "2026-08-08T05:09:27.838Z" + }, + { + "module": "system", + "scenario": null, + "name": "权限状态回显 DISABLED", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/permissions/2085956531526422529/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "56e902fc-f4a1-4e1d-a90d-2103c4bc5587, fe694d0f-1f1e-4e1a-add8-ec21579c635a", + "traceId": "911ad1d201f746fd9f222fdc162bb4e1", + "evidence": "status=DISABLED", + "checkedAt": "2026-08-08T05:09:27.838Z" + }, + { + "module": "system", + "scenario": null, + "name": "启用自定义权限", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/permissions/2085956531526422529/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7eda73c7-d10b-4dc4-ac59-d8e241dd3fd4, 39d09ffd-eea5-43ea-847a-7550f170f543", + "traceId": "f19988ef4d804c939c6bd3905e2a9317", + "evidence": "", + "checkedAt": "2026-08-08T05:09:27.876Z" + }, + { + "module": "system", + "scenario": null, + "name": "权限状态回显 ACTIVE", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/permissions/2085956531526422529/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7eda73c7-d10b-4dc4-ac59-d8e241dd3fd4, 39d09ffd-eea5-43ea-847a-7550f170f543", + "traceId": "f19988ef4d804c939c6bd3905e2a9317", + "evidence": "status=ACTIVE", + "checkedAt": "2026-08-08T05:09:27.877Z" + }, + { + "module": "system", + "scenario": null, + "name": "创建平台自定义角色", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/roles" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "723eda0e-0e72-4a1b-8693-fca824acd5bb, c2ebc3bd-5f17-4249-913c-f201ee1a111e", + "traceId": "94ff72d130ed4593a1871feb9253eb23", + "evidence": "", + "checkedAt": "2026-08-08T05:09:27.920Z" + }, + { + "module": "system", + "scenario": null, + "name": "角色创建字段正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/roles" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "723eda0e-0e72-4a1b-8693-fca824acd5bb, c2ebc3bd-5f17-4249-913c-f201ee1a111e", + "traceId": "94ff72d130ed4593a1871feb9253eb23", + "evidence": "roleId=2085956532226871297", + "checkedAt": "2026-08-08T05:09:27.920Z" + }, + { + "module": "system", + "scenario": null, + "name": "编辑平台自定义角色", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/2085956532226871297" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9704a3fa-f838-46a1-81b2-f69e15046a76, 7adffc4c-e626-4214-a5cc-8237546f369a", + "traceId": "86f76c1250194d0c84421bf5b0594522", + "evidence": "", + "checkedAt": "2026-08-08T05:09:27.960Z" + }, + { + "module": "system", + "scenario": null, + "name": "角色编辑正确回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/2085956532226871297" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9704a3fa-f838-46a1-81b2-f69e15046a76, 7adffc4c-e626-4214-a5cc-8237546f369a", + "traceId": "86f76c1250194d0c84421bf5b0594522", + "evidence": "roleId=2085956532226871297", + "checkedAt": "2026-08-08T05:09:27.960Z" + }, + { + "module": "system", + "scenario": null, + "name": "角色全量保存权限", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/permissions" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b52ad8e4-946a-4234-a550-df41bde353f7, 6c5e5c05-da0f-42f6-a8e6-2a32ae72266d", + "traceId": "c6967fee65e8421c8064ed76313ad622", + "evidence": "", + "checkedAt": "2026-08-08T05:09:28.012Z" + }, + { + "module": "system", + "scenario": null, + "name": "回查平台角色列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/roles" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f081d936-a59f-4671-bb9e-5317b7bfc5bb, 890f8219-2e78-461a-a30a-2fd65a89f59f", + "traceId": "828dd2e404f24634aca9c1a8269aa1d8", + "evidence": "", + "checkedAt": "2026-08-08T05:09:28.054Z" + }, + { + "module": "system", + "scenario": null, + "name": "角色权限 ID 正确回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/roles" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f081d936-a59f-4671-bb9e-5317b7bfc5bb, 890f8219-2e78-461a-a30a-2fd65a89f59f", + "traceId": "828dd2e404f24634aca9c1a8269aa1d8", + "evidence": "permissionIds=2085956531526422529", + "checkedAt": "2026-08-08T05:09:28.054Z" + }, + { + "module": "system", + "scenario": null, + "name": "停用自定义角色", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/2085956532226871297/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "762be017-32a6-4421-ad7a-5a4fcf54f1f4, e697c815-a186-46e2-a031-2e5dc1a9d06c", + "traceId": "b1c1db454e164a91b779850c3018334b", + "evidence": "", + "checkedAt": "2026-08-08T05:09:28.090Z" + }, + { + "module": "system", + "scenario": null, + "name": "角色状态回显 DISABLED", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/2085956532226871297/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "762be017-32a6-4421-ad7a-5a4fcf54f1f4, e697c815-a186-46e2-a031-2e5dc1a9d06c", + "traceId": "b1c1db454e164a91b779850c3018334b", + "evidence": "status=DISABLED", + "checkedAt": "2026-08-08T05:09:28.090Z" + }, + { + "module": "system", + "scenario": null, + "name": "启用自定义角色", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/2085956532226871297/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "621d5434-13f8-476b-b914-897e93b74bce, c86ac7f0-0fdb-417a-a012-e3e9c1436c46", + "traceId": "8ef32f5c3d05409299abd6dcc8ff7543", + "evidence": "", + "checkedAt": "2026-08-08T05:09:28.120Z" + }, + { + "module": "system", + "scenario": null, + "name": "角色状态回显 ACTIVE", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/2085956532226871297/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "621d5434-13f8-476b-b914-897e93b74bce, c86ac7f0-0fdb-417a-a012-e3e9c1436c46", + "traceId": "8ef32f5c3d05409299abd6dcc8ff7543", + "evidence": "status=ACTIVE", + "checkedAt": "2026-08-08T05:09:28.120Z" + }, + { + "module": "system", + "scenario": null, + "name": "查询内部用户可选平台角色", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/users/options" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a3ccd8ba-e18b-46f6-8fd1-3d621983f9b0, 8e3b53d5-8dcf-485d-a439-1f8c9520df53", + "traceId": "ba500af3a91b451e9416c2556af88a1b", + "evidence": "", + "checkedAt": "2026-08-08T05:09:28.152Z" + }, + { + "module": "system", + "scenario": null, + "name": "用户选项包含平台与测试角色", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/users/options" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a3ccd8ba-e18b-46f6-8fd1-3d621983f9b0, 8e3b53d5-8dcf-485d-a439-1f8c9520df53", + "traceId": "ba500af3a91b451e9416c2556af88a1b", + "evidence": "tenants=1, roles=11", + "checkedAt": "2026-08-08T05:09:28.152Z" + }, + { + "module": "system", + "scenario": null, + "name": "检查测试联系电话可用性", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/contact-phone-availability?contactPhone=16165768152" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3f26eee5-cbc3-4a67-b1c6-141d7ce2c1af, 9022f71b-5466-42fc-8e6c-775ebf570ec5", + "traceId": "fe77a18688724de9af434bf734d8d8ee", + "evidence": "attempt=1", + "checkedAt": "2026-08-08T05:09:28.187Z" + }, + { + "module": "system", + "scenario": null, + "name": "创建平台内部用户", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/users" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "bb6c78f1-b218-41a6-a5e4-4bba5e5788d9, 8fcd92bf-c0bf-4041-a171-94453035eed6", + "traceId": "d5aeb954f62148ec9e03dec14a4e48e6", + "evidence": "", + "checkedAt": "2026-08-08T05:09:28.555Z" + }, + { + "module": "system", + "scenario": null, + "name": "内部用户账号、平台范围和角色正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/users" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "bb6c78f1-b218-41a6-a5e4-4bba5e5788d9, 8fcd92bf-c0bf-4041-a171-94453035eed6", + "traceId": "d5aeb954f62148ec9e03dec14a4e48e6", + "evidence": "membershipId=2085956533527105540", + "checkedAt": "2026-08-08T05:09:28.555Z" + }, + { + "module": "system", + "scenario": null, + "name": "按账号查询平台内部用户", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/users?page=1&size=20&keyword=admin_accept_808050925886" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1aa63d09-882e-4da9-94c8-fa7a5ca1c332, ba7ce3c6-ddae-425c-94c1-dbfc6cb0c5bd", + "traceId": "17ab2a8ce2824a34a3adc6dcb448eca1", + "evidence": "", + "checkedAt": "2026-08-08T05:09:28.603Z" + }, + { + "module": "system", + "scenario": null, + "name": "用户列表包含新账号且字段完整", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/users?page=1&size=20&keyword=admin_accept_808050925886" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1aa63d09-882e-4da9-94c8-fa7a5ca1c332, ba7ce3c6-ddae-425c-94c1-dbfc6cb0c5bd", + "traceId": "17ab2a8ce2824a34a3adc6dcb448eca1", + "evidence": "records=1, missing=none, lastLoginAt=omitted", + "checkedAt": "2026-08-08T05:09:28.604Z" + }, + { + "module": "system", + "scenario": null, + "name": "编辑平台内部用户", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/users/2085956533527105540" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "817fa7bc-a74c-496f-afae-6a984301fd4a, f6b1d627-b7d4-4822-927b-979437bb12c1", + "traceId": "908f143cefe4432492568a86cb684b3f", + "evidence": "", + "checkedAt": "2026-08-08T05:09:28.793Z" + }, + { + "module": "system", + "scenario": null, + "name": "用户编辑正确回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/users/2085956533527105540" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "817fa7bc-a74c-496f-afae-6a984301fd4a, f6b1d627-b7d4-4822-927b-979437bb12c1", + "traceId": "908f143cefe4432492568a86cb684b3f", + "evidence": "membershipId=2085956533527105540", + "checkedAt": "2026-08-08T05:09:28.793Z" + }, + { + "module": "system", + "scenario": null, + "name": "新建内部用户可使用初始密码登录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/auth/login" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5b6e97ce-7309-42c8-b9b4-ba4ed2aa27fc, 79427f86-8968-4b6d-b261-b4c8b17591d9", + "traceId": "3b49adfcfe5a4df88a981d86324a6477", + "evidence": "username=admin_accept_808050925886", + "checkedAt": "2026-08-08T05:09:29.125Z" + }, + { + "module": "system", + "scenario": null, + "name": "重置平台内部用户密码", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/users/2085956533527105540/password" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b63a441a-5ff9-440b-a513-7c8ec8d36998, 6262f752-6b8c-4a5d-9098-993df54d87de", + "traceId": "bd32d65cae07409d8f21f84fa4a96778", + "evidence": "", + "checkedAt": "2026-08-08T05:09:29.570Z" + }, + { + "module": "system", + "scenario": null, + "name": "内部用户使用重置密码登录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/auth/login" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0001fb91-fa4f-4050-9313-a7a17b220661, ce1b42dd-cf59-4cb9-af20-557fe70f2144", + "traceId": "7dc8485a1d9444d8988378b854b71663", + "evidence": "username=admin_accept_808050925886", + "checkedAt": "2026-08-08T05:09:29.921Z" + }, + { + "module": "system", + "scenario": null, + "name": "停用平台内部用户", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/users/2085956533527105540/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d42b983f-eb04-4ea7-bd93-efabebc5321d, f6ec6e8c-ae06-4daf-935b-3766c6767b8e", + "traceId": "e0b2ed37379246d49e571237c651a0e4", + "evidence": "", + "checkedAt": "2026-08-08T05:09:30.104Z" + }, + { + "module": "system", + "scenario": null, + "name": "内部用户停用状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/users/2085956533527105540/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d42b983f-eb04-4ea7-bd93-efabebc5321d, f6ec6e8c-ae06-4daf-935b-3766c6767b8e", + "traceId": "e0b2ed37379246d49e571237c651a0e4", + "evidence": "status=DISABLED", + "checkedAt": "2026-08-08T05:09:30.104Z" + }, + { + "module": "system", + "scenario": null, + "name": "停用用户禁止登录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/auth/login" + }, + "http": 200, + "code": "A0403", + "message": "账号已禁用", + "requestId": "b9a51834-7b60-4f18-8d64-f13910a51461", + "traceId": "b716fe0096e941cbaf14bc7dbc0c3939", + "evidence": "HTTP=200, code=A0403", + "checkedAt": "2026-08-08T05:09:30.136Z" + }, + { + "module": "system", + "scenario": null, + "name": "清空测试角色权限", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/permissions" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3d92653f-44a9-4d7d-afb4-0733822212cb, 63d04a21-3d6c-4e12-b0a4-6d1c1ae6fcd4", + "traceId": "880aad8ea585469c831c27e9e420eccb", + "evidence": "", + "checkedAt": "2026-08-08T05:09:30.312Z" + }, + { + "module": "system", + "scenario": "system-role-protection", + "name": "已分配成员的角色禁止删除", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "DELETE", + "path": "/api/platform/v1/iam/roles/2085956532226871297" + }, + "http": 200, + "code": "A0409", + "message": "角色已分配给成员,不能删除", + "requestId": "ac4bbe7e-b267-4740-878a-bc11c76d1bec", + "traceId": "ea2528fbcad94cc18b53dec1fbe7dac3", + "evidence": "HTTP=200, code=A0409", + "checkedAt": "2026-08-08T05:09:30.341Z" + }, + { + "module": "system", + "scenario": null, + "name": "清理时停用测试角色", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/2085956532226871297/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f8623e2c-6d5c-4533-b097-bcc6dc389829, 8ef96e69-ef31-4478-9361-b1f1e5244a42", + "traceId": "83c5eb6a30ec4a8cbf9e634d6ab981c7", + "evidence": "", + "checkedAt": "2026-08-08T05:09:30.492Z" + }, + { + "module": "system", + "scenario": null, + "name": "保留测试角色处于停用状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/2085956532226871297/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f8623e2c-6d5c-4533-b097-bcc6dc389829, 8ef96e69-ef31-4478-9361-b1f1e5244a42", + "traceId": "83c5eb6a30ec4a8cbf9e634d6ab981c7", + "evidence": "status=DISABLED", + "checkedAt": "2026-08-08T05:09:30.492Z" + }, + { + "module": "system", + "scenario": null, + "name": "删除临时权限资源", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "DELETE", + "path": "/api/platform/v1/iam/permissions/2085956531526422529" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4d2b8276-2d41-4042-95de-f597ad4bb63e, b4b1387b-681c-4b41-96fc-bbd826f2a2d4", + "traceId": "97be4273412c487898b9ad23f51d20e9", + "evidence": "", + "checkedAt": "2026-08-08T05:09:30.543Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "查询平台仓库列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=20" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "aadcb73e-9035-4847-b533-1074906d01bd, ad83567b-0abf-4da1-81e0-f26d99fe034f", + "traceId": "cc294a64e3f744ddbba29ed870073184", + "evidence": "", + "checkedAt": "2026-08-08T05:09:30.601Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "仓库列表分页结构正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=20" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "aadcb73e-9035-4847-b533-1074906d01bd, ad83567b-0abf-4da1-81e0-f26d99fe034f", + "traceId": "cc294a64e3f744ddbba29ed870073184", + "evidence": "total=270", + "checkedAt": "2026-08-08T05:09:30.601Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "创建平台公共仓库", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/warehouse-admin" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a768d140-df3d-4b80-875e-1fba48f2caf4, cfe04dfb-30cf-446b-8268-0abd727de9e2", + "traceId": "1cb5bed244ef43e1ad5cf78ed71e0877", + "evidence": "", + "checkedAt": "2026-08-08T05:09:30.775Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "仓库创建返回字符串兼容 ID", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/warehouse-admin" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a768d140-df3d-4b80-875e-1fba48f2caf4, cfe04dfb-30cf-446b-8268-0abd727de9e2", + "traceId": "1cb5bed244ef43e1ad5cf78ed71e0877", + "evidence": "warehouseId=2085956544119226369", + "checkedAt": "2026-08-08T05:09:30.775Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "查询平台仓库详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin/2085956544119226369?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "446578a3-7d7e-4f24-adbc-e582459376d5, 9641aba9-6196-4d0f-9fd8-982ec3998eae", + "traceId": "855702a01d554c559e9a0f0f6ed18363", + "evidence": "", + "checkedAt": "2026-08-08T05:09:30.809Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "仓库详情、地址和能力正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin/2085956544119226369?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "446578a3-7d7e-4f24-adbc-e582459376d5, 9641aba9-6196-4d0f-9fd8-982ec3998eae", + "traceId": "855702a01d554c559e9a0f0f6ed18363", + "evidence": "addresses=1, capabilities=1", + "checkedAt": "2026-08-08T05:09:30.809Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "编辑平台仓库", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/warehouse-admin/2085956544119226369?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "dab00ad3-cb31-41e4-a896-bfb58d81726e, f9b66157-daf5-4646-92c0-1fc8dc349fae", + "traceId": "95fe6653078a46508f419c9dead9daf9", + "evidence": "", + "checkedAt": "2026-08-08T05:09:30.893Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "回查编辑后的平台仓库", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin/2085956544119226369?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "57b5fc2a-951b-4f5c-8574-b8c4d84f837e, 5cc17272-4fcd-443a-a500-e86f8864f8a7", + "traceId": "0c0bd96fb13443879ddb13967125e5ae", + "evidence": "", + "checkedAt": "2026-08-08T05:09:30.931Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "仓库编辑已持久化", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin/2085956544119226369?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "57b5fc2a-951b-4f5c-8574-b8c4d84f837e, 5cc17272-4fcd-443a-a500-e86f8864f8a7", + "traceId": "0c0bd96fb13443879ddb13967125e5ae", + "evidence": "warehouseId=2085956544119226369", + "checkedAt": "2026-08-08T05:09:30.931Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "创建仓库库位", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/locations?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "66e39f48-99d5-4095-9de6-cb37508216e9, 36d34c55-c110-40cb-bf1d-d1ac1270e417", + "traceId": "5ce8f3c7328644a680063c1ea0a7e151", + "evidence": "", + "checkedAt": "2026-08-08T05:09:30.987Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "查询库位详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations/2085956545100693506?tenantId=0&warehouseId=2085956544119226369" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ec47e103-6430-440e-887b-6c0779778503, b90108fb-d6c0-4870-8b86-536f1f598fda", + "traceId": "8f8ff165bea1487bb7e8d02fd95d7712", + "evidence": "", + "checkedAt": "2026-08-08T05:09:31.022Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "库位详情关联正确仓库", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations/2085956545100693506?tenantId=0&warehouseId=2085956544119226369" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ec47e103-6430-440e-887b-6c0779778503, b90108fb-d6c0-4870-8b86-536f1f598fda", + "traceId": "8f8ff165bea1487bb7e8d02fd95d7712", + "evidence": "locationId=2085956545100693506", + "checkedAt": "2026-08-08T05:09:31.023Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "编辑库位", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/locations/2085956545100693506?tenantId=0&warehouseId=2085956544119226369" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ffd0019c-ebf6-4d4b-a7db-c6262c82a417, e79ac93f-3e53-4f73-9acc-e3891d089820", + "traceId": "2c4acb067cd24cfdb9c36360f310e531", + "evidence": "", + "checkedAt": "2026-08-08T05:09:31.069Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "回查编辑后的库位", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations/2085956545100693506?tenantId=0&warehouseId=2085956544119226369" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "24186d2c-c443-41a2-bd1f-59de295dc5ad, 27b7b8e8-2d22-4012-822f-f3c1e7281c67", + "traceId": "39ad96dd8ab4418d903d771ac8e7ff6e", + "evidence": "", + "checkedAt": "2026-08-08T05:09:31.101Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "库位编辑与版本递增正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations/2085956545100693506?tenantId=0&warehouseId=2085956544119226369" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "24186d2c-c443-41a2-bd1f-59de295dc5ad, 27b7b8e8-2d22-4012-822f-f3c1e7281c67", + "traceId": "39ad96dd8ab4418d903d771ac8e7ff6e", + "evidence": "version=1", + "checkedAt": "2026-08-08T05:09:31.101Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "停用库位", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PATCH", + "path": "/api/platform/v1/locations/2085956545100693506/status?tenantId=0&warehouseId=2085956544119226369" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "02b98e58-af9b-4da1-b0ae-cb415b4b22cd, 3c395605-6548-49be-9162-52953f962b51", + "traceId": "69ee6c0ba4f54bafbb0cc53790deba6f", + "evidence": "", + "checkedAt": "2026-08-08T05:09:31.144Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "删除未占用测试库位", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "DELETE", + "path": "/api/platform/v1/locations/2085956545100693506?tenantId=0&warehouseId=2085956544119226369&version=2" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "533b1d64-3c1a-4732-bbd7-ebc4d2ce7d95, 791924d6-8ff6-4530-b8fa-0b37a13e1d72", + "traceId": "dd55fbdf5b9a456e97d3d1550d502598", + "evidence": "", + "checkedAt": "2026-08-08T05:09:31.185Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "创建仓库托盘", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/pallets?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "26a4f09d-01c4-4df3-8d86-4771c91a9663, 1fe88743-ce12-421e-9de1-1fad8ebb9104", + "traceId": "b63f3e024fe24ba390e5b33649092564", + "evidence": "", + "checkedAt": "2026-08-08T05:09:31.242Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "查询托盘详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets/2085956546178629634?tenantId=0&warehouseId=2085956544119226369" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "eb441e0a-874c-4d2f-b12b-3d18f7ab2315, 9a6699f6-b80f-4dbb-97a3-d07b7eb9d9de", + "traceId": "b961e558b8784d9a9fe6fe90db0d0436", + "evidence": "", + "checkedAt": "2026-08-08T05:09:31.269Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "托盘详情关联正确仓库", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets/2085956546178629634?tenantId=0&warehouseId=2085956544119226369" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "eb441e0a-874c-4d2f-b12b-3d18f7ab2315, 9a6699f6-b80f-4dbb-97a3-d07b7eb9d9de", + "traceId": "b961e558b8784d9a9fe6fe90db0d0436", + "evidence": "palletId=2085956546178629634", + "checkedAt": "2026-08-08T05:09:31.269Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "编辑托盘", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/pallets/2085956546178629634?tenantId=0&warehouseId=2085956544119226369" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8722236f-d6de-4c95-a1e4-cd744e6c43b8, 3f07282a-1ab3-473c-8deb-5ff151d92f6f", + "traceId": "f107bef2cbf1474392de5018243fff02", + "evidence": "", + "checkedAt": "2026-08-08T05:09:31.317Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "回查编辑后的托盘", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets/2085956546178629634?tenantId=0&warehouseId=2085956544119226369" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e30e9528-f6d9-470f-b655-fe063b2c37ae, 4209552f-e07d-48cb-be63-9e83dd2ba01d", + "traceId": "1c4e82311e344ee1a3bc63bbdc035c12", + "evidence": "", + "checkedAt": "2026-08-08T05:09:31.350Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "托盘编辑已持久化", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets/2085956546178629634?tenantId=0&warehouseId=2085956544119226369" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e30e9528-f6d9-470f-b655-fe063b2c37ae, 4209552f-e07d-48cb-be63-9e83dd2ba01d", + "traceId": "1c4e82311e344ee1a3bc63bbdc035c12", + "evidence": "palletId=2085956546178629634", + "checkedAt": "2026-08-08T05:09:31.350Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "删除未使用测试托盘", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "DELETE", + "path": "/api/platform/v1/pallets/2085956546178629634?tenantId=0&warehouseId=2085956544119226369" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9f5ad609-e2d2-44f1-b56c-2d26846094d6, 7312ef42-5a96-4c77-b1d1-8c40c804b13f", + "traceId": "f5af292be6764f5eb73154ab08c2aff2", + "evidence": "", + "checkedAt": "2026-08-08T05:09:31.393Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "创建快递公司", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/express-companies?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e7f80e17-fbf5-4565-bcdd-a93ef9019432, be6c1bdf-d933-4f63-bc1f-9d822e07c13b", + "traceId": "4b6e45ed23b34bd19fb2117a7d492fd9", + "evidence": "", + "checkedAt": "2026-08-08T05:09:31.443Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "查询快递公司详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies/2085956547013296130?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f28c24ae-84eb-40a3-8a0e-646d01b5a574, 1cc0103a-61b7-4c94-b400-5befaf1a2261", + "traceId": "a1615cbe9b924fa69ba5e625e5f97b12", + "evidence": "", + "checkedAt": "2026-08-08T05:09:31.474Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "快递公司详情正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies/2085956547013296130?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f28c24ae-84eb-40a3-8a0e-646d01b5a574, 1cc0103a-61b7-4c94-b400-5befaf1a2261", + "traceId": "a1615cbe9b924fa69ba5e625e5f97b12", + "evidence": "expressId=2085956547013296130", + "checkedAt": "2026-08-08T05:09:31.474Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "编辑快递公司", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/express-companies/2085956547013296130?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "537735c8-a321-4c78-9240-cd2822f212f8, 010182b1-fab2-430a-b565-d71bd0bec7b5", + "traceId": "f74629f66f0d4a42a1e5f2d37b508c20", + "evidence": "", + "checkedAt": "2026-08-08T05:09:31.517Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "停用快递公司", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PATCH", + "path": "/api/platform/v1/express-companies/2085956547013296130/status?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "319c4b6b-a6a9-40d9-991c-b79a81e6d277, 227dcf56-679f-45b9-8f41-8a16328d3730", + "traceId": "1970e99aa1354984af13b89d21f0af51", + "evidence": "", + "checkedAt": "2026-08-08T05:09:31.563Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "筛选快递公司列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies?page=1&size=20&keyword=EX808050925886" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "64a11030-5ca9-4ef2-befa-b058e42f68f1, 388c6c4e-8b10-4782-ad49-57b99ed6321e", + "traceId": "5673a26d341642aba47385deb3e542fc", + "evidence": "", + "checkedAt": "2026-08-08T05:09:31.619Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "快递公司列表回显停用状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies?page=1&size=20&keyword=EX808050925886" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "64a11030-5ca9-4ef2-befa-b058e42f68f1, 388c6c4e-8b10-4782-ad49-57b99ed6321e", + "traceId": "5673a26d341642aba47385deb3e542fc", + "evidence": "records=1", + "checkedAt": "2026-08-08T05:09:31.620Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "创建往来单位", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/partners?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "eda3f48f-240a-41cd-b0f4-bdc9f8e73acf, 4fab4be0-7a88-40a8-8efe-546add939678", + "traceId": "6c1980081c05474fba64b250af0185f7", + "evidence": "", + "checkedAt": "2026-08-08T05:09:31.669Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "查询往来单位详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners/2085956547957014530?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "173edd24-db56-4037-a10a-1c7b5550da36, 42bff8e8-c314-441a-b441-0dd6cf084d9d", + "traceId": "66298bfc5191415482ea81f3fa89d71a", + "evidence": "", + "checkedAt": "2026-08-08T05:09:31.696Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "往来单位详情正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners/2085956547957014530?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "173edd24-db56-4037-a10a-1c7b5550da36, 42bff8e8-c314-441a-b441-0dd6cf084d9d", + "traceId": "66298bfc5191415482ea81f3fa89d71a", + "evidence": "partnerId=2085956547957014530", + "checkedAt": "2026-08-08T05:09:31.696Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "编辑往来单位", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/partners/2085956547957014530?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1b313ba0-1e57-4d82-a9c9-6a0c51202d66, 863933ba-0b08-4ede-af27-948e3af994e6", + "traceId": "66e0252c0d914fdf8884a459f8a265ca", + "evidence": "", + "checkedAt": "2026-08-08T05:09:31.745Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "停用往来单位", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PATCH", + "path": "/api/platform/v1/partners/2085956547957014530/status?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e713ebb2-228b-4420-baef-6be7a938b60b, 4ec3dcb2-7b6c-4ff2-b06f-da67cf2de686", + "traceId": "a3c33fb220634d33ae51e5c44c0c33ed", + "evidence": "", + "checkedAt": "2026-08-08T05:09:31.781Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "筛选往来单位列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners?page=1&size=20&keyword=PT808050925886" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "240174a0-e5e7-4f96-b281-42e5f9510de4, 5bc80e84-3d5e-406c-946a-6163514716b8", + "traceId": "7be020386ddc40baadc06bae757c5c46", + "evidence": "", + "checkedAt": "2026-08-08T05:09:31.859Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "往来单位列表回显编辑与停用状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners?page=1&size=20&keyword=PT808050925886" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "240174a0-e5e7-4f96-b281-42e5f9510de4, 5bc80e84-3d5e-406c-946a-6163514716b8", + "traceId": "7be020386ddc40baadc06bae757c5c46", + "evidence": "records=1", + "checkedAt": "2026-08-08T05:09:31.859Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "下载仓库导入模板", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin/import-template" + }, + "http": 200, + "code": null, + "message": "3852 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "eedbf5e2-21ca-4869-ac1f-f93a510c505a, 9e653f18-6421-4234-9c3e-26404c7b324a", + "traceId": "9deed3451ea34be880bc4e7384bd126e", + "evidence": "bytes=3852, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "checkedAt": "2026-08-08T05:09:31.918Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "下载快递公司导入模板", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies/import-template" + }, + "http": 200, + "code": null, + "message": "3691 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "046e4ed1-e628-44b2-843e-242c2204e521, d2d4adc2-e09e-4c00-9f59-351e344a518d", + "traceId": "311f1620cba94c88b729b5f7054beefb", + "evidence": "bytes=3691, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "checkedAt": "2026-08-08T05:09:31.970Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "下载往来单位导入模板", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners/import-template" + }, + "http": 200, + "code": null, + "message": "3829 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "e201c018-06ca-4676-b39f-ba658260fbaf, c04006ca-12f0-41ea-8fae-dcdabcbc4d03", + "traceId": "ef70def15b774eedb18d2435895ef68b", + "evidence": "bytes=3829, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "checkedAt": "2026-08-08T05:09:32.025Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "停用测试仓库", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PATCH", + "path": "/api/platform/v1/warehouse-admin/2085956544119226369/status?tenantId=0&status=INACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "26833ec2-ad7e-4d3c-9305-3cd5cd8a2e92, 9a1ee482-e903-4976-9082-72d1f1fbce45", + "traceId": "99917e9ba79048809ed9eb06ae36c351", + "evidence": "", + "checkedAt": "2026-08-08T05:09:32.059Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 测试账号登录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/auth/login" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "14e97a12-cb52-46b0-ac74-34f814ffe370, c443ed4f-09ea-4a2f-86f8-cf5123376b33", + "traceId": "e7b7ed4e164844599c33b1e528c52fd6", + "evidence": "username=merchant_admin", + "checkedAt": "2026-08-08T05:09:32.393Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询当前企业资料", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/iam/tenant/profile" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e33951ad-ea59-4814-bc47-1cb07609ac6e, 6a428e6f-3eba-4b7b-b28b-853ef4144d79", + "traceId": "8e3d298d8acc4cb5be60052871feaacf", + "evidence": "", + "checkedAt": "2026-08-08T05:09:32.430Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 测试企业已审核且客户 ID 有效", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/iam/tenant/profile" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e33951ad-ea59-4814-bc47-1cb07609ac6e, 6a428e6f-3eba-4b7b-b28b-853ef4144d79", + "traceId": "8e3d298d8acc4cb5be60052871feaacf", + "evidence": "tenantId=10001, status=ACTIVE", + "checkedAt": "2026-08-08T05:09:32.430Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询客户固定箱型", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "fff2c4bd-2e57-4ea4-b558-d4a4008eb4c4, 38b9e644-87da-4272-b6b7-02f98c6f000c", + "traceId": "dd4da6dec4d941e69eab55bfa6069ec7", + "evidence": "tenantId=10001", + "checkedAt": "2026-08-08T05:09:32.458Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "固定四箱型顺序、内径及每边加2cm正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "fff2c4bd-2e57-4ea4-b558-d4a4008eb4c4, 38b9e644-87da-4272-b6b7-02f98c6f000c", + "traceId": "dd4da6dec4d941e69eab55bfa6069ec7", + "evidence": "types=SMALL,MEDIUM,LARGE,EXTRA_LARGE", + "checkedAt": "2026-08-08T05:09:32.458Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询国内收货仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=DOMESTIC" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2f92757a-4dd7-4c64-b71a-9832565266d7, 1e377254-c9b7-4a9f-90a0-eaa947286fea", + "traceId": "49849abdf19847c18dde9168335188f8", + "evidence": "", + "checkedAt": "2026-08-08T05:09:32.495Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在可用国内收货仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=DOMESTIC" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2f92757a-4dd7-4c64-b71a-9832565266d7, 1e377254-c9b7-4a9f-90a0-eaa947286fea", + "traceId": "49849abdf19847c18dde9168335188f8", + "evidence": "count=2", + "checkedAt": "2026-08-08T05:09:32.495Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询 FBA 目的仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=FBA" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "fc64f8b3-92cc-496e-a01c-f2aeb3a22c6f, ab55dd0c-f200-483f-8218-641deb267b0d", + "traceId": "c74cebb8444643879bc4e6e38d7f658c", + "evidence": "", + "checkedAt": "2026-08-08T05:09:32.547Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在可用 FBA 目的仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=FBA" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "fc64f8b3-92cc-496e-a01c-f2aeb3a22c6f, ab55dd0c-f200-483f-8218-641deb267b0d", + "traceId": "c74cebb8444643879bc4e6e38d7f658c", + "evidence": "count=200", + "checkedAt": "2026-08-08T05:09:32.547Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询可用计费渠道", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/first-leg/pricing/channels?originWarehouseId=193000000000200001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4d80c906-7cdf-4e1f-8bfc-9c6a6f7b4b6b, d1dcd71a-1985-4031-87f4-e62cee6ee06c", + "traceId": "997b087b9cfd4af8841d6d662d554ff3", + "evidence": "", + "checkedAt": "2026-08-08T05:09:32.597Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在带计价税制的可用渠道", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/first-leg/pricing/channels?originWarehouseId=193000000000200001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4d80c906-7cdf-4e1f-8bfc-9c6a6f7b4b6b, d1dcd71a-1985-4031-87f4-e62cee6ee06c", + "traceId": "997b087b9cfd4af8841d6d662d554ff3", + "evidence": "count=15", + "checkedAt": "2026-08-08T05:09:32.598Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询发货客户候选", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/partners/candidates?type=SHIPPER" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4096390c-8c98-4b19-a17f-e0fce654564e, 5e138412-6cf7-435b-b218-4c5d32005996", + "traceId": "6b11bf327ea44139bd02cbbf94d8108f", + "evidence": "", + "checkedAt": "2026-08-08T05:09:32.631Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 上传产品图片", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/files/product-images" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "28e6f77b-1c71-4592-b836-e7c003d01725, 5bb72bf7-eed2-401a-9343-146407e9e331", + "traceId": "486172f35da6418f8db4cab706f9f7a7", + "evidence": "contentType=image/png", + "checkedAt": "2026-08-08T05:09:32.666Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "产品图片上传返回字符串文件 ID", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/files/product-images" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "28e6f77b-1c71-4592-b836-e7c003d01725, 5bb72bf7-eed2-401a-9343-146407e9e331", + "traceId": "486172f35da6418f8db4cab706f9f7a7", + "evidence": "fileIdType=string, contentType=image/png", + "checkedAt": "2026-08-08T05:09:32.666Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 可下载本轮产品图片", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/files/product-images/2085956552150810626" + }, + "http": 200, + "code": null, + "message": null, + "requestId": "1e242063-727d-44e3-ad0f-adb20c7e5d6e, e1664e19-fd6f-4c6f-8d76-bb4498c8a28e", + "traceId": "49df52310ea9472bb2ba2657432dde56", + "evidence": "bytes=68, contentType=image/png", + "checkedAt": "2026-08-08T05:09:32.690Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 创建四箱型隔离订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "deab549e-554d-4ee7-909e-524341eba8c1, 3325ec39-9b7b-40d5-ad81-61d6a5333fd2", + "traceId": "180e7deaa1b14be583f7bbf82a64d3ee", + "evidence": "marker=ADMIN-API-20260808050925886", + "checkedAt": "2026-08-08T05:09:32.771Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 创建订单幂等重放", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "39164bec-bc0f-4610-8657-a91ec2ea31f6, 4551ceb2-491f-4493-aa12-52ba73145690", + "traceId": "cb5866c8040c413ca7579ec53ba3215e", + "evidence": "", + "checkedAt": "2026-08-08T05:09:32.804Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 创建幂等结果一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "39164bec-bc0f-4610-8657-a91ec2ea31f6, 4551ceb2-491f-4493-aa12-52ba73145690", + "traceId": "cb5866c8040c413ca7579ec53ba3215e", + "evidence": "orderId=2085956552557658114, replayedId=2085956552557658114", + "checkedAt": "2026-08-08T05:09:32.804Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询隔离订单草稿", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085956552557658114" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c050f172-0cc9-4773-a890-43e87e353d4d, fb7d0aa9-74e0-4c3b-972c-ac6b064aa122", + "traceId": "13d07699b168432d8ad5f0121e6a1fa2", + "evidence": "", + "checkedAt": "2026-08-08T05:09:32.832Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 草稿身份、marker 和状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085956552557658114" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c050f172-0cc9-4773-a890-43e87e353d4d, fb7d0aa9-74e0-4c3b-972c-ac6b064aa122", + "traceId": "13d07699b168432d8ad5f0121e6a1fa2", + "evidence": "orderNo=FL2085956552557658114, status=DRAFT", + "checkedAt": "2026-08-08T05:09:32.832Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "四箱型产品字段及图片契约完整回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085956552557658114" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c050f172-0cc9-4773-a890-43e87e353d4d, fb7d0aa9-74e0-4c3b-972c-ac6b064aa122", + "traceId": "13d07699b168432d8ad5f0121e6a1fa2", + "evidence": "cargoes=4, imageFileId=2085956552150810626", + "checkedAt": "2026-08-08T05:09:32.832Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 提交隔离订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg/2085956552557658114/submit" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ff7d4046-0a16-4102-bc7b-84a531d8afaa, 4329a8be-0616-40c5-9446-af7d9e628925", + "traceId": "95f2d2cc7ae74f5787ddb9f9a4c76228", + "evidence": "orderId=2085956552557658114", + "checkedAt": "2026-08-08T05:09:32.905Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 回查已提交订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085956552557658114" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f8a237e8-bfbe-4531-bf32-3675635c62fc, f30ebbd0-e823-4d0c-b0e7-541765a75497", + "traceId": "b3557f1866434f66a63d9995d903ac90", + "evidence": "", + "checkedAt": "2026-08-08T05:09:32.942Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 订单已进入待审核状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085956552557658114" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f8a237e8-bfbe-4531-bf32-3675635c62fc, f30ebbd0-e823-4d0c-b0e7-541765a75497", + "traceId": "b3557f1866434f66a63d9995d903ac90", + "evidence": "status=SUBMITTED", + "checkedAt": "2026-08-08T05:09:32.942Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询统一订单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders?page=1&size=100&tenantId=10001&orderNo=FL2085956552557658114" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3eaa29b1-1f44-4451-841e-f5a59a2a82e4, a43c13b8-7656-4d22-8b76-32898163c5bd", + "traceId": "184d3dee4553422db12ffe7bcde27087", + "evidence": "", + "checkedAt": "2026-08-08T05:09:32.984Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 统一订单列表只核对本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders?page=1&size=100&tenantId=10001&orderNo=FL2085956552557658114" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3eaa29b1-1f44-4451-841e-f5a59a2a82e4, a43c13b8-7656-4d22-8b76-32898163c5bd", + "traceId": "184d3dee4553422db12ffe7bcde27087", + "evidence": "orderId=2085956552557658114, found=true", + "checkedAt": "2026-08-08T05:09:32.984Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询统一订单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085956552557658114?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7bb7bd66-19bd-44be-8f50-8f0d2220757f, 7f8dcbb8-d3fb-448d-88e3-6769ff3d8c27", + "traceId": "fd3d40954bd044cc88c01e8492cc18fa", + "evidence": "", + "checkedAt": "2026-08-08T05:09:33.022Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 统一订单详情身份与待审核状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085956552557658114?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7bb7bd66-19bd-44be-8f50-8f0d2220757f, 7f8dcbb8-d3fb-448d-88e3-6769ff3d8c27", + "traceId": "fd3d40954bd044cc88c01e8492cc18fa", + "evidence": "mainStatus=PENDING_REVIEW, timeline=2", + "checkedAt": "2026-08-08T05:09:33.022Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询头程订单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg?tenantId=10001&keyword=FL2085956552557658114&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0c159e59-13cc-4fb0-9457-b587654a2944, 211aae98-eb75-46ff-8c01-ba4040489ecc", + "traceId": "f595c7e3a19941b2bc81e7f6cdb5a621", + "evidence": "", + "checkedAt": "2026-08-08T05:09:33.051Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 头程订单列表只核对本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg?tenantId=10001&keyword=FL2085956552557658114&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0c159e59-13cc-4fb0-9457-b587654a2944, 211aae98-eb75-46ff-8c01-ba4040489ecc", + "traceId": "f595c7e3a19941b2bc81e7f6cdb5a621", + "evidence": "orderId=2085956552557658114, found=true", + "checkedAt": "2026-08-08T05:09:33.051Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询头程订单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085956552557658114?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5d2cf52b-f372-4f07-860d-718eb9933e5b, 7fcfbeda-c1e6-44e6-978c-b5af00fa8efe", + "traceId": "4fa69a6258ff4e54bd8a5987c42dc841", + "evidence": "", + "checkedAt": "2026-08-08T05:09:33.082Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 头程订单详情聚合结构完整", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085956552557658114?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5d2cf52b-f372-4f07-860d-718eb9933e5b, 7fcfbeda-c1e6-44e6-978c-b5af00fa8efe", + "traceId": "4fa69a6258ff4e54bd8a5987c42dc841", + "evidence": "cargoes=4, history=2", + "checkedAt": "2026-08-08T05:09:33.082Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "四箱型产品字段及图片契约完整回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085956552557658114?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5d2cf52b-f372-4f07-860d-718eb9933e5b, 7fcfbeda-c1e6-44e6-978c-b5af00fa8efe", + "traceId": "4fa69a6258ff4e54bd8a5987c42dc841", + "evidence": "cargoes=4, imageFileId=2085956552150810626", + "checkedAt": "2026-08-08T05:09:33.082Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 为本轮订单添加内部备注", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085956552557658114/internal-notes?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1220a53a-118a-440c-a08b-71910f82d28d, 588f6a12-2018-40bb-881d-c3b4af265dab", + "traceId": "f6edd3434aab48c6977f2da8c11ff8e9", + "evidence": "", + "checkedAt": "2026-08-08T05:09:33.115Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 审核通过本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085956552557658114/approve?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9f85a373-df86-4e35-b2f4-a7362afe4029, 087d1b4c-f4c9-4599-aaa0-5d3d14dc7ce7", + "traceId": "eae54f5400eb44e4906e69a4a6f244e9", + "evidence": "orderId=2085956552557658114", + "checkedAt": "2026-08-08T05:09:33.148Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "审核后生成隔离入库单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085956552557658114?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ee961fee-4173-4198-add4-df91d39929f7, b308bc8d-938e-4dd8-8dd3-37d09e7ce850", + "traceId": "badb517f497c4dae84e0c56d24106c9c", + "evidence": "inboundId=2085956557911666689", + "checkedAt": "2026-08-08T05:09:34.248Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询本轮入库单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085956557911666689?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d7ea9685-9c9d-421b-9b95-7b32c0233757, c6f55209-49f8-475c-b934-f89148a2ea51", + "traceId": "4c6e8b3120fd4baa9e3712e752a00d8f", + "evidence": "inboundId=2085956557911666689", + "checkedAt": "2026-08-08T05:09:34.283Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "隔离入库单 marker 来源与可测量状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085956557911666689?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d7ea9685-9c9d-421b-9b95-7b32c0233757, c6f55209-49f8-475c-b934-f89148a2ea51", + "traceId": "4c6e8b3120fd4baa9e3712e752a00d8f", + "evidence": "markerFound=true, status=WAIT_MEASURE", + "checkedAt": "2026-08-08T05:09:34.283Z" + }, + { + "module": "orders", + "scenario": null, + "name": "入库单详情包含托盘库位、文件、备注和状态历史", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085956557911666689?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d7ea9685-9c9d-421b-9b95-7b32c0233757, c6f55209-49f8-475c-b934-f89148a2ea51", + "traceId": "4c6e8b3120fd4baa9e3712e752a00d8f", + "evidence": "inboundId=2085956557911666689, history=1", + "checkedAt": "2026-08-08T05:09:34.283Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询入库单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds?tenantId=10001&inboundCode=RK-2085956552557658114&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "756ba2b3-daa6-4c3c-aca4-66336bbb0de9, a9a2022d-0a6e-4ffd-a9f1-fe651afb2b68", + "traceId": "98600e8cd1b54073930d35b9f6a82c9b", + "evidence": "", + "checkedAt": "2026-08-08T05:09:34.312Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 入库单列表只核对本轮入库单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds?tenantId=10001&inboundCode=RK-2085956552557658114&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "756ba2b3-daa6-4c3c-aca4-66336bbb0de9, a9a2022d-0a6e-4ffd-a9f1-fe651afb2b68", + "traceId": "98600e8cd1b54073930d35b9f6a82c9b", + "evidence": "inboundId=2085956557911666689, total=1", + "checkedAt": "2026-08-08T05:09:34.312Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询本轮订单履约任务", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/by-order/2085956552557658114?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7428718e-9d88-4a98-9a74-fdcce4506557, 1e8ee7f9-7fb9-4974-bea1-6936ba8721cd", + "traceId": "6a2dfe7dcb414cf194b0f83493c4252c", + "evidence": "新订单应生成可查询的履约任务", + "checkedAt": "2026-08-08T05:09:34.342Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "履约任务与本轮订单和客户一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/by-order/2085956552557658114?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7428718e-9d88-4a98-9a74-fdcce4506557, 1e8ee7f9-7fb9-4974-bea1-6936ba8721cd", + "traceId": "6a2dfe7dcb414cf194b0f83493c4252c", + "evidence": "taskId=2085956557907472385, status=PENDING_ASSIGNMENT", + "checkedAt": "2026-08-08T05:09:34.342Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询本轮履约任务分配历史", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/2085956557907472385/assignment-history?tenantId=10001&page=1&size=20" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a263583b-4202-4ec2-a4e6-32cb8594c3b4, a8380916-902b-4ee1-b262-195ebd6849fe", + "traceId": "ec4600530451408eaa27a7300463e4e6", + "evidence": "", + "checkedAt": "2026-08-08T05:09:34.373Z" + }, + { + "module": "orders", + "scenario": null, + "name": "履约分配历史分页结构正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/2085956557907472385/assignment-history?tenantId=10001&page=1&size=20" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a263583b-4202-4ec2-a4e6-32cb8594c3b4, a8380916-902b-4ee1-b262-195ebd6849fe", + "traceId": "ec4600530451408eaa27a7300463e4e6", + "evidence": "taskId=2085956557907472385, total=0", + "checkedAt": "2026-08-08T05:09:34.373Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 受理本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085956552557658114/accept?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c7f036ff-63a8-4a0e-898c-2f438be458f8, a9117f12-7f53-4ffe-83e3-5423fc1534c0", + "traceId": "ee7f623bcd3448318414d10b4c296dfa", + "evidence": "", + "checkedAt": "2026-08-08T05:09:34.400Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 启动本轮订单履约", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085956552557658114/start?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1d9c05b4-76a6-44f4-8457-05126e9c3efd, cdf76ad3-f34d-4754-bc98-5cff1631fecd", + "traceId": "8bb4bb7b07a34c72918252fb41fcf178", + "evidence": "", + "checkedAt": "2026-08-08T05:09:34.440Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 回查本轮订单履约状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085956552557658114?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9a68ef62-dd6e-42b8-a470-7c461d6a9154, e11e7c33-4a48-4210-869a-4dca834a3140", + "traceId": "ab9e6a64597f433abffabac6967f8f3e", + "evidence": "", + "checkedAt": "2026-08-08T05:09:34.468Z" + }, + { + "module": "orders", + "scenario": null, + "name": "本轮订单已进入处理中且保留状态历史", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085956552557658114?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9a68ef62-dd6e-42b8-a470-7c461d6a9154, e11e7c33-4a48-4210-869a-4dca834a3140", + "traceId": "ab9e6a64597f433abffabac6967f8f3e", + "evidence": "status=PROCESSING, history=5", + "checkedAt": "2026-08-08T05:09:34.468Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "查询发布前船期价格版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a5a9c275-0ef5-42d1-88be-64750f7bc523, 0ea1dafa-b337-4a27-b249-69dcdb534a93", + "traceId": "438ec08d31cb445c88451b73cbec4aa7", + "evidence": "", + "checkedAt": "2026-08-08T05:09:34.505Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "发布前最多一份生效版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a5a9c275-0ef5-42d1-88be-64750f7bc523, 0ea1dafa-b337-4a27-b249-69dcdb534a93", + "traceId": "438ec08d31cb445c88451b73cbec4aa7", + "evidence": "versions=11, active=1", + "checkedAt": "2026-08-08T05:09:34.505Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "船期价格测试文件已隔离", + "passed": true, + "deploymentBlocker": false, + "request": null, + "http": null, + "code": null, + "message": null, + "requestId": null, + "traceId": null, + "evidence": "fileName=ADMIN-API-20260808050925886-2026.08.03柏悦价格表 船期2026.08.12.xlsx, bytes=1343413, sha256=3170fd3aa8795cd816ca9600f87a6a2a06b15d0cf6042d4592f33d4b30c7b8ab", + "checkedAt": "2026-08-08T05:09:34.524Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "上传并解析船期价格表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f64d584b-e492-42b1-a9bf-1bf15d10b129, dc2fdc10-497c-4ccf-957c-4dfb8d99af08", + "traceId": "4f5860a3990f4858a1720ae52b1abccf", + "evidence": "fileName=ADMIN-API-20260808050925886-2026.08.03柏悦价格表 船期2026.08.12.xlsx, bytes=1343413, sha256=3170fd3aa8795cd816ca9600f87a6a2a06b15d0cf6042d4592f33d4b30c7b8ab", + "checkedAt": "2026-08-08T05:09:37.661Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "上传返回隔离的待确认版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f64d584b-e492-42b1-a9bf-1bf15d10b129, dc2fdc10-497c-4ccf-957c-4dfb8d99af08", + "traceId": "4f5860a3990f4858a1720ae52b1abccf", + "evidence": "versionId=2085956560252088321, status=PENDING_CONFIRMATION, fileName=ADMIN-API-20260808050925886-2026.08.03柏悦价格表 船期2026.08.12.xlsx, shaMatched=true", + "checkedAt": "2026-08-08T05:09:37.661Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "解析出15个固定渠道且编码唯一", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f64d584b-e492-42b1-a9bf-1bf15d10b129, dc2fdc10-497c-4ccf-957c-4dfb8d99af08", + "traceId": "4f5860a3990f4858a1720ae52b1abccf", + "evidence": "channelCount=15, unique=15, missing=none", + "checkedAt": "2026-08-08T05:09:37.661Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "解析价格行完整且可追溯到 Excel", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f64d584b-e492-42b1-a9bf-1bf15d10b129, dc2fdc10-497c-4ccf-957c-4dfb8d99af08", + "traceId": "4f5860a3990f4858a1720ae52b1abccf", + "evidence": "rateCount=2157, declared=2157, valid=true", + "checkedAt": "2026-08-08T05:09:37.662Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "解析阻断仅包含可确认的仓库映射问题", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f64d584b-e492-42b1-a9bf-1bf15d10b129, dc2fdc10-497c-4ccf-957c-4dfb8d99af08", + "traceId": "4f5860a3990f4858a1720ae52b1abccf", + "evidence": "blocking=0, unexpected=none, infrastructure=none", + "checkedAt": "2026-08-08T05:09:37.662Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "上传后回查价格版本列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c31ea14b-9795-4ca0-a0c7-16e495e75f9f, 1b50cf1e-9f07-4cd2-b5a3-94686a2f1c16", + "traceId": "a57636269e0f4471aa006c94064dae39", + "evidence": "", + "checkedAt": "2026-08-08T05:09:37.712Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "上传只生成待确认版本且不替换当前生效版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c31ea14b-9795-4ca0-a0c7-16e495e75f9f, 1b50cf1e-9f07-4cd2-b5a3-94686a2f1c16", + "traceId": "a57636269e0f4471aa006c94064dae39", + "evidence": "pending=PENDING_CONFIRMATION, activeBefore=2085930794353209345, activeAfterUpload=2085930794353209345", + "checkedAt": "2026-08-08T05:09:37.712Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "查询待确认版本渠道和价格预览", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books/2085956560252088321" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "10c93877-732d-4eb5-b8dc-3d091b819867, 0590cd80-94d8-4d5f-a806-2927f2c0c35e", + "traceId": "69359ec1b30e4a47be963e0e7990c034", + "evidence": "", + "checkedAt": "2026-08-08T05:09:37.811Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "详情与上传解析结果一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books/2085956560252088321" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "10c93877-732d-4eb5-b8dc-3d091b819867, 0590cd80-94d8-4d5f-a806-2927f2c0c35e", + "traceId": "69359ec1b30e4a47be963e0e7990c034", + "evidence": "versionId=2085956560252088321, channels=15, rates=2157, issues=2", + "checkedAt": "2026-08-08T05:09:37.811Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "下载原始 XLSX 且内容散列一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books/2085956560252088321/source" + }, + "http": 200, + "code": null, + "message": "1343413 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "d511e41a-8e54-4a90-80d1-fe37ba7341f7, c665f6e0-765e-4cbc-8eaa-777ebecd825b, 9ec2f5d5-b623-4a92-ba3f-506a3f2f3c58", + "traceId": "f89ff6f2d9214dd5b4d8927f83220fda, 7ac8d9d4b63f416f806a5578c7035efb", + "evidence": "bytes=1343413, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, zipMagic=true, sha256=3170fd3aa8795cd816ca9600f87a6a2a06b15d0cf6042d4592f33d4b30c7b8ab", + "checkedAt": "2026-08-08T05:09:37.921Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "查询启用的平台公共国内仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=200&status=ACTIVE&warehouseType=DOMESTIC" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1b714e17-44d9-46cc-acf0-f23f4936e629, 50088444-d74f-4a48-af20-2747b4906624", + "traceId": "4e9d6754d26b4120921da2fc0b036fed", + "evidence": "", + "checkedAt": "2026-08-08T05:09:37.951Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "查询启用的平台公共海外仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=200&status=ACTIVE&warehouseType=OVERSEAS" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5284de88-e568-482c-9280-acde9b16c2f7, e0d081e5-1f5e-46da-ad34-d36ede8a7dbf", + "traceId": "6a2fba390ce849d999cb33112c28972e", + "evidence": "", + "checkedAt": "2026-08-08T05:09:37.981Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "国内起运仓和目的海外仓均精确映射", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=200&status=ACTIVE&warehouseType=OVERSEAS" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5284de88-e568-482c-9280-acde9b16c2f7, e0d081e5-1f5e-46da-ad34-d36ede8a7dbf", + "traceId": "6a2fba390ce849d999cb33112c28972e", + "evidence": "origins=CN-DONGGUAN-01->193000000000200002,CN-YIWU-01->193000000000200001, overseas=纽约仓->193000000000200004,洛杉矶仓->193000000000200003, missing=none", + "checkedAt": "2026-08-08T05:09:37.982Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "确认仓库映射并立即生效", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books/2085956560252088321/publish" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "30548e73-4672-4df6-b1d5-b12f7395d007, 782bd020-ff2f-4f59-a817-acc5c08898e0", + "traceId": "c0114d7fa7e64caeab48b2519839574b", + "evidence": "versionId=2085956560252088321, originMappings=2, overseasMappings=2", + "checkedAt": "2026-08-08T05:09:39.865Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "发布后价格版本为 ACTIVE 且无阻断", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books/2085956560252088321/publish" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "30548e73-4672-4df6-b1d5-b12f7395d007, 782bd020-ff2f-4f59-a817-acc5c08898e0", + "traceId": "c0114d7fa7e64caeab48b2519839574b", + "evidence": "status=ACTIVE, blocking=0, publishedAt=2026-08-08T13:09:38.726, channels=15, rates=2157", + "checkedAt": "2026-08-08T05:09:39.865Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "发布后回查当前生效和历史版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "cc9f427f-ee56-4415-ade9-801fbca71c85, 3c540f98-4ff7-4b66-925c-fe1ed8b8e1d9", + "traceId": "c8eec8ab1b4e4d4bbfc99db1bb5b260d", + "evidence": "", + "checkedAt": "2026-08-08T05:09:39.902Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "始终只有一份当前生效版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "cc9f427f-ee56-4415-ade9-801fbca71c85, 3c540f98-4ff7-4b66-925c-fe1ed8b8e1d9", + "traceId": "c8eec8ab1b4e4d4bbfc99db1bb5b260d", + "evidence": "active=2085956560252088321", + "checkedAt": "2026-08-08T05:09:39.902Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "上一生效版本已保留为历史版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "cc9f427f-ee56-4415-ade9-801fbca71c85, 3c540f98-4ff7-4b66-925c-fe1ed8b8e1d9", + "traceId": "c8eec8ab1b4e4d4bbfc99db1bb5b260d", + "evidence": "previous=2085930794353209345, superseded=true", + "checkedAt": "2026-08-08T05:09:39.902Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "查询当前生效价格版本详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books/2085956560252088321" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "cf168da7-0c3d-4ced-b3ac-ef3947a43b46, 18c9cac4-cb9a-4162-84d8-09440836f4ca", + "traceId": "0a92c8a2b7a247d1a7b48517ef4dde7a", + "evidence": "", + "checkedAt": "2026-08-08T05:09:39.998Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "当前生效版本预览数据完整", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books/2085956560252088321" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "cf168da7-0c3d-4ced-b3ac-ef3947a43b46, 18c9cac4-cb9a-4162-84d8-09440836f4ca", + "traceId": "0a92c8a2b7a247d1a7b48517ef4dde7a", + "evidence": "status=ACTIVE, channels=15, rates=2157", + "checkedAt": "2026-08-08T05:09:39.998Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "已生效版本禁止重复发布", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books/2085956560252088321/publish" + }, + "http": 200, + "code": "A0409", + "message": "只有待确认上传记录可以确认并生效", + "requestId": "8aab10d9-79ab-4383-9c57-b4992da5da8a", + "traceId": "5c8540a58b644b938d7ddb0cd242ee27", + "evidence": "HTTP=200, code=A0409", + "checkedAt": "2026-08-08T05:09:40.030Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "重复发布被拒绝后回查版本状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "aec22aad-5d2d-4460-b127-93e91080320b, 597484d0-0183-4e05-965a-934a8c532d38", + "traceId": "6e176ef9f0434f7fb496d4842f76063a", + "evidence": "", + "checkedAt": "2026-08-08T05:09:40.064Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "重复发布未改变唯一生效版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "aec22aad-5d2d-4460-b127-93e91080320b, 597484d0-0183-4e05-965a-934a8c532d38", + "traceId": "6e176ef9f0434f7fb496d4842f76063a", + "evidence": "active=2085956560252088321", + "checkedAt": "2026-08-08T05:09:40.064Z" + }, + { + "module": "downloads", + "scenario": null, + "name": "创建客户列表导出任务", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/export-tasks" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "83a548c3-dab8-44b2-bce9-25fd7ad58634, 66587e84-9a94-4452-b20d-9e4db1872bab", + "traceId": "97a5879d1bda4da69909002f9a7b7cae", + "evidence": "", + "checkedAt": "2026-08-08T05:09:40.147Z" + }, + { + "module": "downloads", + "scenario": null, + "name": "导出任务创建字段正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/export-tasks" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "83a548c3-dab8-44b2-bce9-25fd7ad58634, 66587e84-9a94-4452-b20d-9e4db1872bab", + "traceId": "97a5879d1bda4da69909002f9a7b7cae", + "evidence": "taskId=2085956583461289986, status=PENDING", + "checkedAt": "2026-08-08T05:09:40.147Z" + }, + { + "module": "downloads", + "scenario": null, + "name": "查询下载中心任务列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=20&exportType=CUSTOMER_LIST" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "72f6f84f-45c4-46f0-ae3f-1896097b7d60, 3155b44a-9b26-4051-9d5d-362469a61264", + "traceId": "3a6ffc0a58744e449f7132ecb4332bd5", + "evidence": "", + "checkedAt": "2026-08-08T05:09:40.176Z" + }, + { + "module": "downloads", + "scenario": null, + "name": "下载中心列表包含新任务", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=20&exportType=CUSTOMER_LIST" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "72f6f84f-45c4-46f0-ae3f-1896097b7d60, 3155b44a-9b26-4051-9d5d-362469a61264", + "traceId": "3a6ffc0a58744e449f7132ecb4332bd5", + "evidence": "records=7", + "checkedAt": "2026-08-08T05:09:40.176Z" + }, + { + "module": "downloads", + "scenario": null, + "name": "轮询导出任务直到终态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks/2085956583461289986" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a112df1e-53f3-4869-8536-8b9c828825a0, fb78a492-355d-4a25-a1ae-f2eec49d28fd", + "traceId": "ca971efde51b46a89249c6a7c0401a68", + "evidence": "status=SUCCEEDED, processedRows=0", + "checkedAt": "2026-08-08T05:09:46.355Z" + }, + { + "module": "downloads", + "scenario": null, + "name": "查询导出任务详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks/2085956583461289986" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3a670311-a0b7-48bd-a196-3f19c01234e1, 49d7755a-cb8a-41bd-9958-2487db105a71", + "traceId": "0d28640fe7c14ce08a4c5c4ba4654473", + "evidence": "", + "checkedAt": "2026-08-08T05:09:46.393Z" + }, + { + "module": "downloads", + "scenario": null, + "name": "导出详情行数和文件元数据正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks/2085956583461289986" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3a670311-a0b7-48bd-a196-3f19c01234e1, 49d7755a-cb8a-41bd-9958-2487db105a71", + "traceId": "0d28640fe7c14ce08a4c5c4ba4654473", + "evidence": "processedRows=0, sizeBytes=4067", + "checkedAt": "2026-08-08T05:09:46.393Z" + }, + { + "module": "downloads", + "scenario": null, + "name": "下载并校验客户列表 XLSX", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks/2085956583461289986/download" + }, + "http": 200, + "code": null, + "message": "4067 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "154ed6b1-5eed-462e-9259-7d6f058d400d, ecf51f4a-6c24-49f3-b438-54b1183a0d41", + "traceId": "ed312a504fc8459a997d80dd0a626715", + "evidence": "bytes=4067, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "checkedAt": "2026-08-08T05:09:46.416Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "仅选择带本轮测试标记的可编辑入库单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085956557911666689?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "019f9eb4-fa21-4e27-aedb-ad563a378c58, 0b24a0ac-81e3-4b85-94be-6868a4e33f90", + "traceId": "0ee7df3b23fc45c587a9dcbedab9b340", + "evidence": "tenantId=10001, inboundId=2085956557911666689, status=WAIT_MEASURE", + "checkedAt": "2026-08-08T05:09:46.462Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "读取 OCR 测试前重量工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085956557911666689/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f1b83b23-9109-41b9-a5db-216a4fb17c2d, 92206c6b-7533-4df7-84fc-7841edcf3b69", + "traceId": "b17b7fd979234406823d34b96ebdf1e0", + "evidence": "inboundId=2085956557911666689", + "checkedAt": "2026-08-08T05:09:46.505Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "测试入库单身份与基线可追踪", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085956557911666689/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f1b83b23-9109-41b9-a5db-216a4fb17c2d, 92206c6b-7533-4df7-84fc-7841edcf3b69", + "traceId": "b17b7fd979234406823d34b96ebdf1e0", + "evidence": "existingResults=0, baselineWeight=null", + "checkedAt": "2026-08-08T05:09:46.505Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "未认证请求不能上传称重图片", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085956557911666689" + }, + "http": 401, + "code": "A0401", + "message": "未登录或令牌已失效", + "requestId": "565e864d-535", + "traceId": null, + "evidence": "HTTP=401, code=A0401", + "checkedAt": "2026-08-08T05:09:46.529Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "非图片类型被拒绝且不模拟成功", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085956557911666689" + }, + "http": 200, + "code": "A0400", + "message": "称重图片仅支持JPG、PNG、BMP", + "requestId": "eae59aa7-6bf9-474d-b7aa-0beda394540d", + "traceId": "8869796c41034b29a8c3a4d34a480a59", + "evidence": "HTTP=200, code=A0400", + "checkedAt": "2026-08-08T05:09:46.568Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "超过5MB图片被拒绝", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085956557911666689" + }, + "http": 200, + "code": "A0400", + "message": "称重图片不能超过5MB", + "requestId": "7b8d3b78-b2df-4d61-b81d-8938008a0f84", + "traceId": "70c59129587c4ffb842aff15784b9938", + "evidence": "HTTP=200, code=A0400", + "checkedAt": "2026-08-08T05:09:47.790Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "上传称重图片并执行 OCR", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085956557911666689" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "33036e68-bb75-4d54-981d-67897e6ad944, 259177f5-d715-4011-b893-30ba82959cc5", + "traceId": "b4e7686127074f4c97be6929828b2bd5", + "evidence": "file=orig_1cf27695-b2c3-44b3-98e3-c0be8b80f79a.JPG, size=3701469", + "checkedAt": "2026-08-08T05:09:49.706Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "上传响应保持文件 ID 字符串契约", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085956557911666689" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "33036e68-bb75-4d54-981d-67897e6ad944, 259177f5-d715-4011-b893-30ba82959cc5", + "traceId": "b4e7686127074f4c97be6929828b2bd5", + "evidence": "fileIdType=string, status=RECOGNIZED", + "checkedAt": "2026-08-08T05:09:49.706Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "OCR 上传响应字段完整且置信度受限", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085956557911666689" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "33036e68-bb75-4d54-981d-67897e6ad944, 259177f5-d715-4011-b893-30ba82959cc5", + "traceId": "b4e7686127074f4c97be6929828b2bd5", + "evidence": "status=RECOGNIZED, hasWeight=true, confidence=0.50972", + "checkedAt": "2026-08-08T05:09:49.706Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "重试当前称重图片 OCR", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085956557911666689/2085956617489678337/recognize" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ca35e518-b117-434c-82d2-d1aee46177ec, 05727c76-814b-461f-9ba0-aaaf76d0afdf", + "traceId": "93b3718f8458472d85fc6b3447e68251", + "evidence": "fileId=2085956617489678337", + "checkedAt": "2026-08-08T05:09:50.601Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "OCR 重试保持文件身份并返回识别契约", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085956557911666689/2085956617489678337/recognize" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ca35e518-b117-434c-82d2-d1aee46177ec, 05727c76-814b-461f-9ba0-aaaf76d0afdf", + "traceId": "93b3718f8458472d85fc6b3447e68251", + "evidence": "sameFile=true, status=RECOGNIZED", + "checkedAt": "2026-08-08T05:09:50.601Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "登记 OCR 原值", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085956557911666689/weight-results?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d938274b-246c-4c43-8904-22249f680280, e729325d-9148-4c35-87cd-d59d2ad156a6", + "traceId": "a4b12a000b194ed48df8bc35db2803ae", + "evidence": "fileId=2085956617489678337", + "checkedAt": "2026-08-08T05:09:50.649Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "重量结果 ID、文件 ID 和初始版本契约正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085956557911666689/weight-results?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d938274b-246c-4c43-8904-22249f680280, e729325d-9148-4c35-87cd-d59d2ad156a6", + "traceId": "a4b12a000b194ed48df8bc35db2803ae", + "evidence": "resultIdType=string, fileIdType=string, version=0", + "checkedAt": "2026-08-08T05:09:50.649Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "鉴权读取原始称重图片", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/measurements/10001/2085956557911666689/2085956617489678337" + }, + "http": 200, + "code": null, + "message": "3701469 bytes (image/jpeg)", + "requestId": "2001b114-358c-408d-b88c-d63d3664cb95, dc1a6d90-33a8-4514-8c3f-3c456b7cb60c", + "traceId": "a9698e95feb74affb0db9bb77aa4af5e", + "evidence": "contentType=image/jpeg, bytes=3701469", + "checkedAt": "2026-08-08T05:09:50.798Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "缩略图返回受限尺寸 JPEG", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/measurements/10001/2085956557911666689/2085956617489678337/thumbnail" + }, + "http": 200, + "code": null, + "message": "18677 bytes (image/jpeg)", + "requestId": "312d5407-98fb-4dd5-9de1-c503c0415d87, 9a02f549-b395-4e15-869c-17a97ca2e6e7", + "traceId": "5deb1e0759024c8eb782cb9c76dac167", + "evidence": "contentType=image/jpeg, bytes=18677, dimensions=240x320", + "checkedAt": "2026-08-08T05:09:51.203Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "登记后回查 OCR 重量结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085956557911666689/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "800cc41c-ca35-432d-b88f-cb0a4887132a, 49abaae6-2149-4dbf-ba70-6172d2424b9c", + "traceId": "bd7be4fd00c04b018d134a48fd3b4e07", + "evidence": "inboundId=2085956557911666689", + "checkedAt": "2026-08-08T05:09:51.242Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "工作区保留本轮 OCR 原值且未覆盖历史结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085956557911666689/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "800cc41c-ca35-432d-b88f-cb0a4887132a, 49abaae6-2149-4dbf-ba70-6172d2424b9c", + "traceId": "bd7be4fd00c04b018d134a48fd3b4e07", + "evidence": "resultFound=true, baselineCount=0, currentCount=1", + "checkedAt": "2026-08-08T05:09:51.242Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "旧版本确认返回并发冲突", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085956557911666689/weight-results/2085956627570667521/confirm?tenantId=10001" + }, + "http": 200, + "code": "A0409", + "message": "数据版本已变化,请刷新后重试", + "requestId": "0a740b2d-e71b-4caf-81c9-8c0f40b8478f", + "traceId": "093f2934329c47a5aa2b4bae1ee81a17", + "evidence": "HTTP=200, code=A0409", + "checkedAt": "2026-08-08T05:09:51.279Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "确认 OCR 重量并计入实际总毛重", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085956557911666689/weight-results/2085956627570667521/confirm?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c2b87896-5c72-4baf-88d3-cf8ca6df6910, fe4ad164-5ee6-4807-a3b4-7a3d8b37db8b", + "traceId": "60b154b0e3cd4942b9e75ee92035c251", + "evidence": "usedOriginal=true", + "checkedAt": "2026-08-08T05:09:51.335Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "确认结果状态、版本和最终KG正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085956557911666689/weight-results/2085956627570667521/confirm?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c2b87896-5c72-4baf-88d3-cf8ca6df6910, fe4ad164-5ee6-4807-a3b4-7a3d8b37db8b", + "traceId": "60b154b0e3cd4942b9e75ee92035c251", + "evidence": "status=CONFIRMED, version=1, finalKg=285.5", + "checkedAt": "2026-08-08T05:09:51.335Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "确认后回查实际总毛重", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085956557911666689/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "edaed3ce-cb73-434a-81ae-ab7c4d625564, 26c0ab2a-3b15-476e-b1c0-cbe294537711", + "traceId": "5d68c5d81c85406a89ceb2b2111ac3a8", + "evidence": "inboundId=2085956557911666689", + "checkedAt": "2026-08-08T05:09:51.365Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "确认后实际总毛重按服务端结果重算", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085956557911666689/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "edaed3ce-cb73-434a-81ae-ab7c4d625564, 26c0ab2a-3b15-476e-b1c0-cbe294537711", + "traceId": "5d68c5d81c85406a89ceb2b2111ac3a8", + "evidence": "baseline=null, added=285.5, actual=285.5", + "checkedAt": "2026-08-08T05:09:51.365Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "旧版本删除返回并发冲突", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "DELETE", + "path": "/api/platform/v1/first-leg/inbounds/2085956557911666689/weight-results/2085956627570667521?tenantId=10001&version=0" + }, + "http": 200, + "code": "A0409", + "message": "数据版本已变化,请刷新后重试", + "requestId": "4fc23732-585e-48a2-8019-7dacb424fa40", + "traceId": "c8265fcd386a4d56bfbdd4e99113c3a0", + "evidence": "HTTP=200, code=A0409", + "checkedAt": "2026-08-08T05:09:51.399Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除本轮已确认图片及重量结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "DELETE", + "path": "/api/platform/v1/first-leg/inbounds/2085956557911666689/weight-results/2085956627570667521?tenantId=10001&version=1" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "de4a1406-382e-4ec6-8bb5-063f1855866b, 08d927ed-1e50-4e5d-8dfd-40f65edc5dca", + "traceId": "aab66b0a34454e1b9aeb7f0afbd7c126", + "evidence": "resultId=2085956627570667521, version=1", + "checkedAt": "2026-08-08T05:09:51.450Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除后回查重量工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085956557911666689/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f8896410-cdab-4bc6-a2ea-b26199242f61, 8311a6d9-d7ca-4829-a000-03c0e1dbb388", + "traceId": "0962249dd8364fdb94f4b2aa0eadd411", + "evidence": "inboundId=2085956557911666689", + "checkedAt": "2026-08-08T05:09:51.476Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除后结果消失且总毛重恢复基线", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085956557911666689/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f8896410-cdab-4bc6-a2ea-b26199242f61, 8311a6d9-d7ca-4829-a000-03c0e1dbb388", + "traceId": "0962249dd8364fdb94f4b2aa0eadd411", + "evidence": "resultMissing=true, baseline=null, actual=null", + "checkedAt": "2026-08-08T05:09:51.476Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除结果后原始图片不可再读取", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/measurements/10001/2085956557911666689/2085956617489678337" + }, + "http": 200, + "code": "A0404", + "message": "称重图片不存在", + "requestId": "a79f1687-7946-4544-83df-8a8b3bddb798", + "traceId": "bb8bec0475dc44a3abaafdf92e31168e", + "evidence": "HTTP=200, code=A0404", + "checkedAt": "2026-08-08T05:09:51.503Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "上传称重图片并执行 OCR", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085956557911666689" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1d4a701b-f3c7-4f06-a58b-94c3c72053cd, 64160b04-b47b-4d4f-ac80-7c1d361ad772", + "traceId": "f116cebee1bf4755ae4a6907ac5795b4", + "evidence": "file=orig_1cf27695-b2c3-44b3-98e3-c0be8b80f79a.JPG, size=3701469", + "checkedAt": "2026-08-08T05:09:52.962Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "上传响应保持文件 ID 字符串契约", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085956557911666689" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1d4a701b-f3c7-4f06-a58b-94c3c72053cd, 64160b04-b47b-4d4f-ac80-7c1d361ad772", + "traceId": "f116cebee1bf4755ae4a6907ac5795b4", + "evidence": "fileIdType=string, status=RECOGNIZED", + "checkedAt": "2026-08-08T05:09:52.962Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "OCR 上传响应字段完整且置信度受限", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085956557911666689" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1d4a701b-f3c7-4f06-a58b-94c3c72053cd, 64160b04-b47b-4d4f-ac80-7c1d361ad772", + "traceId": "f116cebee1bf4755ae4a6907ac5795b4", + "evidence": "status=RECOGNIZED, hasWeight=true, confidence=0.50972", + "checkedAt": "2026-08-08T05:09:52.962Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "登记人工录入重量结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085956557911666689/weight-results?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d1ece0d4-3196-48d9-af74-e3e0949be976, 401bfa9b-fc62-4972-b992-e2413f8bda13", + "traceId": "b5d8f7b1752940e98486db514959601d", + "evidence": "fileId=2085956633914572802", + "checkedAt": "2026-08-08T05:09:52.994Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "重量结果 ID、文件 ID 和初始版本契约正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085956557911666689/weight-results?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d1ece0d4-3196-48d9-af74-e3e0949be976, 401bfa9b-fc62-4972-b992-e2413f8bda13", + "traceId": "b5d8f7b1752940e98486db514959601d", + "evidence": "resultIdType=string, fileIdType=string, version=0", + "checkedAt": "2026-08-08T05:09:52.994Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "零重量确认被拒绝", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085956557911666689/weight-results/2085956637414699009/confirm?tenantId=10001" + }, + "http": 200, + "code": "A0422", + "message": "adjustedWeightValue: must be greater than or equal to 0.001", + "requestId": "16bcd622-0e67-49ce-bd1a-b0096f5f5e32", + "traceId": "4db5b1b53152473cabbae7490dbb15e2", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T05:09:53.074Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "零重量确认被拒绝后回查工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085956557911666689/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1af947dc-9c5e-465c-b682-35b46e056651, aff174a4-4829-4a22-864b-2d769f077d1c", + "traceId": "ea0798266e9845e0905e1cf870cd54e3", + "evidence": "inboundId=2085956557911666689", + "checkedAt": "2026-08-08T05:09:53.097Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "零重量确认被拒绝未改变重量结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085956557911666689/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1af947dc-9c5e-465c-b682-35b46e056651, aff174a4-4829-4a22-864b-2d769f077d1c", + "traceId": "ea0798266e9845e0905e1cf870cd54e3", + "evidence": "version=0, status=NEEDS_MANUAL", + "checkedAt": "2026-08-08T05:09:53.097Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "负重量确认被拒绝", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085956557911666689/weight-results/2085956637414699009/confirm?tenantId=10001" + }, + "http": 200, + "code": "A0422", + "message": "adjustedWeightValue: must be greater than or equal to 0.001", + "requestId": "ce9f9d1d-4a0c-4b94-9ca4-8a2c814d3b4e", + "traceId": "5dc86bd2e7f74b2e8116b2edce30de85", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T05:09:53.127Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "负重量确认被拒绝后回查工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085956557911666689/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "024edb07-9568-4d0c-a52a-d232b6e998cb, 8969add0-6e26-4012-8648-285e31a2af54", + "traceId": "712fa1ea19b2483e989b718b105ebb59", + "evidence": "inboundId=2085956557911666689", + "checkedAt": "2026-08-08T05:09:53.158Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "负重量确认被拒绝未改变重量结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085956557911666689/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "024edb07-9568-4d0c-a52a-d232b6e998cb, 8969add0-6e26-4012-8648-285e31a2af54", + "traceId": "712fa1ea19b2483e989b718b105ebb59", + "evidence": "version=0, status=NEEDS_MANUAL", + "checkedAt": "2026-08-08T05:09:53.158Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "LB 0.001换算为零后被拒绝", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085956557911666689/weight-results/2085956637414699009/confirm?tenantId=10001" + }, + "http": 200, + "code": "A0422", + "message": "换算后重量不能小于 0.001 KG", + "requestId": "420ef035-fc71-4e2e-9fea-ac9306914d15", + "traceId": "d664226b02ff4fd6a5afdf4cfdd82118", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T05:09:53.191Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "LB 0.001换算为零后被拒绝后回查工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085956557911666689/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1f665c18-b8c3-4c89-a584-0a74f3bdb6da, 73f6ec75-eec0-4075-8749-e6516c000523", + "traceId": "c88943a0873049f4bef244e13ae4e1e0", + "evidence": "inboundId=2085956557911666689", + "checkedAt": "2026-08-08T05:09:53.219Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "LB 0.001换算为零后被拒绝未改变重量结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085956557911666689/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1f665c18-b8c3-4c89-a584-0a74f3bdb6da, 73f6ec75-eec0-4075-8749-e6516c000523", + "traceId": "c88943a0873049f4bef244e13ae4e1e0", + "evidence": "version=0, status=NEEDS_MANUAL", + "checkedAt": "2026-08-08T05:09:53.219Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "超出15位整数重量被拒绝", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085956557911666689/weight-results/2085956637414699009/confirm?tenantId=10001" + }, + "http": 200, + "code": "A0422", + "message": "adjustedWeightValue: numeric value out of bounds (<15 digits>.<3 digits> expected)", + "requestId": "629c3486-c90e-4b60-bcd6-30f1abf786e7", + "traceId": "2e5105e4080146c5934b630cdac539da", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T05:09:53.251Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "超出15位整数重量被拒绝后回查工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085956557911666689/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e3b01379-b734-4cde-839e-7b9d114bfc35, 222c40c9-25a7-4e52-8657-23881efa4c3e", + "traceId": "8ce3b1e286eb43bcadee35cd97348d4a", + "evidence": "inboundId=2085956557911666689", + "checkedAt": "2026-08-08T05:09:53.275Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "超出15位整数重量被拒绝未改变重量结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085956557911666689/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e3b01379-b734-4cde-839e-7b9d114bfc35, 222c40c9-25a7-4e52-8657-23881efa4c3e", + "traceId": "8ce3b1e286eb43bcadee35cd97348d4a", + "evidence": "version=0, status=NEEDS_MANUAL", + "checkedAt": "2026-08-08T05:09:53.275Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "人工改重与确认原子完成", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085956557911666689/weight-results/2085956637414699009/confirm?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8ed33aef-428a-4838-868f-8da65342c4ca, c47ad8f8-4eea-4b9c-b040-e86de7a00da6", + "traceId": "7efa231371f4461ea698f2cacf59db9c", + "evidence": "adjusted=10.125 LB", + "checkedAt": "2026-08-08T05:09:53.313Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "LB 人工改重保留输入并正确换算最终KG", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085956557911666689/weight-results/2085956637414699009/confirm?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8ed33aef-428a-4838-868f-8da65342c4ca, c47ad8f8-4eea-4b9c-b040-e86de7a00da6", + "traceId": "7efa231371f4461ea698f2cacf59db9c", + "evidence": "adjusted=10.125 LB, finalKg=4.593, expectedKg=4.593", + "checkedAt": "2026-08-08T05:09:53.313Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除本轮人工改重图片及结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "DELETE", + "path": "/api/platform/v1/first-leg/inbounds/2085956557911666689/weight-results/2085956637414699009?tenantId=10001&version=2" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "240dd231-f2ae-409b-baa9-e32c89884c67, 2b2703b1-8718-4fd1-86af-a3c36da368de", + "traceId": "f2cae1cb57e64699b9a06b69948b47cd", + "evidence": "resultId=2085956637414699009, version=2", + "checkedAt": "2026-08-08T05:09:53.361Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除后回查重量工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085956557911666689/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2c879989-0269-43e9-98d3-8fb869a76048, 09e3a93e-f027-4ec0-ad1d-b974c78cea64", + "traceId": "2913daccb5104b70b100fd0558c062ed", + "evidence": "inboundId=2085956557911666689", + "checkedAt": "2026-08-08T05:09:53.393Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除后结果消失且总毛重恢复基线", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085956557911666689/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2c879989-0269-43e9-98d3-8fb869a76048, 09e3a93e-f027-4ec0-ad1d-b974c78cea64", + "traceId": "2913daccb5104b70b100fd0558c062ed", + "evidence": "resultMissing=true, baseline=null, actual=null", + "checkedAt": "2026-08-08T05:09:53.393Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除结果后原始图片不可再读取", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/measurements/10001/2085956557911666689/2085956633914572802" + }, + "http": 200, + "code": "A0404", + "message": "称重图片不存在", + "requestId": "c3b7d7ae-865f-4e5d-8582-ef7fdf139151", + "traceId": "ed501ab85de0479ebe45003e30379db8", + "evidence": "HTTP=200, code=A0404", + "checkedAt": "2026-08-08T05:09:53.415Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "最终清理后回查重量工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085956557911666689/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "51aa00fd-4a57-4c55-bf4f-fdb23b35d9a0, 57224842-5e30-4564-a014-fce8f716771d", + "traceId": "cfcb25eba6c548dc966a21662bfbac76", + "evidence": "inboundId=2085956557911666689", + "checkedAt": "2026-08-08T05:09:53.456Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "仅清理本轮结果且订单总毛重恢复运行前基线", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085956557911666689/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "51aa00fd-4a57-4c55-bf4f-fdb23b35d9a0, 57224842-5e30-4564-a014-fce8f716771d", + "traceId": "cfcb25eba6c548dc966a21662bfbac76", + "evidence": "leftovers=0, baseline=null, actual=null", + "checkedAt": "2026-08-08T05:09:53.457Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "查询隔离入库单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085956557911666689?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f6213350-2cf6-435e-b93d-085e80c5ded3, b757ab7a-13e5-4691-aeed-af314c1a3c42", + "traceId": "59b2d3e9364f4929bd392328b0adc829", + "evidence": "inboundId=2085956557911666689, tenantId=10001", + "checkedAt": "2026-08-08T05:09:53.486Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "隔离入库单身份与可测量状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085956557911666689?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f6213350-2cf6-435e-b93d-085e80c5ded3, b757ab7a-13e5-4691-aeed-af314c1a3c42", + "traceId": "59b2d3e9364f4929bd392328b0adc829", + "evidence": "identity=true, status=MEASURING", + "checkedAt": "2026-08-08T05:09:53.486Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "生成箱唛 PDF 并冻结稳定箱码", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/inbounds/2085956557911666689/carton-label-pdf?tenantId=10001" + }, + "http": 200, + "code": null, + "message": "13920 bytes (application/pdf)", + "requestId": "0fed5b6e-6677-400d-a3ea-6b51d9cea0b9, eab7cc1a-d340-4687-a366-def9790c81b4, a6728296-ef4c-4f0a-9084-e5fe77398548", + "traceId": "c33369a923204e759fe738e7b08ab587, d40ef67e1a114efdab36ed2888b54737", + "evidence": "contentType=application/pdf, bytes=13920", + "checkedAt": "2026-08-08T05:09:53.628Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "首次打印后回查冻结箱数", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085956557911666689?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2dc47fa1-14c8-48cc-8710-962b30d11ae3, 81391a98-e4a5-409d-89b1-702a120df320", + "traceId": "11f74629744b4200a163121d0027b5ac", + "evidence": "", + "checkedAt": "2026-08-08T05:09:53.662Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "首次打印按订单货物冻结原始总箱数", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085956557911666689?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2dc47fa1-14c8-48cc-8710-962b30d11ae3, 81391a98-e4a5-409d-89b1-702a120df320", + "traceId": "11f74629744b4200a163121d0027b5ac", + "evidence": "inboundCodeStable=true, totalPackageCount=4", + "checkedAt": "2026-08-08T05:09:53.662Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "重复整单打印复用已冻结箱码映射", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/inbounds/2085956557911666689/carton-label-pdf?tenantId=10001" + }, + "http": 200, + "code": null, + "message": "13920 bytes (application/pdf)", + "requestId": "b50802c4-ee4d-44ca-9711-a6f230873164, 41e0b959-dc60-47d6-bbb1-1244fc5a000f, 712dc21b-d0c8-498d-8ed8-6e3b08caca6e", + "traceId": "21e8bc071c1644908fe02932b9e01784, 94fed33545bf4db1b5984e2d8b2917f7", + "evidence": "boxCode=RK-2085956552557658114#4-1, contentType=application/pdf, bytes=13920", + "checkedAt": "2026-08-08T05:09:53.773Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "指定第1箱补打复用已冻结箱码映射", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/inbounds/2085956557911666689/carton-label-pdf?tenantId=10001&cartonIndex=1" + }, + "http": 200, + "code": null, + "message": "7693 bytes (application/pdf)", + "requestId": "2c755026-8ae9-4b7b-8b0e-ac3060905a1b, 1c7047bf-4a2e-406a-851b-f2bf6975a8a1, 7f1069e5-8bdc-4003-b93e-b3b41ed8b107", + "traceId": "7b2ba710f42644f4a5f8447c803c795d, d5ec18dc0dcc405eb406a923c00b4f83", + "evidence": "boxCode=RK-2085956552557658114#4-1, cartonIndex=1, contentType=application/pdf, bytes=7693", + "checkedAt": "2026-08-08T05:09:53.882Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "模拟墨家首次扫描单箱", + "passed": false, + "deploymentBlocker": true, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085956557911666689/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "A0409", + "message": "测量已提交,设备不能新增或覆盖数据", + "requestId": "e48b660b-25bd-4f3c-8200-192dce2556ff", + "traceId": "792b4db2e51c4b90ac159ae3f141c730", + "evidence": "boxCode=RK-2085956552557658114#4-1, machineNo=MJ-ADMIN-E2E-01", + "checkedAt": "2026-08-08T05:09:53.920Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "首次扫描新增一条且默认代表1箱", + "passed": false, + "deploymentBlocker": true, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085956557911666689/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "A0409", + "message": "测量已提交,设备不能新增或覆盖数据", + "requestId": "e48b660b-25bd-4f3c-8200-192dce2556ff", + "traceId": "792b4db2e51c4b90ac159ae3f141c730", + "evidence": "created=undefined, confirmedPackageCount=missing", + "checkedAt": "2026-08-08T05:09:53.920Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "重复打印及指定箱补打后原箱码仍可解析", + "passed": false, + "deploymentBlocker": true, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085956557911666689/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "A0409", + "message": "测量已提交,设备不能新增或覆盖数据", + "requestId": "e48b660b-25bd-4f3c-8200-192dce2556ff", + "traceId": "792b4db2e51c4b90ac159ae3f141c730", + "evidence": "boxCodeStable=false, resolvedInboundId=2085956557911666689", + "checkedAt": "2026-08-08T05:09:53.920Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "order-service 状态响应使用统一成功体", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2f1e61fa-df5c-4ec8-9170-8462cd26941a, 03bfd003-3541-4132-9050-f6ebd3ddd434", + "traceId": "45d336b0a7104c57bb3c8eb234adffa9", + "evidence": "HTTP=200, code=200", + "checkedAt": "2026-08-08T05:09:53.952Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "order-service 状态字段完整且 readiness 语义明确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2f1e61fa-df5c-4ec8-9170-8462cd26941a, 03bfd003-3541-4132-9050-f6ebd3ddd434", + "traceId": "45d336b0a7104c57bb3c8eb234adffa9", + "evidence": "service=order-service, status=UP, readiness=UP", + "checkedAt": "2026-08-08T05:09:53.952Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "firstleg-service 状态响应使用统一成功体", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8c193995-225a-4fad-b741-732fe80c4067, 0c075069-d414-4234-b301-8f5529f926f1", + "traceId": "fb820aa112b045ffb42e5213fd13eef9", + "evidence": "HTTP=200, code=200", + "checkedAt": "2026-08-08T05:09:53.982Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "firstleg-service 状态字段完整且 readiness 语义明确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8c193995-225a-4fad-b741-732fe80c4067, 0c075069-d414-4234-b301-8f5529f926f1", + "traceId": "fb820aa112b045ffb42e5213fd13eef9", + "evidence": "service=firstleg-service, status=UP, readiness=UP", + "checkedAt": "2026-08-08T05:09:53.982Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "file-service 状态响应使用统一成功体", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e2af5588-7fc3-4d5e-bad1-485b2daecf6c, 95fb70bf-4516-427e-ba98-e00e96de45a3", + "traceId": "61296c904c5444bc903ac3d3dcc4524f", + "evidence": "HTTP=200, code=200", + "checkedAt": "2026-08-08T05:09:54.011Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "file-service 状态字段完整且 readiness 语义明确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e2af5588-7fc3-4d5e-bad1-485b2daecf6c, 95fb70bf-4516-427e-ba98-e00e96de45a3", + "traceId": "61296c904c5444bc903ac3d3dcc4524f", + "evidence": "service=file-service, status=UP, readiness=UP", + "checkedAt": "2026-08-08T05:09:54.011Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "warehouse-service 状态响应使用统一成功体", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouses/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4eda3a9e-ab23-43e3-9ef0-5669b6e63482, 7d3ff1c4-84cd-4840-8954-b805935b608b", + "traceId": "01e3e024c59d4bb5aac7845e1f8fdb8d", + "evidence": "HTTP=200, code=200", + "checkedAt": "2026-08-08T05:09:54.049Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "warehouse-service 状态字段完整且 readiness 语义明确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouses/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4eda3a9e-ab23-43e3-9ef0-5669b6e63482, 7d3ff1c4-84cd-4840-8954-b805935b608b", + "traceId": "01e3e024c59d4bb5aac7845e1f8fdb8d", + "evidence": "service=warehouse-service, status=UP, readiness=UP", + "checkedAt": "2026-08-08T05:09:54.050Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "平台接口未携带令牌返回 401", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/status" + }, + "http": 401, + "code": "A0401", + "message": "未登录或令牌已失效", + "requestId": "565e864d-577", + "traceId": null, + "evidence": "HTTP=401, code=A0401", + "checkedAt": "2026-08-08T05:09:54.070Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "平台接口伪造令牌返回 401", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/status" + }, + "http": 401, + "code": "A0401", + "message": "未登录或令牌已失效", + "requestId": "5b4ddc65-578", + "traceId": null, + "evidence": "HTTP=401, code=A0401", + "checkedAt": "2026-08-08T05:09:54.099Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "未认证请求不返回业务成功码", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/status" + }, + "http": 401, + "code": "A0401", + "message": "未登录或令牌已失效", + "requestId": "565e864d-579", + "traceId": null, + "evidence": "HTTP=401, code=A0401", + "checkedAt": "2026-08-08T05:09:54.115Z" + }, + { + "module": "supplemental", + "scenario": "master-data-readonly", + "name": "仓库分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=5&status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d6c74dc1-21e0-4a99-a0f7-a90d02488292, c81b4dc1-f582-4689-aa6f-2ee9f96d9ad1", + "traceId": "37bb90ec007e47218d3b3c0ba1c6adce", + "evidence": "path=/api/platform/v1/warehouse-admin?page=1&size=5&status=ACTIVE", + "checkedAt": "2026-08-08T05:09:54.145Z" + }, + { + "module": "supplemental", + "scenario": "master-data-readonly", + "name": "仓库分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=5&status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d6c74dc1-21e0-4a99-a0f7-a90d02488292, c81b4dc1-f582-4689-aa6f-2ee9f96d9ad1", + "traceId": "37bb90ec007e47218d3b3c0ba1c6adce", + "evidence": "records=5, current=1, size=5", + "checkedAt": "2026-08-08T05:09:54.145Z" + }, + { + "module": "supplemental", + "scenario": "master-data-readonly", + "name": "仓库筛选分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=5&tenantId=0&warehouseType=FBA" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6d3f69ad-33c6-4fe2-932e-47589b6fe4ce, bd55ce5a-72e6-4693-8d6a-d6670d6018e0", + "traceId": "290a930f1f2a4f64823c5fb78603a00e", + "evidence": "path=/api/platform/v1/warehouse-admin?page=1&size=5&tenantId=0&warehouseType=FBA", + "checkedAt": "2026-08-08T05:09:54.179Z" + }, + { + "module": "supplemental", + "scenario": "master-data-readonly", + "name": "仓库筛选分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=5&tenantId=0&warehouseType=FBA" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6d3f69ad-33c6-4fe2-932e-47589b6fe4ce, bd55ce5a-72e6-4693-8d6a-d6670d6018e0", + "traceId": "290a930f1f2a4f64823c5fb78603a00e", + "evidence": "records=5, current=1, size=5", + "checkedAt": "2026-08-08T05:09:54.179Z" + }, + { + "module": "supplemental", + "scenario": "master-data-readonly", + "name": "仓库非法状态安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=5&status=NOT_A_STATUS" + }, + "http": 200, + "code": "A0422", + "message": "status: must match \"ACTIVE|INACTIVE\"", + "requestId": "4c1d0429-ab49-4e8b-84fe-0e4f4369fbbd", + "traceId": "a324bb342ca844e19e46d0844086cea1", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T05:09:54.215Z" + }, + { + "module": "supplemental", + "scenario": "master-data-readonly", + "name": "仓库客户作用域安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=5&tenantId=10001" + }, + "http": 200, + "code": "A0400", + "message": "Platform resource scope must be 0 / 平台公共资源作用域必须为0", + "requestId": "d1963602-3483-4c32-b811-8af1db4f3203", + "traceId": "243f66515376412eaf4f4d0522812436", + "evidence": "HTTP=200, code=A0400", + "checkedAt": "2026-08-08T05:09:54.246Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "库位分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations?page=1&size=5&tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2bbe9470-8438-4560-bb8a-75128b5ca22e, 2c89ba91-5b38-4acc-9769-c153bfc1a3f5", + "traceId": "e46d97e94a8545eaac176280327e9a06", + "evidence": "path=/api/platform/v1/locations?page=1&size=5&tenantId=0", + "checkedAt": "2026-08-08T05:09:54.273Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "库位分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations?page=1&size=5&tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2bbe9470-8438-4560-bb8a-75128b5ca22e, 2c89ba91-5b38-4acc-9769-c153bfc1a3f5", + "traceId": "e46d97e94a8545eaac176280327e9a06", + "evidence": "records=3, current=1, size=5", + "checkedAt": "2026-08-08T05:09:54.273Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "托盘分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets?page=1&size=5&tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "62688fe5-aa26-4e2d-a93e-cd59177d0d18, 9f5eb44d-1959-4ad2-a938-1ac528621ab3", + "traceId": "63f2bf7321be4fd180e3269306ae32c5", + "evidence": "path=/api/platform/v1/pallets?page=1&size=5&tenantId=0", + "checkedAt": "2026-08-08T05:09:54.310Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "托盘分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets?page=1&size=5&tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "62688fe5-aa26-4e2d-a93e-cd59177d0d18, 9f5eb44d-1959-4ad2-a938-1ac528621ab3", + "traceId": "63f2bf7321be4fd180e3269306ae32c5", + "evidence": "records=3, current=1, size=5", + "checkedAt": "2026-08-08T05:09:54.311Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "库位仓库筛选分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations?page=1&size=5&tenantId=0&warehouseId=193000000000000001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "250d932f-499c-48c9-a13a-c7951f60f75f, cd7c583d-d956-43e6-8135-a5b2f5430e89", + "traceId": "e0d1e3159bd241e9b8e20f0967594d5a", + "evidence": "path=/api/platform/v1/locations?page=1&size=5&tenantId=0&warehouseId=193000000000000001", + "checkedAt": "2026-08-08T05:09:54.341Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "库位仓库筛选分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations?page=1&size=5&tenantId=0&warehouseId=193000000000000001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "250d932f-499c-48c9-a13a-c7951f60f75f, cd7c583d-d956-43e6-8135-a5b2f5430e89", + "traceId": "e0d1e3159bd241e9b8e20f0967594d5a", + "evidence": "records=0, current=1, size=5", + "checkedAt": "2026-08-08T05:09:54.341Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "托盘仓库筛选分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets?page=1&size=5&tenantId=0&warehouseId=193000000000000001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4bcc99c4-47e1-44cc-81be-099c141d8fe7, dd2b1287-1a5d-4797-8d7d-44979a3c7e63", + "traceId": "36a191ee74044717bf14268bc189fff5", + "evidence": "path=/api/platform/v1/pallets?page=1&size=5&tenantId=0&warehouseId=193000000000000001", + "checkedAt": "2026-08-08T05:09:54.372Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "托盘仓库筛选分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets?page=1&size=5&tenantId=0&warehouseId=193000000000000001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4bcc99c4-47e1-44cc-81be-099c141d8fe7, dd2b1287-1a5d-4797-8d7d-44979a3c7e63", + "traceId": "36a191ee74044717bf14268bc189fff5", + "evidence": "records=0, current=1, size=5", + "checkedAt": "2026-08-08T05:09:54.372Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "库位客户作用域安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations?page=1&size=5&tenantId=10001" + }, + "http": 200, + "code": "A0400", + "message": "平台公共资源作用域必须为0", + "requestId": "f6837c8c-5f9b-4817-aa78-ab445078e4eb", + "traceId": "10dc75c91464407596eba7fb5a36a8b8", + "evidence": "HTTP=200, code=A0400", + "checkedAt": "2026-08-08T05:09:54.390Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "托盘客户作用域安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets?page=1&size=5&tenantId=10001" + }, + "http": 200, + "code": "A0400", + "message": "平台公共资源作用域必须为0", + "requestId": "efdc21df-7ba8-47c7-adc0-723957392c46", + "traceId": "1dbf982ebf3249c5b8436221250c6dec", + "evidence": "HTTP=200, code=A0400", + "checkedAt": "2026-08-08T05:09:54.418Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "库位非法状态安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations?page=1&size=5&tenantId=0&status=ALLOCATED" + }, + "http": 200, + "code": "A0422", + "message": "status: must match \"^(AVAILABLE|RESERVED|OCCUPIED|DISABLED)$\"", + "requestId": "f22adf63-ed93-44c1-8b41-1ef8316b4986", + "traceId": "ae0c67cf92174293a8f1e1e56ea07c98", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T05:09:54.447Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "库位过期版本/不存在资源不泄露或误修改数据", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations/999999999999?tenantId=0&warehouseId=999999999999" + }, + "http": 200, + "code": "A0404", + "message": "库位不存在或超出当前企业仓库数据范围", + "requestId": "c6dacfbd-9732-4f68-ab5b-e946fd9520b2", + "traceId": "cc0af2475ee446eab1e1b7e5986baf56", + "evidence": "HTTP=200, code=A0404", + "checkedAt": "2026-08-08T05:09:54.481Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "托盘占用资源保护边界不泄露或误修改数据", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets/999999999999?tenantId=0&warehouseId=999999999999" + }, + "http": 200, + "code": "A0404", + "message": "托盘不存在或不属于当前租户和仓库", + "requestId": "2b830afb-86bb-4e78-a86c-e32a37d9d3a4", + "traceId": "2a37904c5fbf441e9da0ae479b1f6ec4", + "evidence": "HTTP=200, code=A0404", + "checkedAt": "2026-08-08T05:09:54.511Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "快递公司分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8891862f-5d24-4812-bf92-5d168df564cd, 8d093adf-dc3f-4520-bf89-198cbf66881d", + "traceId": "8201ca8701b24714a410682432f8a18b", + "evidence": "path=/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=ACTIVE", + "checkedAt": "2026-08-08T05:09:54.546Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "快递公司分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8891862f-5d24-4812-bf92-5d168df564cd, 8d093adf-dc3f-4520-bf89-198cbf66881d", + "traceId": "8201ca8701b24714a410682432f8a18b", + "evidence": "records=4, current=1, size=5", + "checkedAt": "2026-08-08T05:09:54.547Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "快递公司停用筛选分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=INACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9228649e-125d-4901-8649-806fa46c7fd7, 87620b34-bf39-44d9-8e99-7cac11cb3956", + "traceId": "2a4ccc51aca048368fff736d689b9d94", + "evidence": "path=/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=INACTIVE", + "checkedAt": "2026-08-08T05:09:54.576Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "快递公司停用筛选分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=INACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9228649e-125d-4901-8649-806fa46c7fd7, 87620b34-bf39-44d9-8e99-7cac11cb3956", + "traceId": "2a4ccc51aca048368fff736d689b9d94", + "evidence": "records=5, current=1, size=5", + "checkedAt": "2026-08-08T05:09:54.576Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "快递公司状态枚举过滤不混入其他状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=INACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9228649e-125d-4901-8649-806fa46c7fd7, 87620b34-bf39-44d9-8e99-7cac11cb3956", + "traceId": "2a4ccc51aca048368fff736d689b9d94", + "evidence": "records=5", + "checkedAt": "2026-08-08T05:09:54.576Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "快递公司无效筛选参数安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=UNKNOWN" + }, + "http": 200, + "code": "A0422", + "message": "status: must match \"^(ACTIVE|INACTIVE)$\"", + "requestId": "be32a1eb-f297-4c37-b53b-f5344eceda84", + "traceId": "3dbe3c68a19f4bf2805b86c85ead9934", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T05:09:54.605Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "往来单位分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners?page=1&size=5&tenantId=0&status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b072ba95-95c8-4db9-99bd-acaea700ae57, e4b3e27a-2323-417c-a559-f0a3bf3830b1", + "traceId": "cbc92d4ba5794aafa367f7e33462717f", + "evidence": "path=/api/platform/v1/partners?page=1&size=5&tenantId=0&status=ACTIVE", + "checkedAt": "2026-08-08T05:09:54.644Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "往来单位分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners?page=1&size=5&tenantId=0&status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b072ba95-95c8-4db9-99bd-acaea700ae57, e4b3e27a-2323-417c-a559-f0a3bf3830b1", + "traceId": "cbc92d4ba5794aafa367f7e33462717f", + "evidence": "records=5, current=1, size=5", + "checkedAt": "2026-08-08T05:09:54.644Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "往来单位停用筛选分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners?page=1&size=5&tenantId=0&status=INACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f934de08-9962-4f07-b427-645b6d047607, 1d17af79-66e9-4aba-92a6-f3bdace8f3b3", + "traceId": "e1c84775ba2c42deab035e4657ef730e", + "evidence": "path=/api/platform/v1/partners?page=1&size=5&tenantId=0&status=INACTIVE", + "checkedAt": "2026-08-08T05:09:54.673Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "往来单位停用筛选分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners?page=1&size=5&tenantId=0&status=INACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f934de08-9962-4f07-b427-645b6d047607, 1d17af79-66e9-4aba-92a6-f3bdace8f3b3", + "traceId": "e1c84775ba2c42deab035e4657ef730e", + "evidence": "records=5, current=1, size=5", + "checkedAt": "2026-08-08T05:09:54.673Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "往来单位状态枚举过滤不混入其他状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners?page=1&size=5&tenantId=0&status=INACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f934de08-9962-4f07-b427-645b6d047607, 1d17af79-66e9-4aba-92a6-f3bdace8f3b3", + "traceId": "e1c84775ba2c42deab035e4657ef730e", + "evidence": "records=5", + "checkedAt": "2026-08-08T05:09:54.673Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "往来单位无效筛选参数安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners?page=1&size=5&tenantId=0&types=UNKNOWN_TYPE" + }, + "http": 200, + "code": "A0422", + "message": "types[0]: must match \"^(CUSTOMER|SUPPLIER|CARRIER|CUSTOMS_BROKER|SHIPPER|CONSIGNEE)$\"", + "requestId": "ad2429c8-3df4-4bf4-8373-3317fc82937c", + "traceId": "9086d69f20554a56af328198b3f6dc66", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T05:09:54.699Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "仓库导入模板为 XLSX 且不记录二进制", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin/import-template" + }, + "http": 200, + "code": null, + "message": "3853 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "f9db726a-15b9-490e-9ff1-81a3f4fdc030, 5e9696a0-f721-4da7-98e4-3edac8a1f0ff", + "traceId": "b223dd9043774e0ab1f8ea8147319e89", + "evidence": "HTTP=200, bytes=3853, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "checkedAt": "2026-08-08T05:09:54.742Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "快递公司导入模板为 XLSX 且不记录二进制", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies/import-template" + }, + "http": 200, + "code": null, + "message": "3692 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "c0e881ef-91a0-410f-bbee-8f099683de98, dc0ca177-29fa-4b85-a431-e94bd445e89c", + "traceId": "788e6f6e7fb642afb692381a8df131d0", + "evidence": "HTTP=200, bytes=3692, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "checkedAt": "2026-08-08T05:09:54.789Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "往来单位导入模板为 XLSX 且不记录二进制", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners/import-template" + }, + "http": 200, + "code": null, + "message": "3830 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "38bd2267-ab19-457f-a4b9-b416881f85e9, 99ee2dba-8bf1-49ca-9e9e-8f396f278cdd", + "traceId": "afb8daa16f7a4a109f9a018acdf81fdf", + "evidence": "HTTP=200, bytes=3830, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "checkedAt": "2026-08-08T05:09:54.838Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "船期价格表 PENDING_CONFIRMATION 状态过滤", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books?status=PENDING_CONFIRMATION" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "63b2b67f-c29e-47c1-9655-c03cd670e03b, d46ba1d6-703c-49b8-91c3-c913ba12bab1", + "traceId": "4386358bdd5d4365988c441db843aa95", + "evidence": "count=1", + "checkedAt": "2026-08-08T05:09:54.871Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "船期价格表 PENDING_CONFIRMATION 结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books?status=PENDING_CONFIRMATION" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "63b2b67f-c29e-47c1-9655-c03cd670e03b, d46ba1d6-703c-49b8-91c3-c913ba12bab1", + "traceId": "4386358bdd5d4365988c441db843aa95", + "evidence": "count=1", + "checkedAt": "2026-08-08T05:09:54.871Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "船期价格表 ACTIVE 状态过滤", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books?status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4fea89b2-9296-4bf0-a415-99d4196bd9cb, 52fd67db-5fda-452e-a9d4-b73c96d0c2c1", + "traceId": "a7196a53d9d440779a1d00790a8ae95c", + "evidence": "count=1", + "checkedAt": "2026-08-08T05:09:54.900Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "船期价格表 ACTIVE 结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books?status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4fea89b2-9296-4bf0-a415-99d4196bd9cb, 52fd67db-5fda-452e-a9d4-b73c96d0c2c1", + "traceId": "a7196a53d9d440779a1d00790a8ae95c", + "evidence": "count=1", + "checkedAt": "2026-08-08T05:09:54.901Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "船期价格表 SUPERSEDED 状态过滤", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books?status=SUPERSEDED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "cde57326-583a-49ac-b637-bebf4ddc910f, a37d2707-1b06-4feb-9523-e8eaa4e1db82", + "traceId": "9a59b0f5b81c468b87510b7ebd84cdb4", + "evidence": "count=6", + "checkedAt": "2026-08-08T05:09:54.932Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "船期价格表 SUPERSEDED 结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books?status=SUPERSEDED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "cde57326-583a-49ac-b637-bebf4ddc910f, a37d2707-1b06-4feb-9523-e8eaa4e1db82", + "traceId": "9a59b0f5b81c468b87510b7ebd84cdb4", + "evidence": "count=6", + "checkedAt": "2026-08-08T05:09:54.932Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "读取现有生效价格版本用于下载安全检查", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books?status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c52b055a-fbe4-430a-859b-6212e5315365, 633a98e9-9427-4aa2-80b4-b5365e1d1b01", + "traceId": "f6b22f9aaad744c9b2afe73fc6729c99", + "evidence": "", + "checkedAt": "2026-08-08T05:09:54.963Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "现有生效价格源文件下载为 XLSX", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books/2085956560252088321/source" + }, + "http": 200, + "code": null, + "message": "1343413 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "6c8ad1e1-6d9e-4488-8caa-70c4c1e8d1cb, c702f300-215c-4865-a381-75e19e0c46de, 8abaf560-7f07-4dfd-bb95-968bd094a94b", + "traceId": "ae5fd514cb8b4b2c88832ba7f88ee168, 844895bd46ad42fea2c9f48e59042763", + "evidence": "versionId=2085956560252088321, bytes=1343413, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "checkedAt": "2026-08-08T05:09:55.070Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 PENDING 状态分页", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=PENDING" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "231957fd-08d1-4268-bf1a-956f1c1b6576, 5a9ebb2c-ad9f-44f2-8379-78945de65e80", + "traceId": "b01945d49fca4a9d90528fecad3d68bd", + "evidence": "", + "checkedAt": "2026-08-08T05:09:55.097Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 PENDING 过滤结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=PENDING" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "231957fd-08d1-4268-bf1a-956f1c1b6576, 5a9ebb2c-ad9f-44f2-8379-78945de65e80", + "traceId": "b01945d49fca4a9d90528fecad3d68bd", + "evidence": "records=0", + "checkedAt": "2026-08-08T05:09:55.097Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 RUNNING 状态分页", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=RUNNING" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c8aab99d-06e1-4349-b482-48677b971c71, b9c14228-4e75-499b-a64f-ee9d05603309", + "traceId": "fa0bcc49f8c74a4c9599f7a70f5d91b0", + "evidence": "", + "checkedAt": "2026-08-08T05:09:55.129Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 RUNNING 过滤结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=RUNNING" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c8aab99d-06e1-4349-b482-48677b971c71, b9c14228-4e75-499b-a64f-ee9d05603309", + "traceId": "fa0bcc49f8c74a4c9599f7a70f5d91b0", + "evidence": "records=0", + "checkedAt": "2026-08-08T05:09:55.129Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 SUCCEEDED 状态分页", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=SUCCEEDED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0f1dbf59-73e2-4acb-8ad2-3e9f2dbf0f30, 649f384f-15c3-4a3d-8784-a44b858b43b3", + "traceId": "da69f2ac9132436aa954fb758d4b5e67", + "evidence": "", + "checkedAt": "2026-08-08T05:09:55.172Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 SUCCEEDED 过滤结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=SUCCEEDED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0f1dbf59-73e2-4acb-8ad2-3e9f2dbf0f30, 649f384f-15c3-4a3d-8784-a44b858b43b3", + "traceId": "da69f2ac9132436aa954fb758d4b5e67", + "evidence": "records=5", + "checkedAt": "2026-08-08T05:09:55.172Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 FAILED 状态分页", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=FAILED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1f420f6b-ff58-48bd-abc3-09973a80aa70, 295635c1-1fd6-4d9c-9c9c-996b63f9273f", + "traceId": "046bf30f24fb46b68a4f69e232f1537d", + "evidence": "", + "checkedAt": "2026-08-08T05:09:55.197Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 FAILED 过滤结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=FAILED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1f420f6b-ff58-48bd-abc3-09973a80aa70, 295635c1-1fd6-4d9c-9c9c-996b63f9273f", + "traceId": "046bf30f24fb46b68a4f69e232f1537d", + "evidence": "records=0", + "checkedAt": "2026-08-08T05:09:55.197Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 EXPIRED 状态分页", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=EXPIRED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "032536f8-0ab6-4810-832f-221b96c4c046, 3bbca605-cd4a-4c28-b183-6c5a7fea50a3", + "traceId": "4ad7befb3d04444e8399d47ea2434e0c", + "evidence": "", + "checkedAt": "2026-08-08T05:09:55.234Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 EXPIRED 过滤结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=EXPIRED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "032536f8-0ab6-4810-832f-221b96c4c046, 3bbca605-cd4a-4c28-b183-6c5a7fea50a3", + "traceId": "4ad7befb3d04444e8399d47ea2434e0c", + "evidence": "records=0", + "checkedAt": "2026-08-08T05:09:55.234Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "不存在下载任务详情安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks/999999999999" + }, + "http": 200, + "code": "A0404", + "message": "导出任务不存在", + "requestId": "09a5891c-71d6-4ccb-89df-e13b5055bbd2", + "traceId": "f08e6d9f3a064697a5cfa3caf6e36404", + "evidence": "HTTP=200, code=A0404", + "checkedAt": "2026-08-08T05:09:55.258Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "不存在下载任务文件安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks/999999999999/download" + }, + "http": 200, + "code": "A0404", + "message": "导出任务不存在", + "requestId": "109b1fd0-a4a0-44f8-a993-4dd03d8ae82f", + "traceId": "a783655d2d0f4b0c83a22c89706bcaa3", + "evidence": "HTTP=200, code=A0404", + "checkedAt": "2026-08-08T05:09:55.289Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "未授权下载请求被拒绝", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks/999999999999/download" + }, + "http": 401, + "code": "A0401", + "message": "未登录或令牌已失效", + "requestId": "5b4ddc65-614", + "traceId": null, + "evidence": "HTTP=401, code=A0401", + "checkedAt": "2026-08-08T05:09:55.314Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "平台用户只读列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/users?page=1&size=5" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a158e97a-16ac-4433-9c22-aa215c6ca8c0, 58c5463b-68aa-40f2-825c-36cb988bcb5a", + "traceId": "cce7c15aa4b2484193e06b8c5044ac40", + "evidence": "", + "checkedAt": "2026-08-08T05:09:55.390Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "平台用户列表结构正确且包含内置保护标识", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/users?page=1&size=5" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a158e97a-16ac-4433-9c22-aa215c6ca8c0, 58c5463b-68aa-40f2-825c-36cb988bcb5a", + "traceId": "cce7c15aa4b2484193e06b8c5044ac40", + "evidence": "records=5, builtInField=protectedAccount", + "checkedAt": "2026-08-08T05:09:55.390Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "平台角色只读列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/roles" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "23f548b5-91c8-4de0-9fc4-d7737d08f301, a52eb83e-5d44-4fb7-9bf3-3f9606e6beab", + "traceId": "56e3f81a84754759a597f082de6a90cd", + "evidence": "", + "checkedAt": "2026-08-08T05:09:55.431Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "平台角色列表结构正确且包含内置保护标识", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/roles" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "23f548b5-91c8-4de0-9fc4-d7737d08f301, a52eb83e-5d44-4fb7-9bf3-3f9606e6beab", + "traceId": "56e3f81a84754759a597f082de6a90cd", + "evidence": "records=11, builtInField=roleType", + "checkedAt": "2026-08-08T05:09:55.431Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "菜单权限只读列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/permissions" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1c33fc14-d23a-4b66-981f-bf90d80641f6, 2b59709a-639e-464c-9059-41a7ff5c70e9", + "traceId": "537aa5bfcb2143dd925cd168dd3b1560", + "evidence": "", + "checkedAt": "2026-08-08T05:09:55.459Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "菜单权限列表结构正确且包含内置保护标识", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/permissions" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1c33fc14-d23a-4b66-981f-bf90d80641f6, 2b59709a-639e-464c-9059-41a7ff5c70e9", + "traceId": "537aa5bfcb2143dd925cd168dd3b1560", + "evidence": "records=136, builtInField=builtIn", + "checkedAt": "2026-08-08T05:09:55.459Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "角色列表伪造令牌拒绝访问", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/roles" + }, + "http": 401, + "code": "A0401", + "message": "未登录或令牌已失效", + "requestId": "5b4ddc65-618", + "traceId": null, + "evidence": "HTTP=401, code=A0401", + "checkedAt": "2026-08-08T05:09:55.483Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "菜单权限未携带令牌拒绝访问", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/permissions" + }, + "http": 401, + "code": "A0401", + "message": "未登录或令牌已失效", + "requestId": "565e864d-619", + "traceId": null, + "evidence": "HTTP=401, code=A0401", + "checkedAt": "2026-08-08T05:09:55.501Z" + } + ] +} diff --git a/reports/admin-test-env-acceptance-isolated.json b/reports/admin-test-env-acceptance-isolated.json new file mode 100644 index 000000000..8cbb9c72a --- /dev/null +++ b/reports/admin-test-env-acceptance-isolated.json @@ -0,0 +1,7602 @@ +{ + "reportName": "后台管理测试环境 HTTP API 验收", + "marker": "ADMIN-API-20260808051400516", + "gateway": "http://8.163.30.128:9000", + "generatedAt": "2026-08-08T05:14:28.213Z", + "startedAt": "2026-08-08T05:14:00.516Z", + "success": true, + "fatal": null, + "summary": { + "total": 408, + "passed": 408, + "failed": 0 + }, + "modules": [ + { + "name": "customers", + "startedAt": "2026-08-08T05:14:00.895Z", + "finishedAt": "2026-08-08T05:14:01.962Z", + "success": true, + "passed": 38, + "failed": 0, + "fatal": null + }, + { + "name": "system", + "startedAt": "2026-08-08T05:14:01.963Z", + "finishedAt": "2026-08-08T05:14:04.716Z", + "success": true, + "passed": 41, + "failed": 0, + "fatal": null + }, + { + "name": "master-data", + "startedAt": "2026-08-08T05:14:04.717Z", + "finishedAt": "2026-08-08T05:14:05.737Z", + "success": true, + "passed": 42, + "failed": 0, + "fatal": null + }, + { + "name": "orders", + "startedAt": "2026-08-08T05:14:05.738Z", + "finishedAt": "2026-08-08T05:14:08.157Z", + "success": true, + "passed": 49, + "failed": 0, + "fatal": null + }, + { + "name": "pricing", + "startedAt": "2026-08-08T05:14:08.159Z", + "finishedAt": "2026-08-08T05:14:12.177Z", + "success": true, + "passed": 26, + "failed": 0, + "fatal": null + }, + { + "name": "downloads", + "startedAt": "2026-08-08T05:14:12.178Z", + "finishedAt": "2026-08-08T05:14:16.413Z", + "success": true, + "passed": 8, + "failed": 0, + "fatal": null + }, + { + "name": "inbound-weight-ocr", + "startedAt": "2026-08-08T05:14:16.414Z", + "finishedAt": "2026-08-08T05:14:22.434Z", + "success": true, + "passed": 52, + "failed": 0, + "fatal": null + }, + { + "name": "orders-inbound-measurement-fixture", + "startedAt": "2026-08-08T05:14:22.434Z", + "finishedAt": "2026-08-08T05:14:25.837Z", + "success": true, + "passed": 49, + "failed": 0, + "fatal": null + }, + { + "name": "inbound-measurement", + "startedAt": "2026-08-08T05:14:25.838Z", + "finishedAt": "2026-08-08T05:14:26.713Z", + "success": true, + "passed": 28, + "failed": 0, + "fatal": null + }, + { + "name": "supplemental", + "startedAt": "2026-08-08T05:14:26.715Z", + "finishedAt": "2026-08-08T05:14:28.213Z", + "success": true, + "passed": 74, + "failed": 0, + "fatal": null + } + ], + "scenarios": [ + { + "name": "customer-dimension-rules", + "module": "customers", + "success": true, + "deploymentBlocked": false, + "passed": 13, + "failed": 0 + }, + { + "name": "price-book-lifecycle", + "module": "pricing", + "success": true, + "deploymentBlocked": false, + "passed": 26, + "failed": 0 + }, + { + "name": "weight-image-recognition-and-confirmation", + "module": "inbound-weight-ocr", + "success": true, + "deploymentBlocked": false, + "passed": 52, + "failed": 0 + }, + { + "name": "mojia-carton-measurement", + "module": "inbound-measurement", + "success": true, + "deploymentBlocked": false, + "passed": 28, + "failed": 0 + } + ], + "deploymentBlockers": [], + "createdResources": { + "customer": { + "tenantId": "2085957677506744322", + "marker": "ADMIN-API-20260808051400516", + "contactPhone": "16166040895" + }, + "systemPermission": { + "id": "2085957681973678082", + "code": "platform:acceptance:808051400516" + }, + "systemRole": { + "id": "2085957682548297730", + "code": "ADMIN_ACCEPT_808051400516", + "finalStatus": "DISABLED", + "retainedBecauseAssigned": true + }, + "systemUser": { + "membershipId": "2085957683798200324", + "username": "admin_accept_808051400516", + "finalStatus": "DISABLED" + }, + "warehouse": { + "id": "2085957693526294530", + "code": "AW808051400516", + "finalStatus": "INACTIVE" + }, + "location": { + "id": "2085957694109302785", + "warehouseId": "2085957693526294530", + "deleted": false + }, + "pallet": { + "id": "2085957694868471810", + "warehouseId": "2085957693526294530", + "deleted": true + }, + "expressCompany": { + "id": "2085957695547949058", + "code": "EX808051400516", + "finalStatus": "INACTIVE" + }, + "partner": { + "id": "2085957696193871873", + "code": "PT808051400516", + "finalStatus": "INACTIVE" + }, + "orders": { + "marker": "ADMIN-API-20260808051400516", + "tenantId": "10001", + "orderId": "2085957700408639489", + "productImageFileId": "2085957699993403394", + "boxTypes": [ + "SMALL", + "MEDIUM", + "LARGE", + "EXTRA_LARGE" + ], + "inboundId": "2085957703761965058", + "orderNo": "FL2085957700408639489", + "inboundCode": "RK-2085957700408639489", + "processStatus": "WAIT_MEASURE", + "taskId": "2085957703757770754" + }, + "ocrInbound": { + "tenantId": "10001", + "inboundId": "2085957703761965058", + "marker": "ADMIN-API-20260808051400516" + }, + "testInbound": { + "tenantId": "10001", + "inboundId": "2085957703761965058", + "marker": "ADMIN-API-20260808051400516" + }, + "priceBookVersion": { + "versionId": "2085957708019183617", + "marker": "ADMIN-API-20260808051400516", + "sourceSha256": "3170fd3aa8795cd816ca9600f87a6a2a06b15d0cf6042d4592f33d4b30c7b8ab" + }, + "exportTask": { + "id": "2085957724634939393" + }, + "inboundWeightOcr": { + "tenantId": "10001", + "inboundId": "2085957703761965058", + "resultIds": [ + "2085957756887019522", + "2085957765728612354" + ], + "cleaned": true + }, + "orchestrationFixtures": { + "inboundMeasurement": { + "marker": "ADMIN-API-20260808051400516-MOJIA", + "tenantId": "10001", + "orderId": "2085957770327687169", + "inboundId": "2085957779368488961" + } + }, + "inboundMeasurement": { + "marker": "ADMIN-API-20260808051400516-MOJIA", + "tenantId": "10001", + "inboundId": "2085957779368488961", + "measurementId": "2085957783827034113", + "boxCode": "RK-2085957770327687169#4-1", + "finalStatus": "APPROVED" + } + }, + "excluded": [ + { + "scope": "dashboard", + "reason": "首页为静态演示数据,不调用后端 API" + }, + { + "scope": "hidden-prototypes", + "reason": "隐藏原型页面尚无已确认后端契约" + } + ], + "securityNote": "报告不保存登录密码、Access Token、Refresh Token、图片二进制或 OCR 原文全文。", + "steps": [ + { + "module": "authentication", + "scenario": null, + "name": "平台管理员登录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/auth/login" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "49758cb9-1c07-4996-95dd-0c98b1bc6528, 136b9253-a32c-4ab7-9469-058f7eddb490", + "traceId": "691fdd5890924a4fa8ab97d6bf887129", + "evidence": "", + "checkedAt": "2026-08-08T05:14:00.894Z" + }, + { + "module": "customers", + "scenario": null, + "name": "检查测试联系电话可用性", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/contact-phone-availability?contactPhone=16166040895" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f7f6da78-5757-4855-a110-556061e675eb, c76fb5ec-fcdc-4b0a-b225-a1a19ea786d1", + "traceId": "734553f5de234359a0c341340c365811", + "evidence": "attempt=1", + "checkedAt": "2026-08-08T05:14:00.943Z" + }, + { + "module": "customers", + "scenario": null, + "name": "创建客户", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "aa4f08a5-e26b-44ab-a600-618e3ae78e64, de9fa1fc-438c-4b84-b6e6-81c2dfb8cea2", + "traceId": "ebfd9da308c349f3b7c436311419a52e", + "evidence": "", + "checkedAt": "2026-08-08T05:14:01.311Z" + }, + { + "module": "customers", + "scenario": null, + "name": "创建响应客户字段完整", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "aa4f08a5-e26b-44ab-a600-618e3ae78e64, de9fa1fc-438c-4b84-b6e6-81c2dfb8cea2", + "traceId": "ebfd9da308c349f3b7c436311419a52e", + "evidence": "missing=none", + "checkedAt": "2026-08-08T05:14:01.312Z" + }, + { + "module": "customers", + "scenario": null, + "name": "新客户基础字段正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "aa4f08a5-e26b-44ab-a600-618e3ae78e64, de9fa1fc-438c-4b84-b6e6-81c2dfb8cea2", + "traceId": "ebfd9da308c349f3b7c436311419a52e", + "evidence": "tenantId=2085957677506744322, status=PROFILE_REQUIRED", + "checkedAt": "2026-08-08T05:14:01.312Z" + }, + { + "module": "customers", + "scenario": "customer-owner-provisioning", + "name": "创建客户生成初始密码", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "aa4f08a5-e26b-44ab-a600-618e3ae78e64, de9fa1fc-438c-4b84-b6e6-81c2dfb8cea2", + "traceId": "ebfd9da308c349f3b7c436311419a52e", + "evidence": "generated=true, length=16", + "checkedAt": "2026-08-08T05:14:01.312Z" + }, + { + "module": "customers", + "scenario": "customer-owner-provisioning", + "name": "管理员用户名默认使用联系电话", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "aa4f08a5-e26b-44ab-a600-618e3ae78e64, de9fa1fc-438c-4b84-b6e6-81c2dfb8cea2", + "traceId": "ebfd9da308c349f3b7c436311419a52e", + "evidence": "matches=true", + "checkedAt": "2026-08-08T05:14:01.312Z" + }, + { + "module": "customers", + "scenario": null, + "name": "待完善客户的审核字段保持为空", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "aa4f08a5-e26b-44ab-a600-618e3ae78e64, de9fa1fc-438c-4b84-b6e6-81c2dfb8cea2", + "traceId": "ebfd9da308c349f3b7c436311419a52e", + "evidence": "creditCode=omitted, approvedAt=omitted", + "checkedAt": "2026-08-08T05:14:01.312Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "新客户尺寸规则可查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085957677506744322" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7df4494c-5b64-4c5f-ac05-982112d41589, 81e9a66b-15f1-429c-a782-bc29219ccc2e", + "traceId": "47a8374be07e41898f5304b48e9cd165", + "evidence": "tenantId=2085957677506744322", + "checkedAt": "2026-08-08T05:14:01.349Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "固定四箱规顺序完整且无重复", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085957677506744322" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7df4494c-5b64-4c5f-ac05-982112d41589, 81e9a66b-15f1-429c-a782-bc29219ccc2e", + "traceId": "47a8374be07e41898f5304b48e9cd165", + "evidence": "count=4, order=SMALL,MEDIUM,LARGE,EXTRA_LARGE", + "checkedAt": "2026-08-08T05:14:01.349Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "四箱规默认内径、加边和备注正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085957677506744322" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7df4494c-5b64-4c5f-ac05-982112d41589, 81e9a66b-15f1-429c-a782-bc29219ccc2e", + "traceId": "47a8374be07e41898f5304b48e9cd165", + "evidence": "defaults=matched", + "checkedAt": "2026-08-08T05:14:01.349Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "客户 ID、规则 ID 为字符串且初始版本为0", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085957677506744322" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7df4494c-5b64-4c5f-ac05-982112d41589, 81e9a66b-15f1-429c-a782-bc29219ccc2e", + "traceId": "47a8374be07e41898f5304b48e9cd165", + "evidence": "groupTenantIdType=string, rows=string/v0,string/v0,string/v0,string/v0", + "checkedAt": "2026-08-08T05:14:01.349Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "默认规则外径与 HALF_UP 三位 CBM 正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085957677506744322" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7df4494c-5b64-4c5f-ac05-982112d41589, 81e9a66b-15f1-429c-a782-bc29219ccc2e", + "traceId": "47a8374be07e41898f5304b48e9cd165", + "evidence": "derivedRows=4", + "checkedAt": "2026-08-08T05:14:01.350Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "PUT 每行只发送约定7字段并整组保存", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085957677506744322" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7df4494c-5b64-4c5f-ac05-982112d41589, 81e9a66b-15f1-429c-a782-bc29219ccc2e", + "traceId": "47a8374be07e41898f5304b48e9cd165", + "evidence": "fields=boxType,innerLengthCm,innerWidthCm,innerHeightCm,edgeAdditionCm,remark,version", + "checkedAt": "2026-08-08T05:14:01.350Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "一次 PUT 保存四条三位小数规则", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085957677506744322" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a1f05f8e-dfcb-47ed-941e-a90918e4bc25, c586b95b-bf2e-45ec-850f-bbd81d5cb073", + "traceId": "f9b6b7c0fca142d681f895823be328e0", + "evidence": "rows=4", + "checkedAt": "2026-08-08T05:14:01.392Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "修改后四行版本+1且派生外径/CBM正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085957677506744322" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a1f05f8e-dfcb-47ed-941e-a90918e4bc25, c586b95b-bf2e-45ec-850f-bbd81d5cb073", + "traceId": "f9b6b7c0fca142d681f895823be328e0", + "evidence": "versions=1,1,1,1", + "checkedAt": "2026-08-08T05:14:01.392Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "旧 version 重放 PUT 返回冲突", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085957677506744322" + }, + "http": 200, + "code": "A0409", + "message": "箱规尺寸配置已被修改,请刷新后重试", + "requestId": "2af5ff6a-4e1e-4dbe-8f12-a98a8d8b6ec8", + "traceId": "ebd33dcb62eb4c048f462575153cad77", + "evidence": "HTTP=200, code=A0409", + "checkedAt": "2026-08-08T05:14:01.432Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "冲突后重新查询四条规则", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085957677506744322" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "31a10694-21c4-48ae-8409-1b625532a654, 4ad603b9-7299-40e9-9599-55ecda4c01b3", + "traceId": "76eb87567c6f4fde8e602e6d78268f87", + "evidence": "", + "checkedAt": "2026-08-08T05:14:01.460Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "冲突请求未造成四行部分更新", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085957677506744322" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "31a10694-21c4-48ae-8409-1b625532a654, 4ad603b9-7299-40e9-9599-55ecda4c01b3", + "traceId": "76eb87567c6f4fde8e602e6d78268f87", + "evidence": "unchangedRows=4", + "checkedAt": "2026-08-08T05:14:01.461Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "恢复本轮修改前的四箱规配置", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085957677506744322" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "df00422f-6980-4a7c-a24e-6a0049b26f2e, d4ce1d8f-a729-44cc-9465-07dbdaf4efe4", + "traceId": "52c190b25b3c4e35b7c1331e50fde231", + "evidence": "restore=original-values", + "checkedAt": "2026-08-08T05:14:01.499Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "尺寸规则恢复后回显与初始值一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085957677506744322" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "df00422f-6980-4a7c-a24e-6a0049b26f2e, d4ce1d8f-a729-44cc-9465-07dbdaf4efe4", + "traceId": "52c190b25b3c4e35b7c1331e50fde231", + "evidence": "restoredRows=4", + "checkedAt": "2026-08-08T05:14:01.499Z" + }, + { + "module": "customers", + "scenario": null, + "name": "查询客户列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants?page=1&size=20&keyword=%E5%90%8E%E5%8F%B0%E5%AE%A2%E6%88%B7%E9%AA%8C%E6%94%B6-808051400516" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "305772d4-9c09-4c07-8516-a2cc94c8f4ef, a107cb47-a866-41a2-ae4e-85a61f924ba6", + "traceId": "03874daba1f446c5a5af9a48dfc6fc44", + "evidence": "", + "checkedAt": "2026-08-08T05:14:01.530Z" + }, + { + "module": "customers", + "scenario": null, + "name": "列表包含新客户且字段完整", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants?page=1&size=20&keyword=%E5%90%8E%E5%8F%B0%E5%AE%A2%E6%88%B7%E9%AA%8C%E6%94%B6-808051400516" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "305772d4-9c09-4c07-8516-a2cc94c8f4ef, a107cb47-a866-41a2-ae4e-85a61f924ba6", + "traceId": "03874daba1f446c5a5af9a48dfc6fc44", + "evidence": "found=true, missing=none", + "checkedAt": "2026-08-08T05:14:01.530Z" + }, + { + "module": "customers", + "scenario": null, + "name": "查询客户详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085957677506744322" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f5c41522-fbb6-4f89-8ad2-831775718167, 881445ac-c49a-4d05-9b7a-46f718c73923", + "traceId": "946612f414384db68738b65bb96cddc0", + "evidence": "", + "checkedAt": "2026-08-08T05:14:01.568Z" + }, + { + "module": "customers", + "scenario": null, + "name": "客户详情基本信息正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085957677506744322" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f5c41522-fbb6-4f89-8ad2-831775718167, 881445ac-c49a-4d05-9b7a-46f718c73923", + "traceId": "946612f414384db68738b65bb96cddc0", + "evidence": "tenantId=2085957677506744322", + "checkedAt": "2026-08-08T05:14:01.568Z" + }, + { + "module": "customers", + "scenario": null, + "name": "编辑客户", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/tenants/2085957677506744322" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "877f82ea-e16f-4f81-b419-d5a2c3e826f8, 9a2f2755-ccc8-4a99-837b-fc337fb7e9f4", + "traceId": "c6ab227d38b44738bc751be00cdeb254", + "evidence": "", + "checkedAt": "2026-08-08T05:14:01.608Z" + }, + { + "module": "customers", + "scenario": null, + "name": "客户编辑正确回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/tenants/2085957677506744322" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "877f82ea-e16f-4f81-b419-d5a2c3e826f8, 9a2f2755-ccc8-4a99-837b-fc337fb7e9f4", + "traceId": "c6ab227d38b44738bc751be00cdeb254", + "evidence": "tenantId=2085957677506744322", + "checkedAt": "2026-08-08T05:14:01.608Z" + }, + { + "module": "customers", + "scenario": null, + "name": "回查客户编辑结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085957677506744322" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b19d6512-e35d-4434-bfe8-69a0d3c23cf7, 880a83a4-9062-4ffa-a3e0-54b34e9d058c", + "traceId": "28b23a26e88440d4b7729044de5e705a", + "evidence": "", + "checkedAt": "2026-08-08T05:14:01.646Z" + }, + { + "module": "customers", + "scenario": null, + "name": "客户编辑已持久化", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085957677506744322" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b19d6512-e35d-4434-bfe8-69a0d3c23cf7, 880a83a4-9062-4ffa-a3e0-54b34e9d058c", + "traceId": "28b23a26e88440d4b7729044de5e705a", + "evidence": "tenantId=2085957677506744322", + "checkedAt": "2026-08-08T05:14:01.646Z" + }, + { + "module": "customers", + "scenario": null, + "name": "业务概况查询资质", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085957677506744322/qualifications" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "cd98d56c-c488-4be3-84de-5ed6bc036015, 3a302f19-cda9-4535-bce3-67c870a14b72", + "traceId": "48eeca4151864599ab8dbd7c85e4d42a", + "evidence": "", + "checkedAt": "2026-08-08T05:14:01.678Z" + }, + { + "module": "customers", + "scenario": null, + "name": "资质概况结构正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085957677506744322/qualifications" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "cd98d56c-c488-4be3-84de-5ed6bc036015, 3a302f19-cda9-4535-bce3-67c870a14b72", + "traceId": "48eeca4151864599ab8dbd7c85e4d42a", + "evidence": "count=0", + "checkedAt": "2026-08-08T05:14:01.678Z" + }, + { + "module": "customers", + "scenario": null, + "name": "业务概况查询成员", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085957677506744322/members" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "da1deb86-b7dd-4ced-88c3-da44936257e2, 416fa57c-add3-4091-968d-92f81c90ad6e", + "traceId": "a40b56e0ef7c454daf179c1b52665c29", + "evidence": "", + "checkedAt": "2026-08-08T05:14:01.716Z" + }, + { + "module": "customers", + "scenario": "customer-owner-provisioning", + "name": "联系电话账号是企业管理员", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085957677506744322/members" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "da1deb86-b7dd-4ced-88c3-da44936257e2, 416fa57c-add3-4091-968d-92f81c90ad6e", + "traceId": "a40b56e0ef7c454daf179c1b52665c29", + "evidence": "ownerFound=true, matches=true", + "checkedAt": "2026-08-08T05:14:01.716Z" + }, + { + "module": "customers", + "scenario": null, + "name": "业务概况查询运单数量", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/tenant-counts?tenantIds=2085957677506744322" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0528723c-a9de-4663-96f2-ee3db69bbf59, 06a71f84-4b3b-4b4c-84e2-61074210ff3a", + "traceId": "80f306291c4b400aa2516c5e63f2343f", + "evidence": "", + "checkedAt": "2026-08-08T05:14:01.755Z" + }, + { + "module": "customers", + "scenario": null, + "name": "业务概况返回当前客户运单数", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/tenant-counts?tenantIds=2085957677506744322" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0528723c-a9de-4663-96f2-ee3db69bbf59, 06a71f84-4b3b-4b4c-84e2-61074210ff3a", + "traceId": "80f306291c4b400aa2516c5e63f2343f", + "evidence": "orderCount=0", + "checkedAt": "2026-08-08T05:14:01.755Z" + }, + { + "module": "customers", + "scenario": null, + "name": "查询客户运单记录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg?tenantId=2085957677506744322&page=1&size=10" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "bd27ed06-5c1e-4243-8a2c-4576b2db2f31, bd3e8fbc-cd68-4f80-b95e-16ea4e3d4a01", + "traceId": "9748f90c301341f784d199d0c838c975", + "evidence": "", + "checkedAt": "2026-08-08T05:14:01.785Z" + }, + { + "module": "customers", + "scenario": null, + "name": "运单记录分页结构正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg?tenantId=2085957677506744322&page=1&size=10" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "bd27ed06-5c1e-4243-8a2c-4576b2db2f31, bd3e8fbc-cd68-4f80-b95e-16ea4e3d4a01", + "traceId": "9748f90c301341f784d199d0c838c975", + "evidence": "records=0, total=0", + "checkedAt": "2026-08-08T05:14:01.785Z" + }, + { + "module": "customers", + "scenario": "customer-draft-archive", + "name": "归档测试客户", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants/2085957677506744322/archive" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c09e8528-760e-4d4a-acd9-f57916bd76cc, bce3e775-bfd9-4749-b1a8-c6d77d8f106e", + "traceId": "ca8a5d7b875e4125a86f76bad0334858", + "evidence": "tenantId=2085957677506744322", + "checkedAt": "2026-08-08T05:14:01.962Z" + }, + { + "module": "customers", + "scenario": "customer-draft-archive", + "name": "测试客户归档后处于停用状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants/2085957677506744322/archive" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c09e8528-760e-4d4a-acd9-f57916bd76cc, bce3e775-bfd9-4749-b1a8-c6d77d8f106e", + "traceId": "ca8a5d7b875e4125a86f76bad0334858", + "evidence": "status=DISABLED", + "checkedAt": "2026-08-08T05:14:01.962Z" + }, + { + "module": "system", + "scenario": null, + "name": "查询菜单权限资源", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/permissions" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "956ca82d-e5a8-4b7b-b9e6-d9e6647afa72, ed1a822b-cc39-4031-9543-5d1ec9a64a74", + "traceId": "3a0b058b6e044476a84489a492e17378", + "evidence": "", + "checkedAt": "2026-08-08T05:14:01.999Z" + }, + { + "module": "system", + "scenario": null, + "name": "权限资源返回数组", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/permissions" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "956ca82d-e5a8-4b7b-b9e6-d9e6647afa72, ed1a822b-cc39-4031-9543-5d1ec9a64a74", + "traceId": "3a0b058b6e044476a84489a492e17378", + "evidence": "count=136", + "checkedAt": "2026-08-08T05:14:01.999Z" + }, + { + "module": "system", + "scenario": null, + "name": "创建自定义权限资源", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/permissions" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5337166f-8e72-4021-862c-615386ebc75e, e2d2a2ed-b78b-4b03-b011-cc987436bd8d", + "traceId": "41d8365acc654ea18a657fe54a1faf7c", + "evidence": "", + "checkedAt": "2026-08-08T05:14:02.041Z" + }, + { + "module": "system", + "scenario": null, + "name": "权限创建字段正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/permissions" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5337166f-8e72-4021-862c-615386ebc75e, e2d2a2ed-b78b-4b03-b011-cc987436bd8d", + "traceId": "41d8365acc654ea18a657fe54a1faf7c", + "evidence": "permissionId=2085957681973678082", + "checkedAt": "2026-08-08T05:14:02.041Z" + }, + { + "module": "system", + "scenario": null, + "name": "编辑自定义权限资源", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/permissions/2085957681973678082" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "010c6670-7e8a-43a0-8a01-41ed0a443443, 0feee3f3-75a0-4868-8758-c13e13f3b057", + "traceId": "2e941434f5e04217b509db2dc3527d2c", + "evidence": "", + "checkedAt": "2026-08-08T05:14:02.086Z" + }, + { + "module": "system", + "scenario": null, + "name": "权限编辑正确回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/permissions/2085957681973678082" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "010c6670-7e8a-43a0-8a01-41ed0a443443, 0feee3f3-75a0-4868-8758-c13e13f3b057", + "traceId": "2e941434f5e04217b509db2dc3527d2c", + "evidence": "permissionId=2085957681973678082", + "checkedAt": "2026-08-08T05:14:02.086Z" + }, + { + "module": "system", + "scenario": null, + "name": "停用自定义权限", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/permissions/2085957681973678082/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "27ad4dab-f23b-494d-b9f3-bc978488355f, 76f4ba46-225a-4716-b99a-aad750f92299", + "traceId": "4a1926bc07e34b0788a5841e10453930", + "evidence": "", + "checkedAt": "2026-08-08T05:14:02.116Z" + }, + { + "module": "system", + "scenario": null, + "name": "权限状态回显 DISABLED", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/permissions/2085957681973678082/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "27ad4dab-f23b-494d-b9f3-bc978488355f, 76f4ba46-225a-4716-b99a-aad750f92299", + "traceId": "4a1926bc07e34b0788a5841e10453930", + "evidence": "status=DISABLED", + "checkedAt": "2026-08-08T05:14:02.116Z" + }, + { + "module": "system", + "scenario": null, + "name": "启用自定义权限", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/permissions/2085957681973678082/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "08953c09-6ee0-46e5-a4ef-cc4e4a939270, 32e726d5-28fb-4b82-a703-3c897d5b564f", + "traceId": "30a21ff9d9a34935abce0b26bf8fe510", + "evidence": "", + "checkedAt": "2026-08-08T05:14:02.147Z" + }, + { + "module": "system", + "scenario": null, + "name": "权限状态回显 ACTIVE", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/permissions/2085957681973678082/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "08953c09-6ee0-46e5-a4ef-cc4e4a939270, 32e726d5-28fb-4b82-a703-3c897d5b564f", + "traceId": "30a21ff9d9a34935abce0b26bf8fe510", + "evidence": "status=ACTIVE", + "checkedAt": "2026-08-08T05:14:02.147Z" + }, + { + "module": "system", + "scenario": null, + "name": "创建平台自定义角色", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/roles" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ed171f1f-ad5e-4eef-b2b1-e60ecb86c0d7, 31bfbbfc-ad25-444e-a4f5-1e4b17a088ac", + "traceId": "3c2ea078d27d414a9c289a48484c1e7c", + "evidence": "", + "checkedAt": "2026-08-08T05:14:02.181Z" + }, + { + "module": "system", + "scenario": null, + "name": "角色创建字段正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/roles" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ed171f1f-ad5e-4eef-b2b1-e60ecb86c0d7, 31bfbbfc-ad25-444e-a4f5-1e4b17a088ac", + "traceId": "3c2ea078d27d414a9c289a48484c1e7c", + "evidence": "roleId=2085957682548297730", + "checkedAt": "2026-08-08T05:14:02.181Z" + }, + { + "module": "system", + "scenario": null, + "name": "编辑平台自定义角色", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/2085957682548297730" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "bb836f49-fa3e-4e8d-be0d-157d70631999, 1c2a2f44-8b51-441d-9688-f2ae6ee75106", + "traceId": "4b6ba15532d947a1bf9534234930cfc8", + "evidence": "", + "checkedAt": "2026-08-08T05:14:02.226Z" + }, + { + "module": "system", + "scenario": null, + "name": "角色编辑正确回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/2085957682548297730" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "bb836f49-fa3e-4e8d-be0d-157d70631999, 1c2a2f44-8b51-441d-9688-f2ae6ee75106", + "traceId": "4b6ba15532d947a1bf9534234930cfc8", + "evidence": "roleId=2085957682548297730", + "checkedAt": "2026-08-08T05:14:02.226Z" + }, + { + "module": "system", + "scenario": null, + "name": "角色全量保存权限", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/permissions" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "de26f9ae-3584-43f9-b54d-762d4fe68602, 5e25908a-3ebb-4eea-a4a5-801f5fb22789", + "traceId": "9c23cd3fceb94ca3af3a11a4cc311616", + "evidence": "", + "checkedAt": "2026-08-08T05:14:02.256Z" + }, + { + "module": "system", + "scenario": null, + "name": "回查平台角色列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/roles" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "11198075-7ac1-4769-95e6-71a1535dd21d, 1f56d70a-fee5-45a4-ac4e-1d6be3aad88a", + "traceId": "0549acd27ac94bf0b06f9049e008b311", + "evidence": "", + "checkedAt": "2026-08-08T05:14:02.291Z" + }, + { + "module": "system", + "scenario": null, + "name": "角色权限 ID 正确回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/roles" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "11198075-7ac1-4769-95e6-71a1535dd21d, 1f56d70a-fee5-45a4-ac4e-1d6be3aad88a", + "traceId": "0549acd27ac94bf0b06f9049e008b311", + "evidence": "permissionIds=2085957681973678082", + "checkedAt": "2026-08-08T05:14:02.291Z" + }, + { + "module": "system", + "scenario": null, + "name": "停用自定义角色", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/2085957682548297730/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "59f06ca9-bee4-45a3-aa03-44271a0b7017, 2e6870c6-76db-4b42-b0ee-be7d4ded6226", + "traceId": "da54716c8ecd424182a80b2da76dae16", + "evidence": "", + "checkedAt": "2026-08-08T05:14:02.334Z" + }, + { + "module": "system", + "scenario": null, + "name": "角色状态回显 DISABLED", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/2085957682548297730/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "59f06ca9-bee4-45a3-aa03-44271a0b7017, 2e6870c6-76db-4b42-b0ee-be7d4ded6226", + "traceId": "da54716c8ecd424182a80b2da76dae16", + "evidence": "status=DISABLED", + "checkedAt": "2026-08-08T05:14:02.334Z" + }, + { + "module": "system", + "scenario": null, + "name": "启用自定义角色", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/2085957682548297730/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "81388536-dc0a-4cf9-89eb-83b3a8d1f671, a2dde895-0934-4088-b2dd-ab3ec5e350a1", + "traceId": "181c1af7f7bc439eb6d4fa66c1392842", + "evidence": "", + "checkedAt": "2026-08-08T05:14:02.369Z" + }, + { + "module": "system", + "scenario": null, + "name": "角色状态回显 ACTIVE", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/2085957682548297730/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "81388536-dc0a-4cf9-89eb-83b3a8d1f671, a2dde895-0934-4088-b2dd-ab3ec5e350a1", + "traceId": "181c1af7f7bc439eb6d4fa66c1392842", + "evidence": "status=ACTIVE", + "checkedAt": "2026-08-08T05:14:02.369Z" + }, + { + "module": "system", + "scenario": null, + "name": "查询内部用户可选平台角色", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/users/options" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "01c37bab-d097-423d-ba64-ba8c4a999bb3, 3ba86d09-4e4b-4f84-90b3-d7eb99b3e4ae", + "traceId": "3cf1953a08334dcaab6d918cb4d5c45f", + "evidence": "", + "checkedAt": "2026-08-08T05:14:02.407Z" + }, + { + "module": "system", + "scenario": null, + "name": "用户选项包含平台与测试角色", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/users/options" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "01c37bab-d097-423d-ba64-ba8c4a999bb3, 3ba86d09-4e4b-4f84-90b3-d7eb99b3e4ae", + "traceId": "3cf1953a08334dcaab6d918cb4d5c45f", + "evidence": "tenants=1, roles=12", + "checkedAt": "2026-08-08T05:14:02.407Z" + }, + { + "module": "system", + "scenario": null, + "name": "检查测试联系电话可用性", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/contact-phone-availability?contactPhone=16166042408" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "44786ee0-abf0-4d4a-bcf4-26be494e6eab, d4542eb6-c1e8-4d3e-a22e-3b5476a4e4fc", + "traceId": "66283e6aa6f3475f815b28f9e07a4ac4", + "evidence": "attempt=1", + "checkedAt": "2026-08-08T05:14:02.435Z" + }, + { + "module": "system", + "scenario": null, + "name": "创建平台内部用户", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/users" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "10e281ee-e056-42c1-a199-8018bf18c288, eeb1933a-88d0-4533-9af2-e0f4a259f93e", + "traceId": "b2dcbc7eee37494aad4b108835ed6048", + "evidence": "", + "checkedAt": "2026-08-08T05:14:02.822Z" + }, + { + "module": "system", + "scenario": null, + "name": "内部用户账号、平台范围和角色正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/users" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "10e281ee-e056-42c1-a199-8018bf18c288, eeb1933a-88d0-4533-9af2-e0f4a259f93e", + "traceId": "b2dcbc7eee37494aad4b108835ed6048", + "evidence": "membershipId=2085957683798200324", + "checkedAt": "2026-08-08T05:14:02.822Z" + }, + { + "module": "system", + "scenario": null, + "name": "按账号查询平台内部用户", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/users?page=1&size=20&keyword=admin_accept_808051400516" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e1ef303f-24ae-436a-aa2b-ce5b76f016ca, 92c0fb22-93c8-487d-8019-37d78fc2ba62", + "traceId": "d25a6402a33e469985ee79889f09d323", + "evidence": "", + "checkedAt": "2026-08-08T05:14:02.876Z" + }, + { + "module": "system", + "scenario": null, + "name": "用户列表包含新账号且字段完整", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/users?page=1&size=20&keyword=admin_accept_808051400516" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e1ef303f-24ae-436a-aa2b-ce5b76f016ca, 92c0fb22-93c8-487d-8019-37d78fc2ba62", + "traceId": "d25a6402a33e469985ee79889f09d323", + "evidence": "records=1, missing=none, lastLoginAt=omitted", + "checkedAt": "2026-08-08T05:14:02.876Z" + }, + { + "module": "system", + "scenario": null, + "name": "编辑平台内部用户", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/users/2085957683798200324" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4e39c87a-93fa-4896-8857-5146174e094e, 1e74ca91-0c13-48bb-b036-ba4ff5f827a1", + "traceId": "dff8a83b24ac4cad88db53580d70c040", + "evidence": "", + "checkedAt": "2026-08-08T05:14:03.016Z" + }, + { + "module": "system", + "scenario": null, + "name": "用户编辑正确回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/users/2085957683798200324" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4e39c87a-93fa-4896-8857-5146174e094e, 1e74ca91-0c13-48bb-b036-ba4ff5f827a1", + "traceId": "dff8a83b24ac4cad88db53580d70c040", + "evidence": "membershipId=2085957683798200324", + "checkedAt": "2026-08-08T05:14:03.016Z" + }, + { + "module": "system", + "scenario": null, + "name": "新建内部用户可使用初始密码登录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/auth/login" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "fed533e5-6f54-40cc-85f9-c0cdac0c18b8, fe50d573-89ae-4a6f-831d-a4f774bb6829", + "traceId": "66226d4917b8491184774a9b6a6f6df5", + "evidence": "username=admin_accept_808051400516", + "checkedAt": "2026-08-08T05:14:03.353Z" + }, + { + "module": "system", + "scenario": null, + "name": "重置平台内部用户密码", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/users/2085957683798200324/password" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "adb853e7-9416-4afc-be43-c0e217d17fcc, 9340ff17-00ef-4db6-85e7-aedfb5346773", + "traceId": "294e8f1f4069495395ff5176d4d2d350", + "evidence": "", + "checkedAt": "2026-08-08T05:14:03.782Z" + }, + { + "module": "system", + "scenario": null, + "name": "内部用户使用重置密码登录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/auth/login" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "deb1eeb1-0f34-4a2a-9472-a994003091b0, e31e9cb9-d0ff-4851-aa55-6e9683c4356f", + "traceId": "38ff64c22101412b88c73ed5da859e3c", + "evidence": "username=admin_accept_808051400516", + "checkedAt": "2026-08-08T05:14:04.122Z" + }, + { + "module": "system", + "scenario": null, + "name": "停用平台内部用户", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/users/2085957683798200324/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4a45fd9b-2524-4b42-9836-65a45e73cafd, 99655130-8059-4aff-84bb-df133a6c0b62", + "traceId": "b1018f166a8e4c9e883812c5947c9429", + "evidence": "", + "checkedAt": "2026-08-08T05:14:04.390Z" + }, + { + "module": "system", + "scenario": null, + "name": "内部用户停用状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/users/2085957683798200324/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4a45fd9b-2524-4b42-9836-65a45e73cafd, 99655130-8059-4aff-84bb-df133a6c0b62", + "traceId": "b1018f166a8e4c9e883812c5947c9429", + "evidence": "status=DISABLED", + "checkedAt": "2026-08-08T05:14:04.390Z" + }, + { + "module": "system", + "scenario": null, + "name": "停用用户禁止登录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/auth/login" + }, + "http": 200, + "code": "A0403", + "message": "账号已禁用", + "requestId": "09028c38-bc5f-4353-8514-e9dc26ef9318", + "traceId": "2bdb482466404fe8830ea7285c882895", + "evidence": "HTTP=200, code=A0403", + "checkedAt": "2026-08-08T05:14:04.427Z" + }, + { + "module": "system", + "scenario": null, + "name": "清空测试角色权限", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/permissions" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "062b64eb-6a4b-4941-ae4d-4e103e1e832d, cc82a0f6-b8f8-4dd0-9aad-4169003610d4", + "traceId": "5d7cb8b37c26423abe0e82836b626ce2", + "evidence": "", + "checkedAt": "2026-08-08T05:14:04.539Z" + }, + { + "module": "system", + "scenario": "system-role-protection", + "name": "已分配成员的角色禁止删除", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "DELETE", + "path": "/api/platform/v1/iam/roles/2085957682548297730" + }, + "http": 200, + "code": "A0409", + "message": "角色已分配给成员,不能删除", + "requestId": "7e402aaa-ea41-4038-8406-2ac4db5cb330", + "traceId": "bbaa6529b2b246bb9a40794ee123e6ca", + "evidence": "HTTP=200, code=A0409", + "checkedAt": "2026-08-08T05:14:04.578Z" + }, + { + "module": "system", + "scenario": null, + "name": "清理时停用测试角色", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/2085957682548297730/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "fb7fdd33-c587-4204-8528-f511e3f573d0, 3cae648b-fd4e-4185-a50f-5aa6e8169af2", + "traceId": "9e8d34ce57bd4ab386f1be1f7fbbd0cc", + "evidence": "", + "checkedAt": "2026-08-08T05:14:04.683Z" + }, + { + "module": "system", + "scenario": null, + "name": "保留测试角色处于停用状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/2085957682548297730/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "fb7fdd33-c587-4204-8528-f511e3f573d0, 3cae648b-fd4e-4185-a50f-5aa6e8169af2", + "traceId": "9e8d34ce57bd4ab386f1be1f7fbbd0cc", + "evidence": "status=DISABLED", + "checkedAt": "2026-08-08T05:14:04.683Z" + }, + { + "module": "system", + "scenario": null, + "name": "删除临时权限资源", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "DELETE", + "path": "/api/platform/v1/iam/permissions/2085957681973678082" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3edcd23d-8ee7-4754-a914-898edd3a43a8, 00a6a172-ccc1-4e4a-9801-a3d65f50083d", + "traceId": "832b7fdd68d94d2980686914e5954240", + "evidence": "", + "checkedAt": "2026-08-08T05:14:04.716Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "查询平台仓库列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=20" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a2281e99-cb40-4d17-9aa0-57d6715c4063, 294e9cb7-5e20-4c86-a39d-38557bbf7d72", + "traceId": "f7c9ff6529dc417cb9d2182fc7362675", + "evidence": "", + "checkedAt": "2026-08-08T05:14:04.758Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "仓库列表分页结构正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=20" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a2281e99-cb40-4d17-9aa0-57d6715c4063, 294e9cb7-5e20-4c86-a39d-38557bbf7d72", + "traceId": "f7c9ff6529dc417cb9d2182fc7362675", + "evidence": "total=271", + "checkedAt": "2026-08-08T05:14:04.758Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "创建平台公共仓库", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/warehouse-admin" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "73ca8d73-63d8-4476-932c-9245d67b7478, 801b3965-1d64-4832-a13b-f7e533740b8f", + "traceId": "ca712de0bc9e4a4793d962a04997dda6", + "evidence": "", + "checkedAt": "2026-08-08T05:14:04.797Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "仓库创建返回字符串兼容 ID", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/warehouse-admin" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "73ca8d73-63d8-4476-932c-9245d67b7478, 801b3965-1d64-4832-a13b-f7e533740b8f", + "traceId": "ca712de0bc9e4a4793d962a04997dda6", + "evidence": "warehouseId=2085957693526294530", + "checkedAt": "2026-08-08T05:14:04.798Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "查询平台仓库详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin/2085957693526294530?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "fb6f6911-835e-43a5-a2a0-1b4fe542cc40, 7e8c2219-cede-423e-98d8-b7b4a8521cd6", + "traceId": "aad8adb1027144528db40d1bce317e0a", + "evidence": "", + "checkedAt": "2026-08-08T05:14:04.834Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "仓库详情、地址和能力正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin/2085957693526294530?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "fb6f6911-835e-43a5-a2a0-1b4fe542cc40, 7e8c2219-cede-423e-98d8-b7b4a8521cd6", + "traceId": "aad8adb1027144528db40d1bce317e0a", + "evidence": "addresses=1, capabilities=1", + "checkedAt": "2026-08-08T05:14:04.834Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "编辑平台仓库", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/warehouse-admin/2085957693526294530?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d2c8d2bc-43d3-4545-bc77-561ec3c01e07, 5d9e33b0-9f3a-45ac-bdd8-9d8e264049f4", + "traceId": "8d3f160b6e0e4787a4d6b13da3f3efbd", + "evidence": "", + "checkedAt": "2026-08-08T05:14:04.867Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "回查编辑后的平台仓库", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin/2085957693526294530?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "88968dff-d974-4937-a588-d54ed3259fc7, 21f08d37-7cb9-4d29-99f9-26c77a3111cf", + "traceId": "0e85be16ef2145b59014e239ecb053c6", + "evidence": "", + "checkedAt": "2026-08-08T05:14:04.896Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "仓库编辑已持久化", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin/2085957693526294530?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "88968dff-d974-4937-a588-d54ed3259fc7, 21f08d37-7cb9-4d29-99f9-26c77a3111cf", + "traceId": "0e85be16ef2145b59014e239ecb053c6", + "evidence": "warehouseId=2085957693526294530", + "checkedAt": "2026-08-08T05:14:04.896Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "创建仓库库位", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/locations?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "129d481b-ffaf-4822-85d2-f02666bf19d7, a0969e6c-c425-46c4-8588-b52f6ec37691", + "traceId": "87a4304c6470472d992407702d593e4d", + "evidence": "", + "checkedAt": "2026-08-08T05:14:04.934Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "查询库位详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations/2085957694109302785?tenantId=0&warehouseId=2085957693526294530" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7a71dc36-02b8-4741-9dd8-4018e58c0afd, d322fdbb-c133-4dce-aedc-42d7518b3b5e", + "traceId": "f01f56e0870f44ae8935c7237c4d8f55", + "evidence": "", + "checkedAt": "2026-08-08T05:14:04.958Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "库位详情关联正确仓库", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations/2085957694109302785?tenantId=0&warehouseId=2085957693526294530" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7a71dc36-02b8-4741-9dd8-4018e58c0afd, d322fdbb-c133-4dce-aedc-42d7518b3b5e", + "traceId": "f01f56e0870f44ae8935c7237c4d8f55", + "evidence": "locationId=2085957694109302785", + "checkedAt": "2026-08-08T05:14:04.958Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "编辑库位", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/locations/2085957694109302785?tenantId=0&warehouseId=2085957693526294530" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "21a74b64-3fd1-40e4-a923-d031c6145c39, 5fd69a06-d673-47df-ae66-097ec918ac0d", + "traceId": "42742fe2ff27458591982a5784b07221", + "evidence": "", + "checkedAt": "2026-08-08T05:14:04.994Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "回查编辑后的库位", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations/2085957694109302785?tenantId=0&warehouseId=2085957693526294530" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "660f19d6-49bf-4f7d-8f7a-c41682199681, 8bae617f-61ae-4bae-a6f7-98b535fad753", + "traceId": "acb2cbef0d1f485a8b00b0c6a9d0ff68", + "evidence": "", + "checkedAt": "2026-08-08T05:14:05.016Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "库位编辑与版本递增正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations/2085957694109302785?tenantId=0&warehouseId=2085957693526294530" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "660f19d6-49bf-4f7d-8f7a-c41682199681, 8bae617f-61ae-4bae-a6f7-98b535fad753", + "traceId": "acb2cbef0d1f485a8b00b0c6a9d0ff68", + "evidence": "version=1", + "checkedAt": "2026-08-08T05:14:05.016Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "停用库位", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PATCH", + "path": "/api/platform/v1/locations/2085957694109302785/status?tenantId=0&warehouseId=2085957693526294530" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7e7b56b2-0421-47c1-8220-810267600dfe, 0d4571eb-21bc-4e24-a2d2-365d149c5203", + "traceId": "c2594ec3e9cd40c4a19fd1c1f23ac250", + "evidence": "", + "checkedAt": "2026-08-08T05:14:05.056Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "删除未占用测试库位", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "DELETE", + "path": "/api/platform/v1/locations/2085957694109302785?tenantId=0&warehouseId=2085957693526294530&version=2" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c3975b41-9ffb-4480-92bc-01728f8f7a7e, 99753793-788e-4325-82c5-62ec145920b3", + "traceId": "5a102a30d8a54c7ca970d4321db4fc6c", + "evidence": "", + "checkedAt": "2026-08-08T05:14:05.085Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "创建仓库托盘", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/pallets?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "97929047-617a-4e0e-a4f1-b45f823d61c8, ab1e5ea0-ceb4-4dd0-8a41-027b6d935ba5", + "traceId": "8ffb28bc28cb4569afa67ba336516907", + "evidence": "", + "checkedAt": "2026-08-08T05:14:05.113Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "查询托盘详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets/2085957694868471810?tenantId=0&warehouseId=2085957693526294530" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "36badf33-3e8e-49d9-bc7a-c0fdf44ee0a7, 2711c649-3456-49c6-9e4d-3b76f7d54b5f", + "traceId": "99211d5ec5e64a1f99008be63f44649e", + "evidence": "", + "checkedAt": "2026-08-08T05:14:05.142Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "托盘详情关联正确仓库", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets/2085957694868471810?tenantId=0&warehouseId=2085957693526294530" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "36badf33-3e8e-49d9-bc7a-c0fdf44ee0a7, 2711c649-3456-49c6-9e4d-3b76f7d54b5f", + "traceId": "99211d5ec5e64a1f99008be63f44649e", + "evidence": "palletId=2085957694868471810", + "checkedAt": "2026-08-08T05:14:05.142Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "编辑托盘", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/pallets/2085957694868471810?tenantId=0&warehouseId=2085957693526294530" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "90fd34f0-0a84-40f2-b69e-f8b00b77a3e5, abf9cfa1-7681-4340-b742-f2fe981c5c51", + "traceId": "efc665ec768042e3870de200b5a0c923", + "evidence": "", + "checkedAt": "2026-08-08T05:14:05.181Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "回查编辑后的托盘", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets/2085957694868471810?tenantId=0&warehouseId=2085957693526294530" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "76c39336-59f8-4bb2-b0a8-60a568a50b47, 51440227-0b17-49c3-b1cd-99468d7cbfc5", + "traceId": "30562cedbf684c1db49aa5a78902193c", + "evidence": "", + "checkedAt": "2026-08-08T05:14:05.205Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "托盘编辑已持久化", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets/2085957694868471810?tenantId=0&warehouseId=2085957693526294530" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "76c39336-59f8-4bb2-b0a8-60a568a50b47, 51440227-0b17-49c3-b1cd-99468d7cbfc5", + "traceId": "30562cedbf684c1db49aa5a78902193c", + "evidence": "palletId=2085957694868471810", + "checkedAt": "2026-08-08T05:14:05.205Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "删除未使用测试托盘", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "DELETE", + "path": "/api/platform/v1/pallets/2085957694868471810?tenantId=0&warehouseId=2085957693526294530" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e62c2e16-22eb-4e98-81b5-aae326c8e836, fd9ea23e-4cf1-4408-8c42-dd8b9ee92ba7", + "traceId": "4f398e8d851542ada078fd5e1c80d34e", + "evidence": "", + "checkedAt": "2026-08-08T05:14:05.242Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "创建快递公司", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/express-companies?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "693ed99d-116b-4c38-b825-cd03290cacc8, d9a41b8c-479d-4ee5-b4e5-17ef683d3dfe", + "traceId": "bb4af8ed61c94755a586fc087d337b84", + "evidence": "", + "checkedAt": "2026-08-08T05:14:05.274Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "查询快递公司详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies/2085957695547949058?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "84e7953f-633e-43b8-9f71-097904302ff6, 7cc922f3-c131-4f31-8cec-0e1eab9b7c1f", + "traceId": "fd88ca99667c49ccb865e185de7b3d54", + "evidence": "", + "checkedAt": "2026-08-08T05:14:05.302Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "快递公司详情正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies/2085957695547949058?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "84e7953f-633e-43b8-9f71-097904302ff6, 7cc922f3-c131-4f31-8cec-0e1eab9b7c1f", + "traceId": "fd88ca99667c49ccb865e185de7b3d54", + "evidence": "expressId=2085957695547949058", + "checkedAt": "2026-08-08T05:14:05.302Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "编辑快递公司", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/express-companies/2085957695547949058?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2b89f890-dc7a-4639-9546-33a3dbaace0e, 7d449d33-c6e3-4bad-8b82-1ce62dac2950", + "traceId": "92f96cf864e345a393366ba08bc332b1", + "evidence": "", + "checkedAt": "2026-08-08T05:14:05.335Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "停用快递公司", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PATCH", + "path": "/api/platform/v1/express-companies/2085957695547949058/status?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c15c327f-8cc0-47d4-b247-6f289d0ac6e7, db45335e-b0e0-430f-9d93-dcb15f05071f", + "traceId": "3adf93fd5a5442979c52d738b1090eba", + "evidence": "", + "checkedAt": "2026-08-08T05:14:05.367Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "筛选快递公司列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies?page=1&size=20&keyword=EX808051400516" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "55126fd3-dbb6-4f8e-b5a2-3c794f01f305, 5c7e2182-004e-458e-a6a0-f1f700d3be17", + "traceId": "31dc79f085954da98b0441f81593a4d9", + "evidence": "", + "checkedAt": "2026-08-08T05:14:05.391Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "快递公司列表回显停用状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies?page=1&size=20&keyword=EX808051400516" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "55126fd3-dbb6-4f8e-b5a2-3c794f01f305, 5c7e2182-004e-458e-a6a0-f1f700d3be17", + "traceId": "31dc79f085954da98b0441f81593a4d9", + "evidence": "records=1", + "checkedAt": "2026-08-08T05:14:05.391Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "创建往来单位", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/partners?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f30e2155-9958-446d-88da-5253e4ee9002, 52966742-74ab-452c-bd07-1848b950a2cb", + "traceId": "29308c2eb20d4cf78593e3d7807595ff", + "evidence": "", + "checkedAt": "2026-08-08T05:14:05.430Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "查询往来单位详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners/2085957696193871873?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b0c5ac6a-843f-45e6-a69f-21e155639dd2, e2166764-34b4-49e4-a3d5-c59adf45f4cb", + "traceId": "5847abdb1c754290a4f0380a5a377e76", + "evidence": "", + "checkedAt": "2026-08-08T05:14:05.467Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "往来单位详情正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners/2085957696193871873?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b0c5ac6a-843f-45e6-a69f-21e155639dd2, e2166764-34b4-49e4-a3d5-c59adf45f4cb", + "traceId": "5847abdb1c754290a4f0380a5a377e76", + "evidence": "partnerId=2085957696193871873", + "checkedAt": "2026-08-08T05:14:05.468Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "编辑往来单位", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/partners/2085957696193871873?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "12e768d8-6430-4a0f-a5e6-04a57c994cef, 3b5dc702-2d89-461c-91aa-38279b72eb15", + "traceId": "fb20ef68feaf48eeb396ca0976bb289c", + "evidence": "", + "checkedAt": "2026-08-08T05:14:05.507Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "停用往来单位", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PATCH", + "path": "/api/platform/v1/partners/2085957696193871873/status?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b7710233-8fc6-4eb1-906b-80399ead5c32, cf9bae38-ea20-4fd5-b882-7a8cf0b15d3c", + "traceId": "d44e71f203ec452ea045272c2dbb6238", + "evidence": "", + "checkedAt": "2026-08-08T05:14:05.535Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "筛选往来单位列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners?page=1&size=20&keyword=PT808051400516" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8c28e33b-0520-48b8-85e6-06ff9b7a8dfb, 024961a6-e896-4e32-9e27-def744eb62c0", + "traceId": "6fb1d3c244da4e8396571d02a27e27c1", + "evidence": "", + "checkedAt": "2026-08-08T05:14:05.564Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "往来单位列表回显编辑与停用状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners?page=1&size=20&keyword=PT808051400516" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8c28e33b-0520-48b8-85e6-06ff9b7a8dfb, 024961a6-e896-4e32-9e27-def744eb62c0", + "traceId": "6fb1d3c244da4e8396571d02a27e27c1", + "evidence": "records=1", + "checkedAt": "2026-08-08T05:14:05.564Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "下载仓库导入模板", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin/import-template" + }, + "http": 200, + "code": null, + "message": "3852 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "12a07f71-8d73-4454-a36b-5269c47a7ab2, 70e33218-dea5-462d-8810-a287a08eb51f", + "traceId": "cdf76d9f66594521b5f8d277c2f69fdc", + "evidence": "bytes=3852, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "checkedAt": "2026-08-08T05:14:05.604Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "下载快递公司导入模板", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies/import-template" + }, + "http": 200, + "code": null, + "message": "3691 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "6950befb-0810-4e98-b943-c4cd4cd6c26f, ed9ef384-099e-4654-a39b-05dfe90a8e2d", + "traceId": "e4a88da9d5df4e90b45e0d59c31b4de4", + "evidence": "bytes=3691, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "checkedAt": "2026-08-08T05:14:05.652Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "下载往来单位导入模板", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners/import-template" + }, + "http": 200, + "code": null, + "message": "3829 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "a7f23a62-b4ac-489a-b17f-b0880f619fea, 2dac0208-4014-49f1-b6e5-efc11a35522f", + "traceId": "4c4c8f3a0f5247379c9fe90ba92159f3", + "evidence": "bytes=3829, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "checkedAt": "2026-08-08T05:14:05.699Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "停用测试仓库", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PATCH", + "path": "/api/platform/v1/warehouse-admin/2085957693526294530/status?tenantId=0&status=INACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "78b7b9c6-1501-4dcd-bf95-63a7508b3c80, 7cb108df-dfb3-48d0-9a77-fa15587fb9f2", + "traceId": "9ae2c3bbffc440528dceb118d46e5979", + "evidence": "", + "checkedAt": "2026-08-08T05:14:05.736Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 测试账号登录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/auth/login" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "46a3d827-902e-4c4c-a63b-b6d1c96d8d95, f249c9c6-03a6-4116-aad6-836154b5fbdf", + "traceId": "b91ae8d7b95c42a7895003843a5d4e23", + "evidence": "username=merchant_admin", + "checkedAt": "2026-08-08T05:14:06.087Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询当前企业资料", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/iam/tenant/profile" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4dc17af5-dbd5-4a24-b81f-f2b17ecc618a, 716e0b50-f8df-4e66-bd18-ad45a89600e2", + "traceId": "480025d248674057a107376d93bcac64", + "evidence": "", + "checkedAt": "2026-08-08T05:14:06.118Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 测试企业已审核且客户 ID 有效", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/iam/tenant/profile" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4dc17af5-dbd5-4a24-b81f-f2b17ecc618a, 716e0b50-f8df-4e66-bd18-ad45a89600e2", + "traceId": "480025d248674057a107376d93bcac64", + "evidence": "tenantId=10001, status=ACTIVE", + "checkedAt": "2026-08-08T05:14:06.118Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询客户固定箱型", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1879b5c8-4d12-4fa4-ac79-5472b8d0e0c1, 80e33a39-94ea-475a-8203-24a8d87a19f1", + "traceId": "8f000f3a12e54d6c97113f209a27e474", + "evidence": "tenantId=10001", + "checkedAt": "2026-08-08T05:14:06.147Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "固定四箱型顺序、内径及每边加2cm正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1879b5c8-4d12-4fa4-ac79-5472b8d0e0c1, 80e33a39-94ea-475a-8203-24a8d87a19f1", + "traceId": "8f000f3a12e54d6c97113f209a27e474", + "evidence": "types=SMALL,MEDIUM,LARGE,EXTRA_LARGE", + "checkedAt": "2026-08-08T05:14:06.147Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询国内收货仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=DOMESTIC" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b0254882-770c-4cd5-a044-ab10383cc074, 90eeb652-93fe-4d45-8eb9-7decdce1ae4f", + "traceId": "465b1d28620e469b83dcf4798a197ea8", + "evidence": "", + "checkedAt": "2026-08-08T05:14:06.179Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在可用国内收货仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=DOMESTIC" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b0254882-770c-4cd5-a044-ab10383cc074, 90eeb652-93fe-4d45-8eb9-7decdce1ae4f", + "traceId": "465b1d28620e469b83dcf4798a197ea8", + "evidence": "count=2", + "checkedAt": "2026-08-08T05:14:06.179Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询 FBA 目的仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=FBA" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5fd401bd-07a5-45d3-a860-9038b3757b3a, be7b26ca-4ce1-418b-b23f-ad9e49c4c921", + "traceId": "cad86d84e6284fa79a3399c784fabdce", + "evidence": "", + "checkedAt": "2026-08-08T05:14:06.237Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在可用 FBA 目的仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=FBA" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5fd401bd-07a5-45d3-a860-9038b3757b3a, be7b26ca-4ce1-418b-b23f-ad9e49c4c921", + "traceId": "cad86d84e6284fa79a3399c784fabdce", + "evidence": "count=200", + "checkedAt": "2026-08-08T05:14:06.237Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询可用计费渠道", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/first-leg/pricing/channels?originWarehouseId=193000000000200001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3a4217dd-d2ad-4f4c-a5f0-167c94962b18, fea9c1ae-3aed-4c6d-b294-2951e3eb85ea", + "traceId": "c46174efec8548cb806e6872af777d39", + "evidence": "", + "checkedAt": "2026-08-08T05:14:06.279Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在带计价税制的可用渠道", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/first-leg/pricing/channels?originWarehouseId=193000000000200001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3a4217dd-d2ad-4f4c-a5f0-167c94962b18, fea9c1ae-3aed-4c6d-b294-2951e3eb85ea", + "traceId": "c46174efec8548cb806e6872af777d39", + "evidence": "count=15", + "checkedAt": "2026-08-08T05:14:06.279Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询发货客户候选", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/partners/candidates?type=SHIPPER" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "518014c9-b610-419d-a258-f9273e10212a, 68da2c48-6785-4fb0-bf7f-280a281e894f", + "traceId": "781b5b99fd314de88adffff50fcd47ef", + "evidence": "", + "checkedAt": "2026-08-08T05:14:06.305Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 上传产品图片", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/files/product-images" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "384d3b52-2e4e-4128-94be-70a0c9788ac0, a12c8f40-b100-42bc-9f48-679e3af3ae36", + "traceId": "c358d36765924c99ac980fb1f07fdc48", + "evidence": "contentType=image/png", + "checkedAt": "2026-08-08T05:14:06.334Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "产品图片上传返回字符串文件 ID", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/files/product-images" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "384d3b52-2e4e-4128-94be-70a0c9788ac0, a12c8f40-b100-42bc-9f48-679e3af3ae36", + "traceId": "c358d36765924c99ac980fb1f07fdc48", + "evidence": "fileIdType=string, contentType=image/png", + "checkedAt": "2026-08-08T05:14:06.334Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 可下载本轮产品图片", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/files/product-images/2085957699993403394" + }, + "http": 200, + "code": null, + "message": null, + "requestId": "50ead810-1f22-449e-89b8-99fcc7455f45, 97309721-ad19-4e3e-8faa-e2c123810b5d", + "traceId": "93f50cd325be479db0b7a8fad193f5c2", + "evidence": "bytes=68, contentType=image/png", + "checkedAt": "2026-08-08T05:14:06.368Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 创建四箱型隔离订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "27c69206-7ec6-4b44-bfc6-4f470ecb7d49, a8ec715e-f0a1-45ed-bd00-3e4bc436d7f6", + "traceId": "50798a9decec414fa4a6f57e68b2a77a", + "evidence": "marker=ADMIN-API-20260808051400516", + "checkedAt": "2026-08-08T05:14:06.442Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 创建订单幂等重放", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ec9bcd04-d8b5-4ddd-989f-f4c851cc98e9, 183bc243-9682-426c-ac3f-49ca4ce80188", + "traceId": "1dd646259ea943d9a92d28deec6bf369", + "evidence": "", + "checkedAt": "2026-08-08T05:14:06.473Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 创建幂等结果一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ec9bcd04-d8b5-4ddd-989f-f4c851cc98e9, 183bc243-9682-426c-ac3f-49ca4ce80188", + "traceId": "1dd646259ea943d9a92d28deec6bf369", + "evidence": "orderId=2085957700408639489, replayedId=2085957700408639489", + "checkedAt": "2026-08-08T05:14:06.473Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询隔离订单草稿", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085957700408639489" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "cfca8884-6754-4054-aacb-74eaf8fa68a4, 11df63d6-0b8f-490e-a82d-aab75e7216bd", + "traceId": "dc1981a07df148dfa9b347d0dcffae9a", + "evidence": "", + "checkedAt": "2026-08-08T05:14:06.506Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 草稿身份、marker 和状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085957700408639489" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "cfca8884-6754-4054-aacb-74eaf8fa68a4, 11df63d6-0b8f-490e-a82d-aab75e7216bd", + "traceId": "dc1981a07df148dfa9b347d0dcffae9a", + "evidence": "orderNo=FL2085957700408639489, status=DRAFT", + "checkedAt": "2026-08-08T05:14:06.506Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "四箱型产品字段及图片契约完整回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085957700408639489" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "cfca8884-6754-4054-aacb-74eaf8fa68a4, 11df63d6-0b8f-490e-a82d-aab75e7216bd", + "traceId": "dc1981a07df148dfa9b347d0dcffae9a", + "evidence": "cargoes=4, imageFileId=2085957699993403394", + "checkedAt": "2026-08-08T05:14:06.506Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 提交隔离订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg/2085957700408639489/submit" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6a1bfbd6-8b3c-4639-bc20-05df2d10ded4, b2f3cad9-6e0d-4076-a172-7032474ec01d", + "traceId": "ce86da234ebc47a3b6962f533c41fd60", + "evidence": "orderId=2085957700408639489", + "checkedAt": "2026-08-08T05:14:06.578Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 回查已提交订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085957700408639489" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "51be942d-30bf-4654-a8c7-ca8c328ba0b7, fd97fb00-a620-4aa7-a782-4f25429b5b07", + "traceId": "40436f753773412f92b80c49b31bf47e", + "evidence": "", + "checkedAt": "2026-08-08T05:14:06.614Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 订单已进入待审核状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085957700408639489" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "51be942d-30bf-4654-a8c7-ca8c328ba0b7, fd97fb00-a620-4aa7-a782-4f25429b5b07", + "traceId": "40436f753773412f92b80c49b31bf47e", + "evidence": "status=SUBMITTED", + "checkedAt": "2026-08-08T05:14:06.614Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询统一订单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders?page=1&size=100&tenantId=10001&orderNo=FL2085957700408639489" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e633c4ca-600a-4c82-aac1-acc715c5f5cf, d8a5ae0c-b9d2-429d-a72f-201c9689b096", + "traceId": "bf0e25f9a4474483abb1098645eeaefa", + "evidence": "", + "checkedAt": "2026-08-08T05:14:06.654Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 统一订单列表只核对本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders?page=1&size=100&tenantId=10001&orderNo=FL2085957700408639489" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e633c4ca-600a-4c82-aac1-acc715c5f5cf, d8a5ae0c-b9d2-429d-a72f-201c9689b096", + "traceId": "bf0e25f9a4474483abb1098645eeaefa", + "evidence": "orderId=2085957700408639489, found=true", + "checkedAt": "2026-08-08T05:14:06.654Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询统一订单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085957700408639489?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "07ca8215-0de1-4582-9a4c-0f31c60b6227, 473338e1-8177-4209-bb59-990fc10f88d6", + "traceId": "102394e33cf94c7a8dbbb4027f429feb", + "evidence": "", + "checkedAt": "2026-08-08T05:14:06.693Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 统一订单详情身份与待审核状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085957700408639489?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "07ca8215-0de1-4582-9a4c-0f31c60b6227, 473338e1-8177-4209-bb59-990fc10f88d6", + "traceId": "102394e33cf94c7a8dbbb4027f429feb", + "evidence": "mainStatus=PENDING_REVIEW, timeline=2", + "checkedAt": "2026-08-08T05:14:06.693Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询头程订单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg?tenantId=10001&keyword=FL2085957700408639489&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e9d1c854-a4a2-4098-83cf-3923e0c56165, 6cef4bb6-7234-40a5-a89a-f958c3d89dcc", + "traceId": "822ccebb9abc4cfd81f54854f3e9aefc", + "evidence": "", + "checkedAt": "2026-08-08T05:14:06.735Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 头程订单列表只核对本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg?tenantId=10001&keyword=FL2085957700408639489&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e9d1c854-a4a2-4098-83cf-3923e0c56165, 6cef4bb6-7234-40a5-a89a-f958c3d89dcc", + "traceId": "822ccebb9abc4cfd81f54854f3e9aefc", + "evidence": "orderId=2085957700408639489, found=true", + "checkedAt": "2026-08-08T05:14:06.735Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询头程订单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085957700408639489?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9c174e7c-853d-420e-be48-54fb2b4dde46, b368270c-548e-4f72-8f2b-c3cd28617c1d", + "traceId": "3d80b2363b2249d7b6f9d54da2ae9d94", + "evidence": "", + "checkedAt": "2026-08-08T05:14:06.773Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 头程订单详情聚合结构完整", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085957700408639489?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9c174e7c-853d-420e-be48-54fb2b4dde46, b368270c-548e-4f72-8f2b-c3cd28617c1d", + "traceId": "3d80b2363b2249d7b6f9d54da2ae9d94", + "evidence": "cargoes=4, history=2", + "checkedAt": "2026-08-08T05:14:06.773Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "四箱型产品字段及图片契约完整回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085957700408639489?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9c174e7c-853d-420e-be48-54fb2b4dde46, b368270c-548e-4f72-8f2b-c3cd28617c1d", + "traceId": "3d80b2363b2249d7b6f9d54da2ae9d94", + "evidence": "cargoes=4, imageFileId=2085957699993403394", + "checkedAt": "2026-08-08T05:14:06.773Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 为本轮订单添加内部备注", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085957700408639489/internal-notes?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "98ab458a-c6d2-45e6-a07b-8e59881320b5, 30420f01-d2d2-47a0-b06a-702dfcb19fb7", + "traceId": "8e5f76f8052c48d08d25bfc38b339ed1", + "evidence": "", + "checkedAt": "2026-08-08T05:14:06.806Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 审核通过本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085957700408639489/approve?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "cb4ef14c-e398-42df-932d-3a2af08a5b4d, 21e03089-223e-4e9e-9a6b-69f3c83c82cf", + "traceId": "426774c8282a489c85d524e7a409e9c1", + "evidence": "orderId=2085957700408639489", + "checkedAt": "2026-08-08T05:14:06.840Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "审核后生成隔离入库单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085957700408639489?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "069ce3e1-2505-4d0b-8231-28ceeed1eff3, c05ae2ae-c681-4e3e-aec0-0451d1944e33", + "traceId": "a61d28278b3042b7899462c350dced1c", + "evidence": "inboundId=2085957703761965058", + "checkedAt": "2026-08-08T05:14:07.936Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询本轮入库单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085957703761965058?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6fcc25b6-f541-4e6c-a5ab-9efb38f671cb, 080fabdf-0875-41ba-8715-3a6fc1298468", + "traceId": "58da8f0728694e1c9b23aa734669d5fb", + "evidence": "inboundId=2085957703761965058", + "checkedAt": "2026-08-08T05:14:07.970Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "隔离入库单 marker 来源与可测量状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085957703761965058?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6fcc25b6-f541-4e6c-a5ab-9efb38f671cb, 080fabdf-0875-41ba-8715-3a6fc1298468", + "traceId": "58da8f0728694e1c9b23aa734669d5fb", + "evidence": "markerFound=true, status=WAIT_MEASURE", + "checkedAt": "2026-08-08T05:14:07.970Z" + }, + { + "module": "orders", + "scenario": null, + "name": "入库单详情包含托盘库位、文件、备注和状态历史", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085957703761965058?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6fcc25b6-f541-4e6c-a5ab-9efb38f671cb, 080fabdf-0875-41ba-8715-3a6fc1298468", + "traceId": "58da8f0728694e1c9b23aa734669d5fb", + "evidence": "inboundId=2085957703761965058, history=1", + "checkedAt": "2026-08-08T05:14:07.970Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询入库单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds?tenantId=10001&inboundCode=RK-2085957700408639489&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7e706b9b-cd7e-4826-880d-90dc9e3c1410, 94ae72ee-5291-459b-8eeb-a6682d7cbd52", + "traceId": "9e5a6a0ca2cf4478b36911d3b652e389", + "evidence": "", + "checkedAt": "2026-08-08T05:14:08.008Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 入库单列表只核对本轮入库单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds?tenantId=10001&inboundCode=RK-2085957700408639489&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7e706b9b-cd7e-4826-880d-90dc9e3c1410, 94ae72ee-5291-459b-8eeb-a6682d7cbd52", + "traceId": "9e5a6a0ca2cf4478b36911d3b652e389", + "evidence": "inboundId=2085957703761965058, total=1", + "checkedAt": "2026-08-08T05:14:08.008Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询本轮订单履约任务", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/by-order/2085957700408639489?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0380da7f-6fb4-430b-a9dd-d6625f8fe2e8, 79f1d90a-927f-4e56-8d28-c49f9baaaaa0", + "traceId": "5e2303766c464f27a4a4a20df0a11481", + "evidence": "新订单应生成可查询的履约任务", + "checkedAt": "2026-08-08T05:14:08.030Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "履约任务与本轮订单和客户一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/by-order/2085957700408639489?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0380da7f-6fb4-430b-a9dd-d6625f8fe2e8, 79f1d90a-927f-4e56-8d28-c49f9baaaaa0", + "traceId": "5e2303766c464f27a4a4a20df0a11481", + "evidence": "taskId=2085957703757770754, status=PENDING_ASSIGNMENT", + "checkedAt": "2026-08-08T05:14:08.030Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询本轮履约任务分配历史", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/2085957703757770754/assignment-history?tenantId=10001&page=1&size=20" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0adf696e-763f-414d-9dd8-f8deae392b1c, c92beda0-95f0-4921-9205-712db225ae8b", + "traceId": "6f77afeb521f4e3d81e91aa707b8b8d5", + "evidence": "", + "checkedAt": "2026-08-08T05:14:08.065Z" + }, + { + "module": "orders", + "scenario": null, + "name": "履约分配历史分页结构正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/2085957703757770754/assignment-history?tenantId=10001&page=1&size=20" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0adf696e-763f-414d-9dd8-f8deae392b1c, c92beda0-95f0-4921-9205-712db225ae8b", + "traceId": "6f77afeb521f4e3d81e91aa707b8b8d5", + "evidence": "taskId=2085957703757770754, total=0", + "checkedAt": "2026-08-08T05:14:08.065Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 受理本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085957700408639489/accept?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "86cafaae-0662-4bc8-9018-e3235b3c4347, 63371d82-ef3b-4153-8cb9-0ab07bda0cde", + "traceId": "f9a5055dde014689bcece3652087f99d", + "evidence": "", + "checkedAt": "2026-08-08T05:14:08.098Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 启动本轮订单履约", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085957700408639489/start?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "96e27725-0f93-4d01-8e80-6baf85506c6f, bc748663-5a47-4511-af36-b734e867a76c", + "traceId": "390ed863b8574fa6b03e9fd255a6aeb1", + "evidence": "", + "checkedAt": "2026-08-08T05:14:08.129Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 回查本轮订单履约状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085957700408639489?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "456cce68-e9ad-4382-a24b-1de98315c394, f269937f-185d-4e17-8167-6f3537ed5fea", + "traceId": "8591074cf2334b4e87ab8b2cdf371338", + "evidence": "", + "checkedAt": "2026-08-08T05:14:08.157Z" + }, + { + "module": "orders", + "scenario": null, + "name": "本轮订单已进入处理中且保留状态历史", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085957700408639489?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "456cce68-e9ad-4382-a24b-1de98315c394, f269937f-185d-4e17-8167-6f3537ed5fea", + "traceId": "8591074cf2334b4e87ab8b2cdf371338", + "evidence": "status=PROCESSING, history=5", + "checkedAt": "2026-08-08T05:14:08.157Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "查询发布前船期价格版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "244c84f1-e6a6-43f6-9736-674e5be170c4, 9754eed7-ea8f-43d4-af4b-e1e11045fda0", + "traceId": "14769800532a4276a4f1ee1d88df1fc7", + "evidence": "", + "checkedAt": "2026-08-08T05:14:08.184Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "发布前最多一份生效版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "244c84f1-e6a6-43f6-9736-674e5be170c4, 9754eed7-ea8f-43d4-af4b-e1e11045fda0", + "traceId": "14769800532a4276a4f1ee1d88df1fc7", + "evidence": "versions=12, active=1", + "checkedAt": "2026-08-08T05:14:08.184Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "船期价格测试文件已隔离", + "passed": true, + "deploymentBlocker": false, + "request": null, + "http": null, + "code": null, + "message": null, + "requestId": null, + "traceId": null, + "evidence": "fileName=ADMIN-API-20260808051400516-2026.08.03柏悦价格表 船期2026.08.12.xlsx, bytes=1343413, sha256=3170fd3aa8795cd816ca9600f87a6a2a06b15d0cf6042d4592f33d4b30c7b8ab", + "checkedAt": "2026-08-08T05:14:08.188Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "上传并解析船期价格表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b3482b1f-01e8-42f9-a8d9-0b6fdd43da4a, c6092d0f-a89c-4122-ad48-c15400df1adc", + "traceId": "68090c0f775f40089013694a03f7d32e", + "evidence": "fileName=ADMIN-API-20260808051400516-2026.08.03柏悦价格表 船期2026.08.12.xlsx, bytes=1343413, sha256=3170fd3aa8795cd816ca9600f87a6a2a06b15d0cf6042d4592f33d4b30c7b8ab", + "checkedAt": "2026-08-08T05:14:10.067Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "上传返回隔离的待确认版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b3482b1f-01e8-42f9-a8d9-0b6fdd43da4a, c6092d0f-a89c-4122-ad48-c15400df1adc", + "traceId": "68090c0f775f40089013694a03f7d32e", + "evidence": "versionId=2085957708019183617, status=PENDING_CONFIRMATION, fileName=ADMIN-API-20260808051400516-2026.08.03柏悦价格表 船期2026.08.12.xlsx, shaMatched=true", + "checkedAt": "2026-08-08T05:14:10.068Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "解析出15个固定渠道且编码唯一", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b3482b1f-01e8-42f9-a8d9-0b6fdd43da4a, c6092d0f-a89c-4122-ad48-c15400df1adc", + "traceId": "68090c0f775f40089013694a03f7d32e", + "evidence": "channelCount=15, unique=15, missing=none", + "checkedAt": "2026-08-08T05:14:10.068Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "解析价格行完整且可追溯到 Excel", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b3482b1f-01e8-42f9-a8d9-0b6fdd43da4a, c6092d0f-a89c-4122-ad48-c15400df1adc", + "traceId": "68090c0f775f40089013694a03f7d32e", + "evidence": "rateCount=2157, declared=2157, valid=true", + "checkedAt": "2026-08-08T05:14:10.068Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "解析阻断仅包含可确认的仓库映射问题", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b3482b1f-01e8-42f9-a8d9-0b6fdd43da4a, c6092d0f-a89c-4122-ad48-c15400df1adc", + "traceId": "68090c0f775f40089013694a03f7d32e", + "evidence": "blocking=0, unexpected=none, infrastructure=none", + "checkedAt": "2026-08-08T05:14:10.068Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "上传后回查价格版本列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e1165337-6ae9-44e1-86b3-251d989e8f43, 920ae2a9-33c8-4cb0-a79a-79a34f575d9d", + "traceId": "1647a2770cc1412597518e341540f65f", + "evidence": "", + "checkedAt": "2026-08-08T05:14:10.099Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "上传只生成待确认版本且不替换当前生效版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e1165337-6ae9-44e1-86b3-251d989e8f43, 920ae2a9-33c8-4cb0-a79a-79a34f575d9d", + "traceId": "1647a2770cc1412597518e341540f65f", + "evidence": "pending=PENDING_CONFIRMATION, activeBefore=2085956560252088321, activeAfterUpload=2085956560252088321", + "checkedAt": "2026-08-08T05:14:10.100Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "查询待确认版本渠道和价格预览", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books/2085957708019183617" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7a6c607a-a494-44aa-a24c-ac8047457134, 884462c1-2760-402a-9e61-49eef40e18f9", + "traceId": "dc1b03c61f494e91aa0631bd0c46e7ea", + "evidence": "", + "checkedAt": "2026-08-08T05:14:10.173Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "详情与上传解析结果一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books/2085957708019183617" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7a6c607a-a494-44aa-a24c-ac8047457134, 884462c1-2760-402a-9e61-49eef40e18f9", + "traceId": "dc1b03c61f494e91aa0631bd0c46e7ea", + "evidence": "versionId=2085957708019183617, channels=15, rates=2157, issues=2", + "checkedAt": "2026-08-08T05:14:10.173Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "下载原始 XLSX 且内容散列一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books/2085957708019183617/source" + }, + "http": 200, + "code": null, + "message": "1343413 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "8dde13f5-aad6-42c2-8ab2-44e31c316d37, 84ae161f-b561-43b9-aea0-22c41ce203ac, 4df6baaa-c624-4fa7-abfe-66601acfa3bc", + "traceId": "7e54f8ad21874709aa723c668219e545, 5635086c75aa468f8cf9d361326d20f7", + "evidence": "bytes=1343413, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, zipMagic=true, sha256=3170fd3aa8795cd816ca9600f87a6a2a06b15d0cf6042d4592f33d4b30c7b8ab", + "checkedAt": "2026-08-08T05:14:10.261Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "查询启用的平台公共国内仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=200&status=ACTIVE&warehouseType=DOMESTIC" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "49523df3-5ca2-4ef0-9502-17ea459bef93, e771bf48-506b-4f2a-b9d2-4f1780bda1f3", + "traceId": "e0f06a16e222494396834a1d10353720", + "evidence": "", + "checkedAt": "2026-08-08T05:14:10.287Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "查询启用的平台公共海外仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=200&status=ACTIVE&warehouseType=OVERSEAS" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c8b6bbbb-7c13-437c-8f1a-6739a12b090b, 50735223-ab70-4a2e-8017-3709d8918283", + "traceId": "7866711e657340bdb4f54a22e1cc3237", + "evidence": "", + "checkedAt": "2026-08-08T05:14:10.325Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "国内起运仓和目的海外仓均精确映射", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=200&status=ACTIVE&warehouseType=OVERSEAS" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c8b6bbbb-7c13-437c-8f1a-6739a12b090b, 50735223-ab70-4a2e-8017-3709d8918283", + "traceId": "7866711e657340bdb4f54a22e1cc3237", + "evidence": "origins=CN-DONGGUAN-01->193000000000200002,CN-YIWU-01->193000000000200001, overseas=纽约仓->193000000000200004,洛杉矶仓->193000000000200003, missing=none", + "checkedAt": "2026-08-08T05:14:10.326Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "确认仓库映射并立即生效", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books/2085957708019183617/publish" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "391dd823-2ec2-4af4-97e6-379f7cd7de74, 49edafd5-0765-41ae-9a54-fd8b1c927950", + "traceId": "36b6c977c3094fd6bcfe1957ffd4cb7e", + "evidence": "versionId=2085957708019183617, originMappings=2, overseasMappings=2", + "checkedAt": "2026-08-08T05:14:11.987Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "发布后价格版本为 ACTIVE 且无阻断", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books/2085957708019183617/publish" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "391dd823-2ec2-4af4-97e6-379f7cd7de74, 49edafd5-0765-41ae-9a54-fd8b1c927950", + "traceId": "36b6c977c3094fd6bcfe1957ffd4cb7e", + "evidence": "status=ACTIVE, blocking=0, publishedAt=2026-08-08T13:14:10.88, channels=15, rates=2157", + "checkedAt": "2026-08-08T05:14:11.987Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "发布后回查当前生效和历史版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0d40840d-dea2-4b8a-9bc1-fcb21bb55918, f89130e9-a720-48ad-9260-ef3bd3f584d9", + "traceId": "a11cd09719e445c68de82c0876823bee", + "evidence": "", + "checkedAt": "2026-08-08T05:14:12.029Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "始终只有一份当前生效版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0d40840d-dea2-4b8a-9bc1-fcb21bb55918, f89130e9-a720-48ad-9260-ef3bd3f584d9", + "traceId": "a11cd09719e445c68de82c0876823bee", + "evidence": "active=2085957708019183617", + "checkedAt": "2026-08-08T05:14:12.029Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "上一生效版本已保留为历史版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0d40840d-dea2-4b8a-9bc1-fcb21bb55918, f89130e9-a720-48ad-9260-ef3bd3f584d9", + "traceId": "a11cd09719e445c68de82c0876823bee", + "evidence": "previous=2085956560252088321, superseded=true", + "checkedAt": "2026-08-08T05:14:12.029Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "查询当前生效价格版本详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books/2085957708019183617" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "464939dc-e50a-4238-be94-4a5542f011bf, cc6d38d7-fe77-4949-80ee-b50751c5ed60", + "traceId": "759b4e4863584d40876a870646271b84", + "evidence": "", + "checkedAt": "2026-08-08T05:14:12.117Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "当前生效版本预览数据完整", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books/2085957708019183617" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "464939dc-e50a-4238-be94-4a5542f011bf, cc6d38d7-fe77-4949-80ee-b50751c5ed60", + "traceId": "759b4e4863584d40876a870646271b84", + "evidence": "status=ACTIVE, channels=15, rates=2157", + "checkedAt": "2026-08-08T05:14:12.117Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "已生效版本禁止重复发布", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books/2085957708019183617/publish" + }, + "http": 200, + "code": "A0409", + "message": "只有待确认上传记录可以确认并生效", + "requestId": "d9da0a98-af82-4fdd-906a-877dd09c9b8f", + "traceId": "11884d1e589a48588880a2b68e41e041", + "evidence": "HTTP=200, code=A0409", + "checkedAt": "2026-08-08T05:14:12.148Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "重复发布被拒绝后回查版本状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6ef8f85a-4c52-4269-a485-32c8f28566c3, 980b371d-030c-458a-9fb9-c469df93cd8e", + "traceId": "63026e8a564243969d39a9c86d0189b1", + "evidence": "", + "checkedAt": "2026-08-08T05:14:12.177Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "重复发布未改变唯一生效版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6ef8f85a-4c52-4269-a485-32c8f28566c3, 980b371d-030c-458a-9fb9-c469df93cd8e", + "traceId": "63026e8a564243969d39a9c86d0189b1", + "evidence": "active=2085957708019183617", + "checkedAt": "2026-08-08T05:14:12.177Z" + }, + { + "module": "downloads", + "scenario": null, + "name": "创建客户列表导出任务", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/export-tasks" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e70479d1-91e3-4874-99e4-23236bdce2d4, 107bd8e5-68d4-4b90-8d9e-a1bd50301a5b", + "traceId": "02e1648232d04eed907340dbf4e6083c", + "evidence": "", + "checkedAt": "2026-08-08T05:14:12.217Z" + }, + { + "module": "downloads", + "scenario": null, + "name": "导出任务创建字段正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/export-tasks" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e70479d1-91e3-4874-99e4-23236bdce2d4, 107bd8e5-68d4-4b90-8d9e-a1bd50301a5b", + "traceId": "02e1648232d04eed907340dbf4e6083c", + "evidence": "taskId=2085957724634939393, status=PENDING", + "checkedAt": "2026-08-08T05:14:12.217Z" + }, + { + "module": "downloads", + "scenario": null, + "name": "查询下载中心任务列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=20&exportType=CUSTOMER_LIST" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "46d5fd21-0384-42ad-90fe-187d3958838d, 632ba94d-9d07-430b-acfe-902cb4b5cb35", + "traceId": "d46174a405fb4ff594cb57b12ae92ca9", + "evidence": "", + "checkedAt": "2026-08-08T05:14:12.256Z" + }, + { + "module": "downloads", + "scenario": null, + "name": "下载中心列表包含新任务", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=20&exportType=CUSTOMER_LIST" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "46d5fd21-0384-42ad-90fe-187d3958838d, 632ba94d-9d07-430b-acfe-902cb4b5cb35", + "traceId": "d46174a405fb4ff594cb57b12ae92ca9", + "evidence": "records=8", + "checkedAt": "2026-08-08T05:14:12.256Z" + }, + { + "module": "downloads", + "scenario": null, + "name": "轮询导出任务直到终态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks/2085957724634939393" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "42e61cce-e70d-4a18-855b-fb52d5625a0d, b43965b2-adf1-4b3b-b11a-b356c276a5a9", + "traceId": "094df90c5a114f138992e3a986834bac", + "evidence": "status=SUCCEEDED, processedRows=0", + "checkedAt": "2026-08-08T05:14:16.352Z" + }, + { + "module": "downloads", + "scenario": null, + "name": "查询导出任务详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks/2085957724634939393" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d9c5a3fa-8b5a-4b3c-a33d-0c7c85de5d07, 44cde527-5aed-429d-a627-c1114605902a", + "traceId": "f3a08bd409af41dca0ede9cfebce4a07", + "evidence": "", + "checkedAt": "2026-08-08T05:14:16.386Z" + }, + { + "module": "downloads", + "scenario": null, + "name": "导出详情行数和文件元数据正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks/2085957724634939393" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d9c5a3fa-8b5a-4b3c-a33d-0c7c85de5d07, 44cde527-5aed-429d-a627-c1114605902a", + "traceId": "f3a08bd409af41dca0ede9cfebce4a07", + "evidence": "processedRows=0, sizeBytes=4066", + "checkedAt": "2026-08-08T05:14:16.387Z" + }, + { + "module": "downloads", + "scenario": null, + "name": "下载并校验客户列表 XLSX", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks/2085957724634939393/download" + }, + "http": 200, + "code": null, + "message": "4066 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "b2e9e18a-c7a6-452a-91ca-7c8ed300e21b, efd09ecc-b2f5-441c-bc6b-21e934c30e2f", + "traceId": "566208efba2c4a188cefb16abb19f353", + "evidence": "bytes=4066, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "checkedAt": "2026-08-08T05:14:16.413Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "仅选择带本轮测试标记的可编辑入库单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085957703761965058?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "94054dbe-327d-4a52-ac98-4766aefaef7b, b2a6a631-b267-43a1-91b0-37e125d12b20", + "traceId": "a4929703a49e4d8f87b101ba15a42fcc", + "evidence": "tenantId=10001, inboundId=2085957703761965058, status=WAIT_MEASURE", + "checkedAt": "2026-08-08T05:14:16.439Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "读取 OCR 测试前重量工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957703761965058/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "47fd8a61-ef4b-4f2a-8a0a-a3ad4a16e92d, 897a7dcb-4c7e-4eea-880c-f97288096f07", + "traceId": "b99fde0e846b48238a8a9dc0f1e4de73", + "evidence": "inboundId=2085957703761965058", + "checkedAt": "2026-08-08T05:14:16.477Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "测试入库单身份与基线可追踪", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957703761965058/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "47fd8a61-ef4b-4f2a-8a0a-a3ad4a16e92d, 897a7dcb-4c7e-4eea-880c-f97288096f07", + "traceId": "b99fde0e846b48238a8a9dc0f1e4de73", + "evidence": "existingResults=0, baselineWeight=null", + "checkedAt": "2026-08-08T05:14:16.477Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "未认证请求不能上传称重图片", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085957703761965058" + }, + "http": 401, + "code": "A0401", + "message": "未登录或令牌已失效", + "requestId": "be2ab091-858", + "traceId": null, + "evidence": "HTTP=401, code=A0401", + "checkedAt": "2026-08-08T05:14:16.495Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "非图片类型被拒绝且不模拟成功", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085957703761965058" + }, + "http": 200, + "code": "A0400", + "message": "称重图片仅支持JPG、PNG、BMP", + "requestId": "cdeb2020-719c-4ad1-8827-ff7c73538769", + "traceId": "e954930fa0ca45e4b229b4ff115afab7", + "evidence": "HTTP=200, code=A0400", + "checkedAt": "2026-08-08T05:14:16.518Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "超过5MB图片被拒绝", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085957703761965058" + }, + "http": 200, + "code": "A0400", + "message": "称重图片不能超过5MB", + "requestId": "ac0e0f71-6d96-469e-ba54-bdc6a8935657", + "traceId": "869fc126be014a729b77d2eeb3469e94", + "evidence": "HTTP=200, code=A0400", + "checkedAt": "2026-08-08T05:14:16.769Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "上传称重图片并执行 OCR", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085957703761965058" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1753a40e-9215-4287-baad-8d108734d2b2, 34836477-ef4c-4505-9d7b-8fd3eb7d20ee", + "traceId": "cf200ebf72984526ac444e4ffb1a1776", + "evidence": "file=orig_1cf27695-b2c3-44b3-98e3-c0be8b80f79a.JPG, size=3701469", + "checkedAt": "2026-08-08T05:14:18.278Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "上传响应保持文件 ID 字符串契约", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085957703761965058" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1753a40e-9215-4287-baad-8d108734d2b2, 34836477-ef4c-4505-9d7b-8fd3eb7d20ee", + "traceId": "cf200ebf72984526ac444e4ffb1a1776", + "evidence": "fileIdType=string, status=RECOGNIZED", + "checkedAt": "2026-08-08T05:14:18.278Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "OCR 上传响应字段完整且置信度受限", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085957703761965058" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1753a40e-9215-4287-baad-8d108734d2b2, 34836477-ef4c-4505-9d7b-8fd3eb7d20ee", + "traceId": "cf200ebf72984526ac444e4ffb1a1776", + "evidence": "status=RECOGNIZED, hasWeight=true, confidence=0.50972", + "checkedAt": "2026-08-08T05:14:18.278Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "重试当前称重图片 OCR", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085957703761965058/2085957746529206274/recognize" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "99a9a699-8f04-4cd3-8463-cd96253e2a6d, ae135d08-1cbf-477d-ac52-3f61ed92d83b", + "traceId": "41af5293f624496d975d386658bfb627", + "evidence": "fileId=2085957746529206274", + "checkedAt": "2026-08-08T05:14:19.866Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "OCR 重试保持文件身份并返回识别契约", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085957703761965058/2085957746529206274/recognize" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "99a9a699-8f04-4cd3-8463-cd96253e2a6d, ae135d08-1cbf-477d-ac52-3f61ed92d83b", + "traceId": "41af5293f624496d975d386658bfb627", + "evidence": "sameFile=true, status=RECOGNIZED", + "checkedAt": "2026-08-08T05:14:19.866Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "登记 OCR 原值", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957703761965058/weight-results?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0f183f42-a150-4c30-9ee6-cc7abb009ce1, a6fe52db-fe27-41c4-84ac-0cc64a59862e", + "traceId": "d9e614b8ed0b4612aac72ab6ffef9421", + "evidence": "fileId=2085957746529206274", + "checkedAt": "2026-08-08T05:14:19.902Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "重量结果 ID、文件 ID 和初始版本契约正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957703761965058/weight-results?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0f183f42-a150-4c30-9ee6-cc7abb009ce1, a6fe52db-fe27-41c4-84ac-0cc64a59862e", + "traceId": "d9e614b8ed0b4612aac72ab6ffef9421", + "evidence": "resultIdType=string, fileIdType=string, version=0", + "checkedAt": "2026-08-08T05:14:19.902Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "鉴权读取原始称重图片", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/measurements/10001/2085957703761965058/2085957746529206274" + }, + "http": 200, + "code": null, + "message": "3701469 bytes (image/jpeg)", + "requestId": "f16dce9d-c0cd-4bc6-a240-33473de4a4b3, 9c151c81-f160-4dcb-bfd6-4cacd2fe502b", + "traceId": "ad8aad1e1dcb4e7fbcd2dbd3c1c072e3", + "evidence": "contentType=image/jpeg, bytes=3701469", + "checkedAt": "2026-08-08T05:14:20.047Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "缩略图返回受限尺寸 JPEG", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/measurements/10001/2085957703761965058/2085957746529206274/thumbnail" + }, + "http": 200, + "code": null, + "message": "18677 bytes (image/jpeg)", + "requestId": "4374e381-e750-4259-bab7-783b619d7519, 50f9bae5-3250-4fcd-9d06-63a0c2848e83", + "traceId": "ca77b24c0f6a4b47b5cdc05a50baced9", + "evidence": "contentType=image/jpeg, bytes=18677, dimensions=240x320", + "checkedAt": "2026-08-08T05:14:20.419Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "登记后回查 OCR 重量结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957703761965058/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "33f2964e-18e6-4e24-aa44-0d684cfae209, ea48b499-3957-4ede-9cab-846c5de1356d", + "traceId": "92bb2b16c6744a25a2cd13b8dddcfa9a", + "evidence": "inboundId=2085957703761965058", + "checkedAt": "2026-08-08T05:14:20.448Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "工作区保留本轮 OCR 原值且未覆盖历史结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957703761965058/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "33f2964e-18e6-4e24-aa44-0d684cfae209, ea48b499-3957-4ede-9cab-846c5de1356d", + "traceId": "92bb2b16c6744a25a2cd13b8dddcfa9a", + "evidence": "resultFound=true, baselineCount=0, currentCount=1", + "checkedAt": "2026-08-08T05:14:20.448Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "旧版本确认返回并发冲突", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957703761965058/weight-results/2085957756887019522/confirm?tenantId=10001" + }, + "http": 200, + "code": "A0409", + "message": "数据版本已变化,请刷新后重试", + "requestId": "b7bf15ad-c85b-49e8-84f2-7d148d57909c", + "traceId": "729a6d478b77404eb059bae5e7369d4a", + "evidence": "HTTP=200, code=A0409", + "checkedAt": "2026-08-08T05:14:20.480Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "确认 OCR 重量并计入实际总毛重", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957703761965058/weight-results/2085957756887019522/confirm?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "10ef1d39-5b9d-4bdd-82a7-2893b8d68fd0, 36f12d13-6e9e-4c46-9023-cd02cdb0fabd", + "traceId": "4298c4bddd124fc996f4455caf83c259", + "evidence": "usedOriginal=true", + "checkedAt": "2026-08-08T05:14:20.518Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "确认结果状态、版本和最终KG正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957703761965058/weight-results/2085957756887019522/confirm?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "10ef1d39-5b9d-4bdd-82a7-2893b8d68fd0, 36f12d13-6e9e-4c46-9023-cd02cdb0fabd", + "traceId": "4298c4bddd124fc996f4455caf83c259", + "evidence": "status=CONFIRMED, version=1, finalKg=285.5", + "checkedAt": "2026-08-08T05:14:20.519Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "确认后回查实际总毛重", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957703761965058/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c426535b-a74f-4dab-b292-c031250107b8, 353e421f-250a-4f3b-a165-7a8139afadc9", + "traceId": "250f08b738dc4cd99a69081c82472128", + "evidence": "inboundId=2085957703761965058", + "checkedAt": "2026-08-08T05:14:20.538Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "确认后实际总毛重按服务端结果重算", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957703761965058/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c426535b-a74f-4dab-b292-c031250107b8, 353e421f-250a-4f3b-a165-7a8139afadc9", + "traceId": "250f08b738dc4cd99a69081c82472128", + "evidence": "baseline=null, added=285.5, actual=285.5", + "checkedAt": "2026-08-08T05:14:20.538Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "旧版本删除返回并发冲突", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "DELETE", + "path": "/api/platform/v1/first-leg/inbounds/2085957703761965058/weight-results/2085957756887019522?tenantId=10001&version=0" + }, + "http": 200, + "code": "A0409", + "message": "数据版本已变化,请刷新后重试", + "requestId": "8096ade8-51a5-40dd-a7fa-62b17b2fd12d", + "traceId": "63b4be0a6b65434f83e2d2c17d173330", + "evidence": "HTTP=200, code=A0409", + "checkedAt": "2026-08-08T05:14:20.573Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除本轮已确认图片及重量结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "DELETE", + "path": "/api/platform/v1/first-leg/inbounds/2085957703761965058/weight-results/2085957756887019522?tenantId=10001&version=1" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ad1e771a-6baf-47ce-9b8e-31f65f8702db, fa2fcede-59a7-44af-82d7-e7b3bffcba70", + "traceId": "b072d81cf4c745159f0efd0153fdf437", + "evidence": "resultId=2085957756887019522, version=1", + "checkedAt": "2026-08-08T05:14:20.619Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除后回查重量工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957703761965058/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f49012e0-a9ca-4801-90d3-3b99ca5f4a13, 8062a3af-ad14-4a2e-ace8-6f0361a83c77", + "traceId": "c025d857481d4edab2d64ed8d643bdc2", + "evidence": "inboundId=2085957703761965058", + "checkedAt": "2026-08-08T05:14:20.648Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除后结果消失且总毛重恢复基线", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957703761965058/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f49012e0-a9ca-4801-90d3-3b99ca5f4a13, 8062a3af-ad14-4a2e-ace8-6f0361a83c77", + "traceId": "c025d857481d4edab2d64ed8d643bdc2", + "evidence": "resultMissing=true, baseline=null, actual=null", + "checkedAt": "2026-08-08T05:14:20.648Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除结果后原始图片不可再读取", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/measurements/10001/2085957703761965058/2085957746529206274" + }, + "http": 200, + "code": "A0404", + "message": "称重图片不存在", + "requestId": "5d4dc669-057d-40e6-a9ab-43dd87e07b4f", + "traceId": "50a5e3420be0403db34792a4f16fc15b", + "evidence": "HTTP=200, code=A0404", + "checkedAt": "2026-08-08T05:14:20.680Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "上传称重图片并执行 OCR", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085957703761965058" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c9decbae-e9cc-4be9-b0e3-f98bde7b17e6, 62393bca-4544-41b0-a659-56797d7aa2e5", + "traceId": "ccece1ade9e343c78ba95691a431bb67", + "evidence": "file=orig_1cf27695-b2c3-44b3-98e3-c0be8b80f79a.JPG, size=3701469", + "checkedAt": "2026-08-08T05:14:21.977Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "上传响应保持文件 ID 字符串契约", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085957703761965058" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c9decbae-e9cc-4be9-b0e3-f98bde7b17e6, 62393bca-4544-41b0-a659-56797d7aa2e5", + "traceId": "ccece1ade9e343c78ba95691a431bb67", + "evidence": "fileIdType=string, status=RECOGNIZED", + "checkedAt": "2026-08-08T05:14:21.977Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "OCR 上传响应字段完整且置信度受限", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085957703761965058" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c9decbae-e9cc-4be9-b0e3-f98bde7b17e6, 62393bca-4544-41b0-a659-56797d7aa2e5", + "traceId": "ccece1ade9e343c78ba95691a431bb67", + "evidence": "status=RECOGNIZED, hasWeight=true, confidence=0.50972", + "checkedAt": "2026-08-08T05:14:21.977Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "登记人工录入重量结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957703761965058/weight-results?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "463187c1-7014-4400-a783-5d8c8f5c881d, 97a561cb-b0ea-455d-8cb3-9397d2467911", + "traceId": "07d5f03dd3554a669355c2bf6634a785", + "evidence": "fileId=2085957762161377282", + "checkedAt": "2026-08-08T05:14:22.006Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "重量结果 ID、文件 ID 和初始版本契约正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957703761965058/weight-results?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "463187c1-7014-4400-a783-5d8c8f5c881d, 97a561cb-b0ea-455d-8cb3-9397d2467911", + "traceId": "07d5f03dd3554a669355c2bf6634a785", + "evidence": "resultIdType=string, fileIdType=string, version=0", + "checkedAt": "2026-08-08T05:14:22.006Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "零重量确认被拒绝", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957703761965058/weight-results/2085957765728612354/confirm?tenantId=10001" + }, + "http": 200, + "code": "A0422", + "message": "adjustedWeightValue: must be greater than or equal to 0.001", + "requestId": "8eef64ec-9bfd-4b21-b1d0-36ff5d4b1562", + "traceId": "d066bf6f4cf243329d5e4726cf55e618", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T05:14:22.029Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "零重量确认被拒绝后回查工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957703761965058/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ce68cb8b-06f8-4bab-901e-13baa7702b6b, 21a16627-2171-430b-b78a-a9e56d0a78b2", + "traceId": "ab2313fc0f6541f8921bf964481e360e", + "evidence": "inboundId=2085957703761965058", + "checkedAt": "2026-08-08T05:14:22.063Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "零重量确认被拒绝未改变重量结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957703761965058/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ce68cb8b-06f8-4bab-901e-13baa7702b6b, 21a16627-2171-430b-b78a-a9e56d0a78b2", + "traceId": "ab2313fc0f6541f8921bf964481e360e", + "evidence": "version=0, status=NEEDS_MANUAL", + "checkedAt": "2026-08-08T05:14:22.063Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "负重量确认被拒绝", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957703761965058/weight-results/2085957765728612354/confirm?tenantId=10001" + }, + "http": 200, + "code": "A0422", + "message": "adjustedWeightValue: must be greater than or equal to 0.001", + "requestId": "7c38e719-d75b-4595-83c8-b23d9025d618", + "traceId": "4c6fc9f590814e60bbd263164587258b", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T05:14:22.091Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "负重量确认被拒绝后回查工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957703761965058/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "10d9256a-a95c-4fd8-85ff-08d9e2b08b9e, fa6d9967-2ace-465c-b6c6-09f086bfd943", + "traceId": "011f2fdf44ee4abeb5a710a9af287ce1", + "evidence": "inboundId=2085957703761965058", + "checkedAt": "2026-08-08T05:14:22.127Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "负重量确认被拒绝未改变重量结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957703761965058/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "10d9256a-a95c-4fd8-85ff-08d9e2b08b9e, fa6d9967-2ace-465c-b6c6-09f086bfd943", + "traceId": "011f2fdf44ee4abeb5a710a9af287ce1", + "evidence": "version=0, status=NEEDS_MANUAL", + "checkedAt": "2026-08-08T05:14:22.127Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "LB 0.001换算为零后被拒绝", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957703761965058/weight-results/2085957765728612354/confirm?tenantId=10001" + }, + "http": 200, + "code": "A0422", + "message": "换算后重量不能小于 0.001 KG", + "requestId": "b5204367-0d7d-4f33-af1e-db612776b72e", + "traceId": "69bf77d3bc5b495c9898077394bcdab8", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T05:14:22.160Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "LB 0.001换算为零后被拒绝后回查工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957703761965058/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2d876c36-8d0e-48a8-9a2f-fdd1d4cc8bfd, a8f1f24b-d8b9-4dad-b516-6b7c1c067335", + "traceId": "feb818f0b90640aab86967012cafb7c2", + "evidence": "inboundId=2085957703761965058", + "checkedAt": "2026-08-08T05:14:22.191Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "LB 0.001换算为零后被拒绝未改变重量结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957703761965058/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2d876c36-8d0e-48a8-9a2f-fdd1d4cc8bfd, a8f1f24b-d8b9-4dad-b516-6b7c1c067335", + "traceId": "feb818f0b90640aab86967012cafb7c2", + "evidence": "version=0, status=NEEDS_MANUAL", + "checkedAt": "2026-08-08T05:14:22.191Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "超出15位整数重量被拒绝", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957703761965058/weight-results/2085957765728612354/confirm?tenantId=10001" + }, + "http": 200, + "code": "A0422", + "message": "adjustedWeightValue: numeric value out of bounds (<15 digits>.<3 digits> expected)", + "requestId": "82ba8c86-8a52-458d-a208-b24b7496a7f8", + "traceId": "2e50cde6376f4b0dbf88bf133c3a8969", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T05:14:22.217Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "超出15位整数重量被拒绝后回查工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957703761965058/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ebb24687-c27a-4fc9-ac46-14bfb9412b5d, 4fd953df-c5c5-4f9f-a55c-44913eb20363", + "traceId": "763c2bdcb4ef45f2b9fbd298c86cbdca", + "evidence": "inboundId=2085957703761965058", + "checkedAt": "2026-08-08T05:14:22.251Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "超出15位整数重量被拒绝未改变重量结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957703761965058/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ebb24687-c27a-4fc9-ac46-14bfb9412b5d, 4fd953df-c5c5-4f9f-a55c-44913eb20363", + "traceId": "763c2bdcb4ef45f2b9fbd298c86cbdca", + "evidence": "version=0, status=NEEDS_MANUAL", + "checkedAt": "2026-08-08T05:14:22.251Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "人工改重与确认原子完成", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957703761965058/weight-results/2085957765728612354/confirm?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "67d4fed2-76ce-43fa-9eb8-f35883701163, dea09447-324c-417e-80d3-58e2a1826ff9", + "traceId": "e04e46613c0f4de7999ad2e52374ac31", + "evidence": "adjusted=10.125 LB", + "checkedAt": "2026-08-08T05:14:22.290Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "LB 人工改重保留输入并正确换算最终KG", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957703761965058/weight-results/2085957765728612354/confirm?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "67d4fed2-76ce-43fa-9eb8-f35883701163, dea09447-324c-417e-80d3-58e2a1826ff9", + "traceId": "e04e46613c0f4de7999ad2e52374ac31", + "evidence": "adjusted=10.125 LB, finalKg=4.593, expectedKg=4.593", + "checkedAt": "2026-08-08T05:14:22.290Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除本轮人工改重图片及结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "DELETE", + "path": "/api/platform/v1/first-leg/inbounds/2085957703761965058/weight-results/2085957765728612354?tenantId=10001&version=2" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "af392672-aa2b-4c03-96e2-cb07a3aa246c, 98507161-1013-4e43-a60e-8f88a829c41a", + "traceId": "18f865060c864108969a289d0893ad3f", + "evidence": "resultId=2085957765728612354, version=2", + "checkedAt": "2026-08-08T05:14:22.346Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除后回查重量工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957703761965058/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1497d077-0e4a-4e1c-8aef-40bfc9106901, 2ea8d9de-1ab5-4bb4-b5e9-9d502072fd9c", + "traceId": "d5db5b935f554653ab364987044375f5", + "evidence": "inboundId=2085957703761965058", + "checkedAt": "2026-08-08T05:14:22.372Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除后结果消失且总毛重恢复基线", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957703761965058/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1497d077-0e4a-4e1c-8aef-40bfc9106901, 2ea8d9de-1ab5-4bb4-b5e9-9d502072fd9c", + "traceId": "d5db5b935f554653ab364987044375f5", + "evidence": "resultMissing=true, baseline=null, actual=null", + "checkedAt": "2026-08-08T05:14:22.372Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除结果后原始图片不可再读取", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/measurements/10001/2085957703761965058/2085957762161377282" + }, + "http": 200, + "code": "A0404", + "message": "称重图片不存在", + "requestId": "c7015b35-7e09-4285-a05b-f25e9f35cf15", + "traceId": "eff5be124f67421e8cfd44cdf3c526c5", + "evidence": "HTTP=200, code=A0404", + "checkedAt": "2026-08-08T05:14:22.403Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "最终清理后回查重量工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957703761965058/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9d1fdf87-4926-41b2-ada2-dd7063ea070e, 142205de-356a-4e79-a202-22bf247d4393", + "traceId": "46fe51a185674aa28c07d67cda12ea6f", + "evidence": "inboundId=2085957703761965058", + "checkedAt": "2026-08-08T05:14:22.433Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "仅清理本轮结果且订单总毛重恢复运行前基线", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957703761965058/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9d1fdf87-4926-41b2-ada2-dd7063ea070e, 142205de-356a-4e79-a202-22bf247d4393", + "traceId": "46fe51a185674aa28c07d67cda12ea6f", + "evidence": "leftovers=0, baseline=null, actual=null", + "checkedAt": "2026-08-08T05:14:22.433Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 测试账号登录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/auth/login" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "03bf5886-0f13-409d-92c3-b65e7927fca2, 716d6c6c-8735-49aa-b791-d21f6effb821", + "traceId": "d2fd9eff8c714584a7e67f32380fc389", + "evidence": "username=merchant_admin", + "checkedAt": "2026-08-08T05:14:22.775Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询当前企业资料", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/iam/tenant/profile" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e66a28a9-daea-4b59-acdf-bbcfda8c33d6, 50e0c5f9-d2a3-434d-ac52-fdbd6db22403", + "traceId": "825f2818447b4fe6bba9f0b526fb1543", + "evidence": "", + "checkedAt": "2026-08-08T05:14:22.805Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 测试企业已审核且客户 ID 有效", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/iam/tenant/profile" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e66a28a9-daea-4b59-acdf-bbcfda8c33d6, 50e0c5f9-d2a3-434d-ac52-fdbd6db22403", + "traceId": "825f2818447b4fe6bba9f0b526fb1543", + "evidence": "tenantId=10001, status=ACTIVE", + "checkedAt": "2026-08-08T05:14:22.805Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询客户固定箱型", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f987e48b-4653-45ff-ab12-3a654b906e98, 5240061a-0b1d-49dd-864d-2550b621d914", + "traceId": "6601ffd4221d45349acee7215384192e", + "evidence": "tenantId=10001", + "checkedAt": "2026-08-08T05:14:22.837Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "固定四箱型顺序、内径及每边加2cm正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f987e48b-4653-45ff-ab12-3a654b906e98, 5240061a-0b1d-49dd-864d-2550b621d914", + "traceId": "6601ffd4221d45349acee7215384192e", + "evidence": "types=SMALL,MEDIUM,LARGE,EXTRA_LARGE", + "checkedAt": "2026-08-08T05:14:22.838Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询国内收货仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=DOMESTIC" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4c66d45b-d0f5-41a4-9fd8-9169427bd900, bd2bfea2-b0a4-4da4-a2c9-85afd9cba166", + "traceId": "75c10865dc1a4cba87b637fb9f9c8497", + "evidence": "", + "checkedAt": "2026-08-08T05:14:22.870Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在可用国内收货仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=DOMESTIC" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4c66d45b-d0f5-41a4-9fd8-9169427bd900, bd2bfea2-b0a4-4da4-a2c9-85afd9cba166", + "traceId": "75c10865dc1a4cba87b637fb9f9c8497", + "evidence": "count=2", + "checkedAt": "2026-08-08T05:14:22.870Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询 FBA 目的仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=FBA" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "31699b08-eb0a-44a1-8403-98e1c4c431fb, bf4248f0-aa31-4d8b-9fe7-070e62372c15", + "traceId": "2aa8d1bfef5a4d91920dbd3a694d0011", + "evidence": "", + "checkedAt": "2026-08-08T05:14:22.918Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在可用 FBA 目的仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=FBA" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "31699b08-eb0a-44a1-8403-98e1c4c431fb, bf4248f0-aa31-4d8b-9fe7-070e62372c15", + "traceId": "2aa8d1bfef5a4d91920dbd3a694d0011", + "evidence": "count=200", + "checkedAt": "2026-08-08T05:14:22.918Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询可用计费渠道", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/first-leg/pricing/channels?originWarehouseId=193000000000200001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2f96d4fb-4372-4f76-b0e6-f699b069c952, e7047879-30a7-46e2-bcb4-2d466745669e", + "traceId": "2e639fcc27a0498ea21fdfce8c1eb526", + "evidence": "", + "checkedAt": "2026-08-08T05:14:22.949Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在带计价税制的可用渠道", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/first-leg/pricing/channels?originWarehouseId=193000000000200001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2f96d4fb-4372-4f76-b0e6-f699b069c952, e7047879-30a7-46e2-bcb4-2d466745669e", + "traceId": "2e639fcc27a0498ea21fdfce8c1eb526", + "evidence": "count=15", + "checkedAt": "2026-08-08T05:14:22.949Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询发货客户候选", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/partners/candidates?type=SHIPPER" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "feab2db0-2821-47c9-8e4d-348e5ff54a7b, 67795f0d-fefa-4b28-984f-28908b22de17", + "traceId": "100298bf13254afeb83a8a71ed24bdcb", + "evidence": "", + "checkedAt": "2026-08-08T05:14:22.979Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 上传产品图片", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/files/product-images" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f4c13fd5-6d65-4cf2-b25e-6c19dfe607b5, 48744cf7-20d5-4589-b14b-201a37131162", + "traceId": "d2e3b5e65ef14223a0851afc742cd404", + "evidence": "contentType=image/png", + "checkedAt": "2026-08-08T05:14:23.012Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "产品图片上传返回字符串文件 ID", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/files/product-images" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f4c13fd5-6d65-4cf2-b25e-6c19dfe607b5, 48744cf7-20d5-4589-b14b-201a37131162", + "traceId": "d2e3b5e65ef14223a0851afc742cd404", + "evidence": "fileIdType=string, contentType=image/png", + "checkedAt": "2026-08-08T05:14:23.012Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 可下载本轮产品图片", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/files/product-images/2085957769950199810" + }, + "http": 200, + "code": null, + "message": null, + "requestId": "1afd9a78-d872-4c49-b6c4-5a5456fa1d3f, 36b747e5-a8b0-4bf8-a04f-cf224eff4395", + "traceId": "3dd1bb638a154ff0b83efc2f266f11dc", + "evidence": "bytes=68, contentType=image/png", + "checkedAt": "2026-08-08T05:14:23.033Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 创建四箱型隔离订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "08780f0c-cbbf-4d17-bc51-31527040ac10, 50101a32-ccc6-4291-9efa-27b9c71587fa", + "traceId": "a220511a841649fdbee38e76a0737c1c", + "evidence": "marker=ADMIN-API-20260808051400516-MOJIA", + "checkedAt": "2026-08-08T05:14:23.110Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 创建订单幂等重放", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "84be7b49-0266-490c-9b90-853d94255370, 831b7efb-d424-4b85-a359-5653bd055629", + "traceId": "4e9a81bf26a34b9ba6de6cd06adcaded", + "evidence": "", + "checkedAt": "2026-08-08T05:14:23.151Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 创建幂等结果一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "84be7b49-0266-490c-9b90-853d94255370, 831b7efb-d424-4b85-a359-5653bd055629", + "traceId": "4e9a81bf26a34b9ba6de6cd06adcaded", + "evidence": "orderId=2085957770327687169, replayedId=2085957770327687169", + "checkedAt": "2026-08-08T05:14:23.151Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询隔离订单草稿", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085957770327687169" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "17392166-ef76-48e8-970f-0e3ee9a9a304, f8e84975-ab21-4e56-ace3-86a6b999a82d", + "traceId": "553259889be14e7f9d85f512a5424d1a", + "evidence": "", + "checkedAt": "2026-08-08T05:14:23.177Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 草稿身份、marker 和状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085957770327687169" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "17392166-ef76-48e8-970f-0e3ee9a9a304, f8e84975-ab21-4e56-ace3-86a6b999a82d", + "traceId": "553259889be14e7f9d85f512a5424d1a", + "evidence": "orderNo=FL2085957770327687169, status=DRAFT", + "checkedAt": "2026-08-08T05:14:23.177Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "四箱型产品字段及图片契约完整回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085957770327687169" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "17392166-ef76-48e8-970f-0e3ee9a9a304, f8e84975-ab21-4e56-ace3-86a6b999a82d", + "traceId": "553259889be14e7f9d85f512a5424d1a", + "evidence": "cargoes=4, imageFileId=2085957769950199810", + "checkedAt": "2026-08-08T05:14:23.177Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 提交隔离订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg/2085957770327687169/submit" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0be25c93-90cc-416d-b198-176971f44ac7, feee64af-e235-4fa8-88ba-4d41b2f04fe1", + "traceId": "b9c4e3a07f124c388d0bff6ef4ad9333", + "evidence": "orderId=2085957770327687169", + "checkedAt": "2026-08-08T05:14:23.246Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 回查已提交订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085957770327687169" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b4f83cbf-fbd8-4758-bd3c-2fd708c0b47b, 0e23e2ff-9cec-436c-8187-f34cc63f6edf", + "traceId": "4d50ec68cfba428cb4e581afe6ead376", + "evidence": "", + "checkedAt": "2026-08-08T05:14:23.284Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 订单已进入待审核状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085957770327687169" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b4f83cbf-fbd8-4758-bd3c-2fd708c0b47b, 0e23e2ff-9cec-436c-8187-f34cc63f6edf", + "traceId": "4d50ec68cfba428cb4e581afe6ead376", + "evidence": "status=SUBMITTED", + "checkedAt": "2026-08-08T05:14:23.284Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询统一订单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders?page=1&size=100&tenantId=10001&orderNo=FL2085957770327687169" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "379d66c7-8b43-4877-865b-b1a4388994df, 6e7ee344-bd91-4e16-8768-19f990c6bc49", + "traceId": "7f47bf93b32a4cbc88ebc5569442e6af", + "evidence": "", + "checkedAt": "2026-08-08T05:14:23.323Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 统一订单列表只核对本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders?page=1&size=100&tenantId=10001&orderNo=FL2085957770327687169" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "379d66c7-8b43-4877-865b-b1a4388994df, 6e7ee344-bd91-4e16-8768-19f990c6bc49", + "traceId": "7f47bf93b32a4cbc88ebc5569442e6af", + "evidence": "orderId=2085957770327687169, found=true", + "checkedAt": "2026-08-08T05:14:23.323Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询统一订单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085957770327687169?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7cd4fbfa-9c90-4009-8ff7-7d2833b99065, be613bfa-9761-4727-bd5b-2a9ff29a6155", + "traceId": "ca616b495e314a85b8d222c14f6f8cea", + "evidence": "", + "checkedAt": "2026-08-08T05:14:23.362Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 统一订单详情身份与待审核状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085957770327687169?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7cd4fbfa-9c90-4009-8ff7-7d2833b99065, be613bfa-9761-4727-bd5b-2a9ff29a6155", + "traceId": "ca616b495e314a85b8d222c14f6f8cea", + "evidence": "mainStatus=PENDING_REVIEW, timeline=2", + "checkedAt": "2026-08-08T05:14:23.362Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询头程订单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg?tenantId=10001&keyword=FL2085957770327687169&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "86bfa331-c2e1-4221-818d-7ed15d7e30eb, 687ebd06-f598-452c-a06b-2f78e95b7c48", + "traceId": "ad011b7a90854fc58e1acc4260d3cc28", + "evidence": "", + "checkedAt": "2026-08-08T05:14:23.394Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 头程订单列表只核对本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg?tenantId=10001&keyword=FL2085957770327687169&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "86bfa331-c2e1-4221-818d-7ed15d7e30eb, 687ebd06-f598-452c-a06b-2f78e95b7c48", + "traceId": "ad011b7a90854fc58e1acc4260d3cc28", + "evidence": "orderId=2085957770327687169, found=true", + "checkedAt": "2026-08-08T05:14:23.394Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询头程订单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085957770327687169?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "64a926ba-8ca9-40c1-874e-427d37553320, e687999f-f331-4a28-a458-2d4ea4aa7c23", + "traceId": "dbdbe03955da4b2090c96718d4d31a81", + "evidence": "", + "checkedAt": "2026-08-08T05:14:23.424Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 头程订单详情聚合结构完整", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085957770327687169?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "64a926ba-8ca9-40c1-874e-427d37553320, e687999f-f331-4a28-a458-2d4ea4aa7c23", + "traceId": "dbdbe03955da4b2090c96718d4d31a81", + "evidence": "cargoes=4, history=2", + "checkedAt": "2026-08-08T05:14:23.424Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "四箱型产品字段及图片契约完整回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085957770327687169?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "64a926ba-8ca9-40c1-874e-427d37553320, e687999f-f331-4a28-a458-2d4ea4aa7c23", + "traceId": "dbdbe03955da4b2090c96718d4d31a81", + "evidence": "cargoes=4, imageFileId=2085957769950199810", + "checkedAt": "2026-08-08T05:14:23.424Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 为本轮订单添加内部备注", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085957770327687169/internal-notes?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "30f57a51-3f5a-450f-943b-e25d5ea98148, a9eeab8f-c04c-4152-adbd-880985f394eb", + "traceId": "8b2dd3cbea724164915d108b76d18b59", + "evidence": "", + "checkedAt": "2026-08-08T05:14:23.459Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 审核通过本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085957770327687169/approve?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "74e464e5-0c85-45a1-9ef0-c9f6bec6ab12, 88aec9f4-144f-4544-af59-137ef89b8074", + "traceId": "4c8b9991598e44c49f13813389ce4fc2", + "evidence": "orderId=2085957770327687169", + "checkedAt": "2026-08-08T05:14:23.491Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "审核后生成隔离入库单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085957770327687169?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f5662a51-dbc2-4cc6-a55a-40a65b6a8ccc, a578bec8-6795-45a3-a93d-348b1d1b1428", + "traceId": "838ed349f0e84b9ab0bc542bccd32592", + "evidence": "inboundId=2085957779368488961", + "checkedAt": "2026-08-08T05:14:25.630Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询本轮入库单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085957779368488961?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "480dc7c7-d000-4834-ba37-4fd2aa710642, d30e8278-ca8a-4e29-aed3-711562fc90c7", + "traceId": "1711602ff87f4a9cafd2e86160764e83", + "evidence": "inboundId=2085957779368488961", + "checkedAt": "2026-08-08T05:14:25.667Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "隔离入库单 marker 来源与可测量状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085957779368488961?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "480dc7c7-d000-4834-ba37-4fd2aa710642, d30e8278-ca8a-4e29-aed3-711562fc90c7", + "traceId": "1711602ff87f4a9cafd2e86160764e83", + "evidence": "markerFound=true, status=WAIT_MEASURE", + "checkedAt": "2026-08-08T05:14:25.667Z" + }, + { + "module": "orders", + "scenario": null, + "name": "入库单详情包含托盘库位、文件、备注和状态历史", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085957779368488961?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "480dc7c7-d000-4834-ba37-4fd2aa710642, d30e8278-ca8a-4e29-aed3-711562fc90c7", + "traceId": "1711602ff87f4a9cafd2e86160764e83", + "evidence": "inboundId=2085957779368488961, history=1", + "checkedAt": "2026-08-08T05:14:25.667Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询入库单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds?tenantId=10001&inboundCode=RK-2085957770327687169&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5e4dde8d-c68f-4902-9c1f-bf89f35b0f5c, e5bcae36-6ebb-4678-ba7f-84312efbff4f", + "traceId": "80e29b0dcec047b1adffd92d0973a9e4", + "evidence": "", + "checkedAt": "2026-08-08T05:14:25.703Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 入库单列表只核对本轮入库单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds?tenantId=10001&inboundCode=RK-2085957770327687169&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5e4dde8d-c68f-4902-9c1f-bf89f35b0f5c, e5bcae36-6ebb-4678-ba7f-84312efbff4f", + "traceId": "80e29b0dcec047b1adffd92d0973a9e4", + "evidence": "inboundId=2085957779368488961, total=1", + "checkedAt": "2026-08-08T05:14:25.703Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询本轮订单履约任务", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/by-order/2085957770327687169?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "826ba3fc-e8b6-43d0-9171-4b72b66dbea1, d8ec0b2a-03b5-470f-ac32-61bd982f133b", + "traceId": "ead615cdce71449e95a14bf87fe47fe4", + "evidence": "新订单应生成可查询的履约任务", + "checkedAt": "2026-08-08T05:14:25.725Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "履约任务与本轮订单和客户一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/by-order/2085957770327687169?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "826ba3fc-e8b6-43d0-9171-4b72b66dbea1, d8ec0b2a-03b5-470f-ac32-61bd982f133b", + "traceId": "ead615cdce71449e95a14bf87fe47fe4", + "evidence": "taskId=2085957779364294658, status=PENDING_ASSIGNMENT", + "checkedAt": "2026-08-08T05:14:25.726Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询本轮履约任务分配历史", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/2085957779364294658/assignment-history?tenantId=10001&page=1&size=20" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9c7ebce1-e681-4bb9-bedd-c359cfcd0868, e6c0157f-7f8a-496c-960a-e1dc50836bcd", + "traceId": "be435df7426940899e8bcf1434805151", + "evidence": "", + "checkedAt": "2026-08-08T05:14:25.748Z" + }, + { + "module": "orders", + "scenario": null, + "name": "履约分配历史分页结构正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/2085957779364294658/assignment-history?tenantId=10001&page=1&size=20" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9c7ebce1-e681-4bb9-bedd-c359cfcd0868, e6c0157f-7f8a-496c-960a-e1dc50836bcd", + "traceId": "be435df7426940899e8bcf1434805151", + "evidence": "taskId=2085957779364294658, total=0", + "checkedAt": "2026-08-08T05:14:25.748Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 受理本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085957770327687169/accept?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "23036954-1b61-4860-bf86-75fe2867f8d0, 77192403-7130-4ec5-a44a-c69214677d5d", + "traceId": "f81d58a3eaa8462887380571bb39a976", + "evidence": "", + "checkedAt": "2026-08-08T05:14:25.781Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 启动本轮订单履约", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085957770327687169/start?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d5f74607-d96b-4810-9ebd-dfa66b4b0e77, 17a4ae8d-c551-4237-b7b8-f73d07f233a2", + "traceId": "e649518ee852459b911b4aab40a0cd62", + "evidence": "", + "checkedAt": "2026-08-08T05:14:25.811Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 回查本轮订单履约状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085957770327687169?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ec12bc73-0a8e-487a-8fa3-d3c1619dcbef, 7b8b89f2-f4de-4641-96c2-ca0c90ec0cb7", + "traceId": "d2c0ff50dd3c4da28355909db784ca05", + "evidence": "", + "checkedAt": "2026-08-08T05:14:25.836Z" + }, + { + "module": "orders", + "scenario": null, + "name": "本轮订单已进入处理中且保留状态历史", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085957770327687169?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ec12bc73-0a8e-487a-8fa3-d3c1619dcbef, 7b8b89f2-f4de-4641-96c2-ca0c90ec0cb7", + "traceId": "d2c0ff50dd3c4da28355909db784ca05", + "evidence": "status=PROCESSING, history=5", + "checkedAt": "2026-08-08T05:14:25.837Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "查询隔离入库单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085957779368488961?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ace0911d-6742-4506-8010-ff3cbafd2d08, a589d6bc-f6f8-4588-aba8-1c5367d28681", + "traceId": "ab3d2a6133ac488eace5dbe5d575a9a6", + "evidence": "inboundId=2085957779368488961, tenantId=10001", + "checkedAt": "2026-08-08T05:14:25.867Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "隔离入库单身份与可测量状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085957779368488961?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ace0911d-6742-4506-8010-ff3cbafd2d08, a589d6bc-f6f8-4588-aba8-1c5367d28681", + "traceId": "ab3d2a6133ac488eace5dbe5d575a9a6", + "evidence": "identity=true, status=WAIT_MEASURE", + "checkedAt": "2026-08-08T05:14:25.867Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "生成箱唛 PDF 并冻结稳定箱码", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/inbounds/2085957779368488961/carton-label-pdf?tenantId=10001" + }, + "http": 200, + "code": null, + "message": "13862 bytes (application/pdf)", + "requestId": "57163c66-a2f6-4a4b-8df7-279196bcaa37, 6555d53a-13fe-4122-9f40-4c2dce5e8e7f, 1a6dc594-43f3-4d31-bb06-a4aaab32a21a", + "traceId": "79b881af13af4fd3b027178096164320, 92b4337ff7994de58197ef70d6797973", + "evidence": "contentType=application/pdf, bytes=13862", + "checkedAt": "2026-08-08T05:14:26.009Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "首次打印后回查冻结箱数", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085957779368488961?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c7a55a6f-8c99-4762-8230-a4803056b764, db97e086-ac5e-4952-ae1a-ab03a1ca697d", + "traceId": "9b17db34d46644d49f25736a29572b33", + "evidence": "", + "checkedAt": "2026-08-08T05:14:26.039Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "首次打印按订单货物冻结原始总箱数", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085957779368488961?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c7a55a6f-8c99-4762-8230-a4803056b764, db97e086-ac5e-4952-ae1a-ab03a1ca697d", + "traceId": "9b17db34d46644d49f25736a29572b33", + "evidence": "inboundCodeStable=true, totalPackageCount=4", + "checkedAt": "2026-08-08T05:14:26.039Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "重复整单打印复用已冻结箱码映射", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/inbounds/2085957779368488961/carton-label-pdf?tenantId=10001" + }, + "http": 200, + "code": null, + "message": "13862 bytes (application/pdf)", + "requestId": "1e418594-e3f0-417e-b45f-3dc94ee32f45, 869f4385-076c-4f3b-88b2-3e2c0e19a04f, 5e93712c-45a6-4b00-a729-fc90849256b1", + "traceId": "d9416c793085466b9fe7259a7a68b19f, eeba74a188d649c4a87edad25df6a002", + "evidence": "boxCode=RK-2085957770327687169#4-1, contentType=application/pdf, bytes=13862", + "checkedAt": "2026-08-08T05:14:26.153Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "指定第1箱补打复用已冻结箱码映射", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/inbounds/2085957779368488961/carton-label-pdf?tenantId=10001&cartonIndex=1" + }, + "http": 200, + "code": null, + "message": "7741 bytes (application/pdf)", + "requestId": "6e0f55a3-b90b-4500-a3e7-a4624d295795, 827ef39b-0ef3-47e2-bb1e-bd34369e3da3, ad01855b-0684-45a0-84dd-4a7ad7f8830c", + "traceId": "b0f35e14859b420ea1cb8172927347a2, c579c9bac91f4c938a03f522a6256383", + "evidence": "boxCode=RK-2085957770327687169#4-1, cartonIndex=1, contentType=application/pdf, bytes=7741", + "checkedAt": "2026-08-08T05:14:26.274Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "模拟墨家首次扫描单箱", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957779368488961/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "47540865-151d-4956-8640-4d8f573e7ab6, 8917a5fb-96b9-4559-b030-472d4219a22e", + "traceId": "07c9bd4453ab4964b3259c53a5d09c6d", + "evidence": "boxCode=RK-2085957770327687169#4-1, machineNo=MJ-ADMIN-E2E-01", + "checkedAt": "2026-08-08T05:14:26.328Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "首次扫描新增一条且默认代表1箱", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957779368488961/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "47540865-151d-4956-8640-4d8f573e7ab6, 8917a5fb-96b9-4559-b030-472d4219a22e", + "traceId": "07c9bd4453ab4964b3259c53a5d09c6d", + "evidence": "created=true, confirmedPackageCount=1", + "checkedAt": "2026-08-08T05:14:26.328Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "重复打印及指定箱补打后原箱码仍可解析", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957779368488961/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "47540865-151d-4956-8640-4d8f573e7ab6, 8917a5fb-96b9-4559-b030-472d4219a22e", + "traceId": "07c9bd4453ab4964b3259c53a5d09c6d", + "evidence": "boxCodeStable=true, resolvedInboundId=2085957779368488961", + "checkedAt": "2026-08-08T05:14:26.328Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "查询箱级测量详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957779368488961/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "17e25e83-c896-46f9-8ea7-20811fe0792e, c3d1534c-2c46-4a1c-9123-0236327c2bdc", + "traceId": "f8b05ed45ebd451f805e8c29c2cab268", + "evidence": "measurementId=2085957783827034113", + "checkedAt": "2026-08-08T05:14:26.361Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "箱级查询回显箱码、尺寸、图片与设备信息", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957779368488961/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "17e25e83-c896-46f9-8ea7-20811fe0792e, c3d1534c-2c46-4a1c-9123-0236327c2bdc", + "traceId": "f8b05ed45ebd451f805e8c29c2cab268", + "evidence": "itemFound=true, imageFileId=2085957783787208706", + "checkedAt": "2026-08-08T05:14:26.361Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "人工确认当前测量代表箱数", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/inbounds/2085957779368488961/measurement/items/2085957783827034114/confirmed-package-count?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e68cf02c-8191-463d-acef-debee5b6330a, 43e9de35-dc67-42e4-ba9c-9e893c5eca52", + "traceId": "c040915cf85146618f34212c2a3a7945", + "evidence": "confirmedPackageCount=4", + "checkedAt": "2026-08-08T05:14:26.390Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "人工箱数更新且测量版本递增", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/inbounds/2085957779368488961/measurement/items/2085957783827034114/confirmed-package-count?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e68cf02c-8191-463d-acef-debee5b6330a, 43e9de35-dc67-42e4-ba9c-9e893c5eca52", + "traceId": "c040915cf85146618f34212c2a3a7945", + "evidence": "version=2", + "checkedAt": "2026-08-08T05:14:26.390Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "同箱号重新扫描覆盖当前记录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957779368488961/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "cdeea447-3c78-490c-954a-326fdd349df1, b00f5836-ab08-493d-a417-d6342e6356a5", + "traceId": "8ae5da15b69e4ffbb23686d512a901b9", + "evidence": "boxCode=RK-2085957770327687169#4-1, machineNo=MJ-ADMIN-E2E-02", + "checkedAt": "2026-08-08T05:14:26.466Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "覆盖保留同一条记录和人工箱数", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957779368488961/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "cdeea447-3c78-490c-954a-326fdd349df1, b00f5836-ab08-493d-a417-d6342e6356a5", + "traceId": "8ae5da15b69e4ffbb23686d512a901b9", + "evidence": "sameItem=true, confirmedPackageCount=4", + "checkedAt": "2026-08-08T05:14:26.466Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "回查覆盖后的尺寸与体积结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957779368488961/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0edd6960-7102-417b-972c-7e17122b5f20, 30f4537c-f3a3-4dc7-ba3b-fa76ec1cafb6", + "traceId": "de26d2cd28f5418ca345403c3200ad13", + "evidence": "", + "checkedAt": "2026-08-08T05:14:26.503Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "覆盖尺寸、箱数和服务端体积公式正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957779368488961/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0edd6960-7102-417b-972c-7e17122b5f20, 30f4537c-f3a3-4dc7-ba3b-fa76ec1cafb6", + "traceId": "de26d2cd28f5418ca345403c3200ad13", + "evidence": "weightedOuter=64x54x54, unitVolume=0.187, totalVolume=0.748, volumeWeight=124.916, girth=204.5", + "checkedAt": "2026-08-08T05:14:26.504Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "保存同一测量批次草稿", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/inbounds/2085957779368488961/measurement/draft?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4396c4d0-5800-49ed-9d40-6e526bd827d5, 56fb1641-ef66-43d8-a9aa-522dfb5d7336", + "traceId": "19168b5fbfa44d809f8cffcc0d5ca05c", + "evidence": "measurementId=2085957783827034113, items=1", + "checkedAt": "2026-08-08T05:14:26.555Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "草稿沿用批次并递增版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/inbounds/2085957779368488961/measurement/draft?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4396c4d0-5800-49ed-9d40-6e526bd827d5, 56fb1641-ef66-43d8-a9aa-522dfb5d7336", + "traceId": "19168b5fbfa44d809f8cffcc0d5ca05c", + "evidence": "status=DRAFT, version=4", + "checkedAt": "2026-08-08T05:14:26.555Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "提交测量审核", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957779368488961/measurement/submit?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7c55e854-7606-4e1a-b4b6-175e7dad3398, 74b30841-fc76-4a49-a3de-2fa56ad7b279", + "traceId": "032390a00970440aa06ec61117c7c2c0", + "evidence": "measurementId=2085957783827034113", + "checkedAt": "2026-08-08T05:14:26.586Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "提交后进入待测量审核状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957779368488961/measurement/submit?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7c55e854-7606-4e1a-b4b6-175e7dad3398, 74b30841-fc76-4a49-a3de-2fa56ad7b279", + "traceId": "032390a00970440aa06ec61117c7c2c0", + "evidence": "processStatus=MEASURE_PENDING, reviewStatus=PENDING", + "checkedAt": "2026-08-08T05:14:26.586Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "测量提交后拒绝设备覆盖并返回中文提示", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085957779368488961/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "A0409", + "message": "测量已提交,设备不能新增或覆盖数据", + "requestId": "60317223-b7e2-441a-8840-f1c5f456cfde", + "traceId": "fe3d09dcda7b42f4851eb5611383c0a4", + "evidence": "HTTP=200, code=A0409, chineseMessage=true", + "checkedAt": "2026-08-08T05:14:26.629Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "审核前读取最新入库单版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085957779368488961?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "250035b9-d509-4fa7-98d1-8cafcc2ebc4d, 3e17d590-1c49-4c74-8393-5fa526d9e255", + "traceId": "840cb143f25b44aaa5d9f6ff31165476", + "evidence": "", + "checkedAt": "2026-08-08T05:14:26.656Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "审核前状态和版本有效", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085957779368488961?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "250035b9-d509-4fa7-98d1-8cafcc2ebc4d, 3e17d590-1c49-4c74-8393-5fa526d9e255", + "traceId": "840cb143f25b44aaa5d9f6ff31165476", + "evidence": "status=MEASURE_PENDING, version=1", + "checkedAt": "2026-08-08T05:14:26.656Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "Admin 审核通过墨家测量", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/inbounds/2085957779368488961/measurements/approve?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0a1e1637-6cd8-490a-99a2-83fa84e01942, f033b2d0-a310-4760-bde8-e4add3a53273", + "traceId": "0539c9e21850423bb6756668f900ba1c", + "evidence": "measurementId=2085957783827034113", + "checkedAt": "2026-08-08T05:14:26.688Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "查询审核后的最终测量状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957779368488961/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c7c3b15d-3da7-449e-9ce6-a40063a236e8, d212d8dc-b88f-44be-b082-d6b37f6031a7", + "traceId": "ab66387a360f44acbf792de04d1f5928", + "evidence": "", + "checkedAt": "2026-08-08T05:14:26.713Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "审核后入库与测量状态闭环且结果未变化", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085957779368488961/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c7c3b15d-3da7-449e-9ce6-a40063a236e8, d212d8dc-b88f-44be-b082-d6b37f6031a7", + "traceId": "ab66387a360f44acbf792de04d1f5928", + "evidence": "processStatus=INBOUNDED, measurementStatus=APPROVED, packages=4", + "checkedAt": "2026-08-08T05:14:26.713Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "order-service 状态响应使用统一成功体", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e426538e-236c-498c-880d-e044c39f00af, c7255485-a4ba-4625-9013-8e68bb718f61", + "traceId": "f252ed1d9808482ea8481140b910016f", + "evidence": "HTTP=200, code=200", + "checkedAt": "2026-08-08T05:14:26.749Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "order-service 状态字段完整且 readiness 语义明确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e426538e-236c-498c-880d-e044c39f00af, c7255485-a4ba-4625-9013-8e68bb718f61", + "traceId": "f252ed1d9808482ea8481140b910016f", + "evidence": "service=order-service, status=UP, readiness=UP", + "checkedAt": "2026-08-08T05:14:26.749Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "firstleg-service 状态响应使用统一成功体", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "794247f6-e28d-452b-a855-e358c436bf99, bd9f056c-3ec3-46cf-a20d-e4a11c5d5baf", + "traceId": "e980fbea1229437596148bdb8c30a4b7", + "evidence": "HTTP=200, code=200", + "checkedAt": "2026-08-08T05:14:26.778Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "firstleg-service 状态字段完整且 readiness 语义明确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "794247f6-e28d-452b-a855-e358c436bf99, bd9f056c-3ec3-46cf-a20d-e4a11c5d5baf", + "traceId": "e980fbea1229437596148bdb8c30a4b7", + "evidence": "service=firstleg-service, status=UP, readiness=UP", + "checkedAt": "2026-08-08T05:14:26.778Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "file-service 状态响应使用统一成功体", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "429fcd34-07b0-406c-b0a0-95b04783939f, 53cc4a76-adaa-447a-bfc7-61c9f47b8a8f", + "traceId": "b8d954ff0d2f4e9389f1ea5cdb60d456", + "evidence": "HTTP=200, code=200", + "checkedAt": "2026-08-08T05:14:26.808Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "file-service 状态字段完整且 readiness 语义明确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "429fcd34-07b0-406c-b0a0-95b04783939f, 53cc4a76-adaa-447a-bfc7-61c9f47b8a8f", + "traceId": "b8d954ff0d2f4e9389f1ea5cdb60d456", + "evidence": "service=file-service, status=UP, readiness=UP", + "checkedAt": "2026-08-08T05:14:26.808Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "warehouse-service 状态响应使用统一成功体", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouses/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "804ce321-a1ab-4181-8c0d-d882808b6aab, b1194a70-f99d-4441-8a42-a3f66d52fc45", + "traceId": "bbb7a477448f4990a07ae1d6740c17df", + "evidence": "HTTP=200, code=200", + "checkedAt": "2026-08-08T05:14:26.845Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "warehouse-service 状态字段完整且 readiness 语义明确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouses/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "804ce321-a1ab-4181-8c0d-d882808b6aab, b1194a70-f99d-4441-8a42-a3f66d52fc45", + "traceId": "bbb7a477448f4990a07ae1d6740c17df", + "evidence": "service=warehouse-service, status=UP, readiness=UP", + "checkedAt": "2026-08-08T05:14:26.845Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "平台接口未携带令牌返回 401", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/status" + }, + "http": 401, + "code": "A0401", + "message": "未登录或令牌已失效", + "requestId": "e554188c-940", + "traceId": null, + "evidence": "HTTP=401, code=A0401", + "checkedAt": "2026-08-08T05:14:26.860Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "平台接口伪造令牌返回 401", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/status" + }, + "http": 401, + "code": "A0401", + "message": "未登录或令牌已失效", + "requestId": "be2ab091-941", + "traceId": null, + "evidence": "HTTP=401, code=A0401", + "checkedAt": "2026-08-08T05:14:26.883Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "未认证请求不返回业务成功码", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/status" + }, + "http": 401, + "code": "A0401", + "message": "未登录或令牌已失效", + "requestId": "e554188c-942", + "traceId": null, + "evidence": "HTTP=401, code=A0401", + "checkedAt": "2026-08-08T05:14:26.915Z" + }, + { + "module": "supplemental", + "scenario": "master-data-readonly", + "name": "仓库分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=5&status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "50ca5f16-144c-49d5-957e-221e383a7974, 785408d4-96c5-44f1-a87f-e3f79cda13b3", + "traceId": "23729712eb59411c8a090421af5b1c60", + "evidence": "path=/api/platform/v1/warehouse-admin?page=1&size=5&status=ACTIVE", + "checkedAt": "2026-08-08T05:14:26.957Z" + }, + { + "module": "supplemental", + "scenario": "master-data-readonly", + "name": "仓库分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=5&status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "50ca5f16-144c-49d5-957e-221e383a7974, 785408d4-96c5-44f1-a87f-e3f79cda13b3", + "traceId": "23729712eb59411c8a090421af5b1c60", + "evidence": "records=5, current=1, size=5", + "checkedAt": "2026-08-08T05:14:26.957Z" + }, + { + "module": "supplemental", + "scenario": "master-data-readonly", + "name": "仓库筛选分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=5&tenantId=0&warehouseType=FBA" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "77f7141c-8d09-4e40-8822-a54e8807549b, 603fc8a3-dedc-4f01-a3a6-606d43a28690", + "traceId": "958bb1c204934f1d86757e16ed0b8ac2", + "evidence": "path=/api/platform/v1/warehouse-admin?page=1&size=5&tenantId=0&warehouseType=FBA", + "checkedAt": "2026-08-08T05:14:26.985Z" + }, + { + "module": "supplemental", + "scenario": "master-data-readonly", + "name": "仓库筛选分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=5&tenantId=0&warehouseType=FBA" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "77f7141c-8d09-4e40-8822-a54e8807549b, 603fc8a3-dedc-4f01-a3a6-606d43a28690", + "traceId": "958bb1c204934f1d86757e16ed0b8ac2", + "evidence": "records=5, current=1, size=5", + "checkedAt": "2026-08-08T05:14:26.985Z" + }, + { + "module": "supplemental", + "scenario": "master-data-readonly", + "name": "仓库非法状态安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=5&status=NOT_A_STATUS" + }, + "http": 200, + "code": "A0422", + "message": "status: must match \"ACTIVE|INACTIVE\"", + "requestId": "091f3ffe-67da-4dbd-9414-ed96a22c07bc", + "traceId": "4ff304da26f04bf2b5b73892747177f4", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T05:14:27.012Z" + }, + { + "module": "supplemental", + "scenario": "master-data-readonly", + "name": "仓库客户作用域安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=5&tenantId=10001" + }, + "http": 200, + "code": "A0400", + "message": "Platform resource scope must be 0 / 平台公共资源作用域必须为0", + "requestId": "26d8ed5a-a643-4a28-92db-21d803e9fb87", + "traceId": "c157cb4245064772a82d0d4c7f4c26de", + "evidence": "HTTP=200, code=A0400", + "checkedAt": "2026-08-08T05:14:27.041Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "库位分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations?page=1&size=5&tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ca33d4bf-bb78-4b0e-8805-ddf41e85509c, 12bb3033-657c-488f-8f3a-40d242392553", + "traceId": "d5d7f6bddf3a448bb76ed066bbfd3c56", + "evidence": "path=/api/platform/v1/locations?page=1&size=5&tenantId=0", + "checkedAt": "2026-08-08T05:14:27.076Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "库位分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations?page=1&size=5&tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ca33d4bf-bb78-4b0e-8805-ddf41e85509c, 12bb3033-657c-488f-8f3a-40d242392553", + "traceId": "d5d7f6bddf3a448bb76ed066bbfd3c56", + "evidence": "records=3, current=1, size=5", + "checkedAt": "2026-08-08T05:14:27.076Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "托盘分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets?page=1&size=5&tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6011ed21-d642-406e-be8b-e98aa3624c86, 1b7505ee-41d2-4410-ae3e-3e35d61129a4", + "traceId": "3bcf68e07a5342e5a38c4c0d1517c2f6", + "evidence": "path=/api/platform/v1/pallets?page=1&size=5&tenantId=0", + "checkedAt": "2026-08-08T05:14:27.107Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "托盘分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets?page=1&size=5&tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6011ed21-d642-406e-be8b-e98aa3624c86, 1b7505ee-41d2-4410-ae3e-3e35d61129a4", + "traceId": "3bcf68e07a5342e5a38c4c0d1517c2f6", + "evidence": "records=3, current=1, size=5", + "checkedAt": "2026-08-08T05:14:27.107Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "库位仓库筛选分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations?page=1&size=5&tenantId=0&warehouseId=193000000000000001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "359ddec6-8db2-4ee2-bc89-b94cf575e853, 803831c0-4bbd-4fae-a7b9-b5f543779e0e", + "traceId": "288840da3edf46f9bbcce989c476956f", + "evidence": "path=/api/platform/v1/locations?page=1&size=5&tenantId=0&warehouseId=193000000000000001", + "checkedAt": "2026-08-08T05:14:27.134Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "库位仓库筛选分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations?page=1&size=5&tenantId=0&warehouseId=193000000000000001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "359ddec6-8db2-4ee2-bc89-b94cf575e853, 803831c0-4bbd-4fae-a7b9-b5f543779e0e", + "traceId": "288840da3edf46f9bbcce989c476956f", + "evidence": "records=0, current=1, size=5", + "checkedAt": "2026-08-08T05:14:27.134Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "托盘仓库筛选分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets?page=1&size=5&tenantId=0&warehouseId=193000000000000001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "60b28bc7-7710-4fbf-873a-885b0f4ad518, c69362aa-c5d3-47a7-a076-bc9945d4ae4c", + "traceId": "b248b7179b4d43e482207789870da6a3", + "evidence": "path=/api/platform/v1/pallets?page=1&size=5&tenantId=0&warehouseId=193000000000000001", + "checkedAt": "2026-08-08T05:14:27.165Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "托盘仓库筛选分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets?page=1&size=5&tenantId=0&warehouseId=193000000000000001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "60b28bc7-7710-4fbf-873a-885b0f4ad518, c69362aa-c5d3-47a7-a076-bc9945d4ae4c", + "traceId": "b248b7179b4d43e482207789870da6a3", + "evidence": "records=0, current=1, size=5", + "checkedAt": "2026-08-08T05:14:27.166Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "库位客户作用域安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations?page=1&size=5&tenantId=10001" + }, + "http": 200, + "code": "A0400", + "message": "平台公共资源作用域必须为0", + "requestId": "9c808c97-c9ed-4ca9-adbf-befb86c4bda7", + "traceId": "301e3d0cca2a40ebbbfbcf35e8e9fbbb", + "evidence": "HTTP=200, code=A0400", + "checkedAt": "2026-08-08T05:14:27.195Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "托盘客户作用域安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets?page=1&size=5&tenantId=10001" + }, + "http": 200, + "code": "A0400", + "message": "平台公共资源作用域必须为0", + "requestId": "8bfc17e9-debe-426c-b07b-5ca1397d6090", + "traceId": "531918246b224079935296cf6dc9c8e5", + "evidence": "HTTP=200, code=A0400", + "checkedAt": "2026-08-08T05:14:27.226Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "库位非法状态安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations?page=1&size=5&tenantId=0&status=ALLOCATED" + }, + "http": 200, + "code": "A0422", + "message": "status: must match \"^(AVAILABLE|RESERVED|OCCUPIED|DISABLED)$\"", + "requestId": "61962f77-d7b0-4b03-916e-ff353f99c04c", + "traceId": "26cbfd73b1d443798c6dfb75307cb7a4", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T05:14:27.254Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "库位过期版本/不存在资源不泄露或误修改数据", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations/999999999999?tenantId=0&warehouseId=999999999999" + }, + "http": 200, + "code": "A0404", + "message": "库位不存在或超出当前企业仓库数据范围", + "requestId": "a2dd5a19-3d02-43c1-8581-d8f53a5b804f", + "traceId": "1e997a23d60845b2a25aa66046cf1b17", + "evidence": "HTTP=200, code=A0404", + "checkedAt": "2026-08-08T05:14:27.293Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "托盘占用资源保护边界不泄露或误修改数据", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets/999999999999?tenantId=0&warehouseId=999999999999" + }, + "http": 200, + "code": "A0404", + "message": "托盘不存在或不属于当前租户和仓库", + "requestId": "8999aba9-25fd-47a1-a652-08feb9942f81", + "traceId": "89366886117f44b7b6afa4d2b8e72515", + "evidence": "HTTP=200, code=A0404", + "checkedAt": "2026-08-08T05:14:27.319Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "快递公司分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f4907267-498d-434e-9a29-e2d667b1b0f2, 894dfb4b-99cb-46f8-939a-eefb63b275b2", + "traceId": "3800c3c1d1ee4fcd8a1a620193655b80", + "evidence": "path=/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=ACTIVE", + "checkedAt": "2026-08-08T05:14:27.355Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "快递公司分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f4907267-498d-434e-9a29-e2d667b1b0f2, 894dfb4b-99cb-46f8-939a-eefb63b275b2", + "traceId": "3800c3c1d1ee4fcd8a1a620193655b80", + "evidence": "records=4, current=1, size=5", + "checkedAt": "2026-08-08T05:14:27.355Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "快递公司停用筛选分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=INACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2c69a99c-6d76-42fe-9df6-ed39f5304d13, 4cd444dc-c331-47af-bb11-59523641bc4f", + "traceId": "21a479245ded4b5ca63eb4ea8e1aeded", + "evidence": "path=/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=INACTIVE", + "checkedAt": "2026-08-08T05:14:27.384Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "快递公司停用筛选分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=INACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2c69a99c-6d76-42fe-9df6-ed39f5304d13, 4cd444dc-c331-47af-bb11-59523641bc4f", + "traceId": "21a479245ded4b5ca63eb4ea8e1aeded", + "evidence": "records=5, current=1, size=5", + "checkedAt": "2026-08-08T05:14:27.384Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "快递公司状态枚举过滤不混入其他状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=INACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2c69a99c-6d76-42fe-9df6-ed39f5304d13, 4cd444dc-c331-47af-bb11-59523641bc4f", + "traceId": "21a479245ded4b5ca63eb4ea8e1aeded", + "evidence": "records=5", + "checkedAt": "2026-08-08T05:14:27.384Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "快递公司无效筛选参数安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=UNKNOWN" + }, + "http": 200, + "code": "A0422", + "message": "status: must match \"^(ACTIVE|INACTIVE)$\"", + "requestId": "d7631af5-0f6d-4132-b0b4-0b1f5eb87474", + "traceId": "573e5c6632cf40d48a5ea0a769ac4d6c", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T05:14:27.411Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "往来单位分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners?page=1&size=5&tenantId=0&status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8efb35e6-539f-4f4b-8441-0f8567b0dc26, a2b5ef3a-92c6-4380-8902-79ac5760bd57", + "traceId": "e71027d3a91d428da76156d5684c9886", + "evidence": "path=/api/platform/v1/partners?page=1&size=5&tenantId=0&status=ACTIVE", + "checkedAt": "2026-08-08T05:14:27.447Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "往来单位分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners?page=1&size=5&tenantId=0&status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8efb35e6-539f-4f4b-8441-0f8567b0dc26, a2b5ef3a-92c6-4380-8902-79ac5760bd57", + "traceId": "e71027d3a91d428da76156d5684c9886", + "evidence": "records=5, current=1, size=5", + "checkedAt": "2026-08-08T05:14:27.447Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "往来单位停用筛选分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners?page=1&size=5&tenantId=0&status=INACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "228ac787-db40-4f4e-8750-9b2a7225e926, e4ae23ea-49a8-41bf-b13a-414bacc3db5d", + "traceId": "cda958ca9dc84212b2690da2d3c99d4c", + "evidence": "path=/api/platform/v1/partners?page=1&size=5&tenantId=0&status=INACTIVE", + "checkedAt": "2026-08-08T05:14:27.478Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "往来单位停用筛选分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners?page=1&size=5&tenantId=0&status=INACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "228ac787-db40-4f4e-8750-9b2a7225e926, e4ae23ea-49a8-41bf-b13a-414bacc3db5d", + "traceId": "cda958ca9dc84212b2690da2d3c99d4c", + "evidence": "records=5, current=1, size=5", + "checkedAt": "2026-08-08T05:14:27.478Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "往来单位状态枚举过滤不混入其他状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners?page=1&size=5&tenantId=0&status=INACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "228ac787-db40-4f4e-8750-9b2a7225e926, e4ae23ea-49a8-41bf-b13a-414bacc3db5d", + "traceId": "cda958ca9dc84212b2690da2d3c99d4c", + "evidence": "records=5", + "checkedAt": "2026-08-08T05:14:27.478Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "往来单位无效筛选参数安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners?page=1&size=5&tenantId=0&types=UNKNOWN_TYPE" + }, + "http": 200, + "code": "A0422", + "message": "types[0]: must match \"^(CUSTOMER|SUPPLIER|CARRIER|CUSTOMS_BROKER|SHIPPER|CONSIGNEE)$\"", + "requestId": "ae9b4884-2986-45e3-a767-5994a4657724", + "traceId": "cc8c1a450f78468b9ca35d994fd8a97d", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T05:14:27.505Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "仓库导入模板为 XLSX 且不记录二进制", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin/import-template" + }, + "http": 200, + "code": null, + "message": "3853 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "68adb2db-f7bd-45d9-a0de-cfc3019abe14, f462c222-0d61-4d34-9e2c-cfb35cd52751", + "traceId": "da84f0fc2d824dfa83f8d54664dfb1cd", + "evidence": "HTTP=200, bytes=3853, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "checkedAt": "2026-08-08T05:14:27.547Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "快递公司导入模板为 XLSX 且不记录二进制", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies/import-template" + }, + "http": 200, + "code": null, + "message": "3692 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "2c36f1ff-effb-4594-a47c-0cf2cc3a8226, b3c5de38-6d7d-4237-a4f4-dcf142fae260", + "traceId": "a970c937cb9546cf9a469861c985a2d1", + "evidence": "HTTP=200, bytes=3692, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "checkedAt": "2026-08-08T05:14:27.580Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "往来单位导入模板为 XLSX 且不记录二进制", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners/import-template" + }, + "http": 200, + "code": null, + "message": "3830 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "d8760c12-a89c-4067-91f9-9133b9a213a3, 51f94bab-4033-43f5-ba69-326822010c33", + "traceId": "385279a360fa4d5c984b498d0ac029b2", + "evidence": "HTTP=200, bytes=3830, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "checkedAt": "2026-08-08T05:14:27.628Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "船期价格表 PENDING_CONFIRMATION 状态过滤", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books?status=PENDING_CONFIRMATION" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "72af5521-fa25-4f14-85ea-52a3a39c9932, 9013a187-b417-423d-afea-bfe348985909", + "traceId": "6e4dd2acaa274c138e24320ed84a680b", + "evidence": "count=1", + "checkedAt": "2026-08-08T05:14:27.662Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "船期价格表 PENDING_CONFIRMATION 结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books?status=PENDING_CONFIRMATION" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "72af5521-fa25-4f14-85ea-52a3a39c9932, 9013a187-b417-423d-afea-bfe348985909", + "traceId": "6e4dd2acaa274c138e24320ed84a680b", + "evidence": "count=1", + "checkedAt": "2026-08-08T05:14:27.662Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "船期价格表 ACTIVE 状态过滤", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books?status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "625e029e-fb74-42a4-be30-fef8631ccba3, 2e29ab30-e189-4925-96e4-8fa834ed6188", + "traceId": "c79d7b3ccc04491883dba27154e3f93a", + "evidence": "count=1", + "checkedAt": "2026-08-08T05:14:27.694Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "船期价格表 ACTIVE 结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books?status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "625e029e-fb74-42a4-be30-fef8631ccba3, 2e29ab30-e189-4925-96e4-8fa834ed6188", + "traceId": "c79d7b3ccc04491883dba27154e3f93a", + "evidence": "count=1", + "checkedAt": "2026-08-08T05:14:27.694Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "船期价格表 SUPERSEDED 状态过滤", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books?status=SUPERSEDED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "efc9fed6-c657-4f20-b66e-63ffeaf5add4, 47ada80f-078a-41e0-baea-57170d1f5bb5", + "traceId": "8cd2ab8cf98b46b2b90b437f5ea5459b", + "evidence": "count=7", + "checkedAt": "2026-08-08T05:14:27.723Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "船期价格表 SUPERSEDED 结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books?status=SUPERSEDED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "efc9fed6-c657-4f20-b66e-63ffeaf5add4, 47ada80f-078a-41e0-baea-57170d1f5bb5", + "traceId": "8cd2ab8cf98b46b2b90b437f5ea5459b", + "evidence": "count=7", + "checkedAt": "2026-08-08T05:14:27.723Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "读取现有生效价格版本用于下载安全检查", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books?status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1627a19d-fa7d-479c-98bc-09d0828b799c, d0c58135-0ab2-436e-bab7-d241ff4c0126", + "traceId": "f95418da081643bc89a4b1423ff3769d", + "evidence": "", + "checkedAt": "2026-08-08T05:14:27.743Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "现有生效价格源文件下载为 XLSX", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books/2085957708019183617/source" + }, + "http": 200, + "code": null, + "message": "1343413 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "981dc76a-27a4-4da2-a91b-8373ba1f2729, a211a250-a0d9-43f1-a3d5-f40a4a65ac0c, ed1700b5-41db-4ce3-8ed9-ac6f53985a81", + "traceId": "dbce697aff21406aae18bccb75b15ef4, c83f171f3002462781dfe6d824e2c1bf", + "evidence": "versionId=2085957708019183617, bytes=1343413, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "checkedAt": "2026-08-08T05:14:27.833Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 PENDING 状态分页", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=PENDING" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d3f6e0a6-8b06-4568-91bf-cfde4ed50ad5, d964ced1-f36b-40fc-a1a1-ea56ea5a8181", + "traceId": "30de18617fea449682edef30344ee935", + "evidence": "", + "checkedAt": "2026-08-08T05:14:27.858Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 PENDING 过滤结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=PENDING" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d3f6e0a6-8b06-4568-91bf-cfde4ed50ad5, d964ced1-f36b-40fc-a1a1-ea56ea5a8181", + "traceId": "30de18617fea449682edef30344ee935", + "evidence": "records=0", + "checkedAt": "2026-08-08T05:14:27.858Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 RUNNING 状态分页", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=RUNNING" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a772bb88-a8e9-4f65-9421-f615992ef494, 1c554437-c930-4ad7-b964-2f01e35c44f3", + "traceId": "ab97edf3b2404397bdb4c46ecf2c66b6", + "evidence": "", + "checkedAt": "2026-08-08T05:14:27.884Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 RUNNING 过滤结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=RUNNING" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a772bb88-a8e9-4f65-9421-f615992ef494, 1c554437-c930-4ad7-b964-2f01e35c44f3", + "traceId": "ab97edf3b2404397bdb4c46ecf2c66b6", + "evidence": "records=0", + "checkedAt": "2026-08-08T05:14:27.884Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 SUCCEEDED 状态分页", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=SUCCEEDED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "12ff14af-0a91-495a-99bb-cf04048dfbab, 7b77f3c9-0c3a-4d0d-b6e7-43f1fb00f531", + "traceId": "c6ab6069b0f84090ad1cab7329bbc3ec", + "evidence": "", + "checkedAt": "2026-08-08T05:14:27.916Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 SUCCEEDED 过滤结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=SUCCEEDED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "12ff14af-0a91-495a-99bb-cf04048dfbab, 7b77f3c9-0c3a-4d0d-b6e7-43f1fb00f531", + "traceId": "c6ab6069b0f84090ad1cab7329bbc3ec", + "evidence": "records=5", + "checkedAt": "2026-08-08T05:14:27.916Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 FAILED 状态分页", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=FAILED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1ae20c9e-3cb4-49aa-85f0-c5e0a476d9b8, 6b7e40cf-61ad-4486-97da-70fb2da797bf", + "traceId": "54b204cab9744dbe8bb425657ac2b3c2", + "evidence": "", + "checkedAt": "2026-08-08T05:14:27.947Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 FAILED 过滤结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=FAILED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1ae20c9e-3cb4-49aa-85f0-c5e0a476d9b8, 6b7e40cf-61ad-4486-97da-70fb2da797bf", + "traceId": "54b204cab9744dbe8bb425657ac2b3c2", + "evidence": "records=0", + "checkedAt": "2026-08-08T05:14:27.947Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 EXPIRED 状态分页", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=EXPIRED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4128bd50-670a-45f2-a944-c027aacf265e, 3246cee0-8dbf-4ed4-beb3-686387de222e", + "traceId": "067c858789dc4f4cb5f9c49213e1d61e", + "evidence": "", + "checkedAt": "2026-08-08T05:14:27.977Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 EXPIRED 过滤结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=EXPIRED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4128bd50-670a-45f2-a944-c027aacf265e, 3246cee0-8dbf-4ed4-beb3-686387de222e", + "traceId": "067c858789dc4f4cb5f9c49213e1d61e", + "evidence": "records=0", + "checkedAt": "2026-08-08T05:14:27.977Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "不存在下载任务详情安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks/999999999999" + }, + "http": 200, + "code": "A0404", + "message": "导出任务不存在", + "requestId": "291ab3e1-f06a-4b3c-99be-056ea19a3090", + "traceId": "a83a260bbeb043a0a45b45b17b3c2c58", + "evidence": "HTTP=200, code=A0404", + "checkedAt": "2026-08-08T05:14:28.003Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "不存在下载任务文件安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks/999999999999/download" + }, + "http": 200, + "code": "A0404", + "message": "导出任务不存在", + "requestId": "50260f5b-abe7-4a94-84ff-e1c922148364", + "traceId": "358aa6d4a4df4b78a564d2fd898163ad", + "evidence": "HTTP=200, code=A0404", + "checkedAt": "2026-08-08T05:14:28.027Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "未授权下载请求被拒绝", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks/999999999999/download" + }, + "http": 401, + "code": "A0401", + "message": "未登录或令牌已失效", + "requestId": "be2ab091-977", + "traceId": null, + "evidence": "HTTP=401, code=A0401", + "checkedAt": "2026-08-08T05:14:28.046Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "平台用户只读列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/users?page=1&size=5" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "dbb56b84-68e3-4028-b509-72069f129a55, 95b9f389-601e-483d-ae2d-f29ba9d82b69", + "traceId": "7c2bb9b769a2460b82100684fe7dfd1d", + "evidence": "", + "checkedAt": "2026-08-08T05:14:28.107Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "平台用户列表结构正确且包含内置保护标识", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/users?page=1&size=5" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "dbb56b84-68e3-4028-b509-72069f129a55, 95b9f389-601e-483d-ae2d-f29ba9d82b69", + "traceId": "7c2bb9b769a2460b82100684fe7dfd1d", + "evidence": "records=5, builtInField=protectedAccount", + "checkedAt": "2026-08-08T05:14:28.107Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "平台角色只读列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/roles" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "eae60402-cea9-4125-8487-e7421e10b6ad, f451debc-dbe1-4b3d-ba21-e5fccdf2da4b", + "traceId": "4a76908009da4b8995b0877f385f36e0", + "evidence": "", + "checkedAt": "2026-08-08T05:14:28.136Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "平台角色列表结构正确且包含内置保护标识", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/roles" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "eae60402-cea9-4125-8487-e7421e10b6ad, f451debc-dbe1-4b3d-ba21-e5fccdf2da4b", + "traceId": "4a76908009da4b8995b0877f385f36e0", + "evidence": "records=12, builtInField=roleType", + "checkedAt": "2026-08-08T05:14:28.137Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "菜单权限只读列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/permissions" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ba4f7e45-c663-4e1f-b082-410067f75ac9, 53fc1067-def0-44dd-8c5a-712c4332fe9a", + "traceId": "048daa2c94064e43996c3d17454c029e", + "evidence": "", + "checkedAt": "2026-08-08T05:14:28.169Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "菜单权限列表结构正确且包含内置保护标识", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/permissions" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ba4f7e45-c663-4e1f-b082-410067f75ac9, 53fc1067-def0-44dd-8c5a-712c4332fe9a", + "traceId": "048daa2c94064e43996c3d17454c029e", + "evidence": "records=136, builtInField=builtIn", + "checkedAt": "2026-08-08T05:14:28.169Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "角色列表伪造令牌拒绝访问", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/roles" + }, + "http": 401, + "code": "A0401", + "message": "未登录或令牌已失效", + "requestId": "be2ab091-981", + "traceId": null, + "evidence": "HTTP=401, code=A0401", + "checkedAt": "2026-08-08T05:14:28.198Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "菜单权限未携带令牌拒绝访问", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/permissions" + }, + "http": 401, + "code": "A0401", + "message": "未登录或令牌已失效", + "requestId": "e554188c-982", + "traceId": null, + "evidence": "HTTP=401, code=A0401", + "checkedAt": "2026-08-08T05:14:28.213Z" + } + ] +} diff --git a/reports/admin-test-env-acceptance-overseas-fees-final.json b/reports/admin-test-env-acceptance-overseas-fees-final.json new file mode 100644 index 000000000..41b539c4a --- /dev/null +++ b/reports/admin-test-env-acceptance-overseas-fees-final.json @@ -0,0 +1,7734 @@ +{ + "reportName": "后台管理测试环境 HTTP API 验收", + "marker": "ADMIN-API-20260808053150342", + "gateway": "http://8.163.30.128:9000", + "generatedAt": "2026-08-08T05:32:16.636Z", + "startedAt": "2026-08-08T05:31:50.342Z", + "success": false, + "fatal": null, + "summary": { + "total": 414, + "passed": 413, + "failed": 1 + }, + "modules": [ + { + "name": "customers", + "startedAt": "2026-08-08T05:31:50.715Z", + "finishedAt": "2026-08-08T05:31:51.641Z", + "success": true, + "passed": 38, + "failed": 0, + "fatal": null + }, + { + "name": "overseas-storage-fees", + "startedAt": "2026-08-08T05:31:51.643Z", + "finishedAt": "2026-08-08T05:31:52.168Z", + "success": false, + "passed": 5, + "failed": 1, + "fatal": null + }, + { + "name": "system", + "startedAt": "2026-08-08T05:31:52.169Z", + "finishedAt": "2026-08-08T05:31:54.670Z", + "success": true, + "passed": 41, + "failed": 0, + "fatal": null + }, + { + "name": "master-data", + "startedAt": "2026-08-08T05:31:54.671Z", + "finishedAt": "2026-08-08T05:31:55.662Z", + "success": true, + "passed": 42, + "failed": 0, + "fatal": null + }, + { + "name": "orders", + "startedAt": "2026-08-08T05:31:55.664Z", + "finishedAt": "2026-08-08T05:32:00.124Z", + "success": true, + "passed": 49, + "failed": 0, + "fatal": null + }, + { + "name": "pricing", + "startedAt": "2026-08-08T05:32:00.126Z", + "finishedAt": "2026-08-08T05:32:03.793Z", + "success": true, + "passed": 26, + "failed": 0, + "fatal": null + }, + { + "name": "downloads", + "startedAt": "2026-08-08T05:32:03.794Z", + "finishedAt": "2026-08-08T05:32:05.973Z", + "success": true, + "passed": 8, + "failed": 0, + "fatal": null + }, + { + "name": "inbound-weight-ocr", + "startedAt": "2026-08-08T05:32:05.975Z", + "finishedAt": "2026-08-08T05:32:11.934Z", + "success": true, + "passed": 52, + "failed": 0, + "fatal": null + }, + { + "name": "orders-inbound-measurement-fixture", + "startedAt": "2026-08-08T05:32:11.935Z", + "finishedAt": "2026-08-08T05:32:14.263Z", + "success": true, + "passed": 49, + "failed": 0, + "fatal": null + }, + { + "name": "inbound-measurement", + "startedAt": "2026-08-08T05:32:14.266Z", + "finishedAt": "2026-08-08T05:32:15.117Z", + "success": true, + "passed": 28, + "failed": 0, + "fatal": null + }, + { + "name": "supplemental", + "startedAt": "2026-08-08T05:32:15.119Z", + "finishedAt": "2026-08-08T05:32:16.636Z", + "success": true, + "passed": 74, + "failed": 0, + "fatal": null + } + ], + "scenarios": [ + { + "name": "customer-dimension-rules", + "module": "customers", + "success": true, + "deploymentBlocked": false, + "passed": 13, + "failed": 0 + }, + { + "name": "price-book-lifecycle", + "module": "pricing", + "success": true, + "deploymentBlocked": false, + "passed": 26, + "failed": 0 + }, + { + "name": "weight-image-recognition-and-confirmation", + "module": "inbound-weight-ocr", + "success": true, + "deploymentBlocked": false, + "passed": 52, + "failed": 0 + }, + { + "name": "mojia-carton-measurement", + "module": "inbound-measurement", + "success": true, + "deploymentBlocked": false, + "passed": 28, + "failed": 0 + } + ], + "deploymentBlockers": [ + { + "module": "overseas-storage-fees", + "scenario": "customer-overseas-storage-fee-lifecycle", + "name": "查询客户海外仓费用配置", + "evidence": "tenantId=2085962168499032065", + "code": "S0500", + "requestId": "2dc6d0b9-c5de-4992-9ef5-d51b2cf9af8f", + "traceId": "11753a477aa641d381aebeaf50662737" + } + ], + "createdResources": { + "customer": { + "tenantId": "2085962164598329346", + "marker": "ADMIN-API-20260808053150342", + "contactPhone": "16167110715" + }, + "overseasStorageFeeCustomer": { + "tenantId": "2085962168499032065", + "marker": "ADMIN-API-20260808053150342", + "ownedByModule": true + }, + "systemPermission": { + "id": "2085962170784927746", + "code": "platform:acceptance:808053150342" + }, + "systemRole": { + "id": "2085962171426656258", + "code": "ADMIN_ACCEPT_808053150342", + "finalStatus": "DISABLED", + "retainedBecauseAssigned": true + }, + "systemUser": { + "membershipId": "2085962172475232260", + "username": "admin_accept_808053150342", + "finalStatus": "DISABLED" + }, + "warehouse": { + "id": "2085962181221859329", + "code": "AW808053150342", + "finalStatus": "INACTIVE" + }, + "location": { + "id": "2085962181863587842", + "warehouseId": "2085962181221859329", + "deleted": false + }, + "pallet": { + "id": "2085962182631145474", + "warehouseId": "2085962181221859329", + "deleted": true + }, + "expressCompany": { + "id": "2085962183243513857", + "code": "EX808053150342", + "finalStatus": "INACTIVE" + }, + "partner": { + "id": "2085962183893630977", + "code": "PT808053150342", + "finalStatus": "INACTIVE" + }, + "orders": { + "marker": "ADMIN-API-20260808053150342", + "tenantId": "10001", + "orderId": "2085962187894489089", + "productImageFileId": "2085962187537973250", + "boxTypes": [ + "SMALL", + "MEDIUM", + "LARGE", + "EXTRA_LARGE" + ], + "inboundId": "2085962198357159938", + "orderNo": "FL2085962187894489089", + "inboundCode": "RK-2085962187894489089", + "processStatus": "WAIT_MEASURE", + "taskId": "2085962198352965633" + }, + "ocrInbound": { + "tenantId": "10001", + "inboundId": "2085962198357159938", + "marker": "ADMIN-API-20260808053150342" + }, + "testInbound": { + "tenantId": "10001", + "inboundId": "2085962198357159938", + "marker": "ADMIN-API-20260808053150342" + }, + "priceBookVersion": { + "versionId": "2085962204229185537", + "marker": "ADMIN-API-20260808053150342", + "sourceSha256": "3170fd3aa8795cd816ca9600f87a6a2a06b15d0cf6042d4592f33d4b30c7b8ab" + }, + "exportTask": { + "id": "2085962219301437441" + }, + "inboundWeightOcr": { + "tenantId": "10001", + "inboundId": "2085962198357159938", + "resultIds": [ + "2085962242380574721", + "2085962251637403650" + ], + "cleaned": true + }, + "orchestrationFixtures": { + "inboundMeasurement": { + "marker": "ADMIN-API-20260808053150342-MOJIA", + "tenantId": "10001", + "orderId": "2085962256093872130", + "inboundId": "2085962261359800323" + } + }, + "inboundMeasurement": { + "marker": "ADMIN-API-20260808053150342-MOJIA", + "tenantId": "10001", + "inboundId": "2085962261359800323", + "measurementId": "2085962265117896705", + "boxCode": "RK-2085962256093872130#4-1", + "finalStatus": "APPROVED" + } + }, + "excluded": [ + { + "scope": "dashboard", + "reason": "首页为静态演示数据,不调用后端 API" + }, + { + "scope": "hidden-prototypes", + "reason": "隐藏原型页面尚无已确认后端契约" + } + ], + "securityNote": "报告不保存登录密码、Access Token、Refresh Token、图片二进制或 OCR 原文全文。", + "steps": [ + { + "module": "authentication", + "scenario": null, + "name": "平台管理员登录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/auth/login" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "63b7c019-8424-4002-b6ee-689bf5c24991, 9e451f93-07f4-457b-9ed0-866e13e765c1", + "traceId": "2ea0d73468cc47039b82b34e1f8cf884", + "evidence": "", + "checkedAt": "2026-08-08T05:31:50.715Z" + }, + { + "module": "customers", + "scenario": null, + "name": "检查测试联系电话可用性", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/contact-phone-availability?contactPhone=16167110715" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "23dea0e0-0233-4974-ba8d-305306d89dc1, b2e1bc9a-df57-4da4-9cbb-5c6a507ac4e3", + "traceId": "3c249a4507b749cc9d82f785b26aa48e", + "evidence": "attempt=1", + "checkedAt": "2026-08-08T05:31:50.755Z" + }, + { + "module": "customers", + "scenario": null, + "name": "创建客户", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d122f98c-28b6-48a1-b327-30c7f08557c3, 2b4756d1-4554-41e3-9a9e-61ce7b2bb1dc", + "traceId": "808403a4b72a418ca62d4fb79e664820", + "evidence": "", + "checkedAt": "2026-08-08T05:31:51.121Z" + }, + { + "module": "customers", + "scenario": null, + "name": "创建响应客户字段完整", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d122f98c-28b6-48a1-b327-30c7f08557c3, 2b4756d1-4554-41e3-9a9e-61ce7b2bb1dc", + "traceId": "808403a4b72a418ca62d4fb79e664820", + "evidence": "missing=none", + "checkedAt": "2026-08-08T05:31:51.122Z" + }, + { + "module": "customers", + "scenario": null, + "name": "新客户基础字段正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d122f98c-28b6-48a1-b327-30c7f08557c3, 2b4756d1-4554-41e3-9a9e-61ce7b2bb1dc", + "traceId": "808403a4b72a418ca62d4fb79e664820", + "evidence": "tenantId=2085962164598329346, status=PROFILE_REQUIRED", + "checkedAt": "2026-08-08T05:31:51.122Z" + }, + { + "module": "customers", + "scenario": "customer-owner-provisioning", + "name": "创建客户生成初始密码", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d122f98c-28b6-48a1-b327-30c7f08557c3, 2b4756d1-4554-41e3-9a9e-61ce7b2bb1dc", + "traceId": "808403a4b72a418ca62d4fb79e664820", + "evidence": "generated=true, length=16", + "checkedAt": "2026-08-08T05:31:51.122Z" + }, + { + "module": "customers", + "scenario": "customer-owner-provisioning", + "name": "管理员用户名默认使用联系电话", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d122f98c-28b6-48a1-b327-30c7f08557c3, 2b4756d1-4554-41e3-9a9e-61ce7b2bb1dc", + "traceId": "808403a4b72a418ca62d4fb79e664820", + "evidence": "matches=true", + "checkedAt": "2026-08-08T05:31:51.122Z" + }, + { + "module": "customers", + "scenario": null, + "name": "待完善客户的审核字段保持为空", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d122f98c-28b6-48a1-b327-30c7f08557c3, 2b4756d1-4554-41e3-9a9e-61ce7b2bb1dc", + "traceId": "808403a4b72a418ca62d4fb79e664820", + "evidence": "creditCode=omitted, approvedAt=omitted", + "checkedAt": "2026-08-08T05:31:51.122Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "新客户尺寸规则可查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085962164598329346" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "97678bfb-be6c-4837-8878-779dd1b8d75c, b979d0d1-5c07-433b-8c9b-281fe43789cb", + "traceId": "cf99472bea754963b943c1ba668445e6", + "evidence": "tenantId=2085962164598329346", + "checkedAt": "2026-08-08T05:31:51.152Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "固定四箱规顺序完整且无重复", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085962164598329346" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "97678bfb-be6c-4837-8878-779dd1b8d75c, b979d0d1-5c07-433b-8c9b-281fe43789cb", + "traceId": "cf99472bea754963b943c1ba668445e6", + "evidence": "count=4, order=SMALL,MEDIUM,LARGE,EXTRA_LARGE", + "checkedAt": "2026-08-08T05:31:51.152Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "四箱规默认内径、加边和备注正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085962164598329346" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "97678bfb-be6c-4837-8878-779dd1b8d75c, b979d0d1-5c07-433b-8c9b-281fe43789cb", + "traceId": "cf99472bea754963b943c1ba668445e6", + "evidence": "defaults=matched", + "checkedAt": "2026-08-08T05:31:51.152Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "客户 ID、规则 ID 为字符串且初始版本为0", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085962164598329346" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "97678bfb-be6c-4837-8878-779dd1b8d75c, b979d0d1-5c07-433b-8c9b-281fe43789cb", + "traceId": "cf99472bea754963b943c1ba668445e6", + "evidence": "groupTenantIdType=string, rows=string/v0,string/v0,string/v0,string/v0", + "checkedAt": "2026-08-08T05:31:51.152Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "默认规则外径与 HALF_UP 三位 CBM 正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085962164598329346" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "97678bfb-be6c-4837-8878-779dd1b8d75c, b979d0d1-5c07-433b-8c9b-281fe43789cb", + "traceId": "cf99472bea754963b943c1ba668445e6", + "evidence": "derivedRows=4", + "checkedAt": "2026-08-08T05:31:51.152Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "PUT 每行只发送约定7字段并整组保存", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085962164598329346" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "97678bfb-be6c-4837-8878-779dd1b8d75c, b979d0d1-5c07-433b-8c9b-281fe43789cb", + "traceId": "cf99472bea754963b943c1ba668445e6", + "evidence": "fields=boxType,innerLengthCm,innerWidthCm,innerHeightCm,edgeAdditionCm,remark,version", + "checkedAt": "2026-08-08T05:31:51.152Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "一次 PUT 保存四条三位小数规则", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085962164598329346" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c2fc573a-75de-4610-a037-ef1b61079789, 6ea0e4e1-67f4-4994-8039-2a184bfc39f5", + "traceId": "16f31081669648429ff056af7fa46492", + "evidence": "rows=4", + "checkedAt": "2026-08-08T05:31:51.189Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "修改后四行版本+1且派生外径/CBM正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085962164598329346" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c2fc573a-75de-4610-a037-ef1b61079789, 6ea0e4e1-67f4-4994-8039-2a184bfc39f5", + "traceId": "16f31081669648429ff056af7fa46492", + "evidence": "versions=1,1,1,1", + "checkedAt": "2026-08-08T05:31:51.189Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "旧 version 重放 PUT 返回冲突", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085962164598329346" + }, + "http": 200, + "code": "A0409", + "message": "箱规尺寸配置已被修改,请刷新后重试", + "requestId": "d270ece8-4c10-4055-bb9e-41182aa45782", + "traceId": "bced5813346b4a14b2aa6d15cd5d811d", + "evidence": "HTTP=200, code=A0409", + "checkedAt": "2026-08-08T05:31:51.228Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "冲突后重新查询四条规则", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085962164598329346" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4fa465ef-9aa3-4ff7-a9dd-7f06412ea194, c240823a-843f-4a5c-91a3-cc11d95985ed", + "traceId": "e3ee1dbff29140bfa709e29d7b77d621", + "evidence": "", + "checkedAt": "2026-08-08T05:31:51.260Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "冲突请求未造成四行部分更新", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085962164598329346" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4fa465ef-9aa3-4ff7-a9dd-7f06412ea194, c240823a-843f-4a5c-91a3-cc11d95985ed", + "traceId": "e3ee1dbff29140bfa709e29d7b77d621", + "evidence": "unchangedRows=4", + "checkedAt": "2026-08-08T05:31:51.260Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "恢复本轮修改前的四箱规配置", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085962164598329346" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "89df6366-e969-4d48-b0b2-0603eafe9efb, 62ab815c-5a3a-4485-a1eb-576dc938e0d0", + "traceId": "eceed746e10a45f198e483049590574f", + "evidence": "restore=original-values", + "checkedAt": "2026-08-08T05:31:51.291Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "尺寸规则恢复后回显与初始值一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085962164598329346" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "89df6366-e969-4d48-b0b2-0603eafe9efb, 62ab815c-5a3a-4485-a1eb-576dc938e0d0", + "traceId": "eceed746e10a45f198e483049590574f", + "evidence": "restoredRows=4", + "checkedAt": "2026-08-08T05:31:51.291Z" + }, + { + "module": "customers", + "scenario": null, + "name": "查询客户列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants?page=1&size=20&keyword=%E5%90%8E%E5%8F%B0%E5%AE%A2%E6%88%B7%E9%AA%8C%E6%94%B6-808053150342" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "97c218c3-3822-4cdd-9da9-b57794a67c1f, 6c8440ba-d155-41d1-bcf4-2cb10ef2ea23", + "traceId": "25fcab28e02c4228ab959b990073e791", + "evidence": "", + "checkedAt": "2026-08-08T05:31:51.326Z" + }, + { + "module": "customers", + "scenario": null, + "name": "列表包含新客户且字段完整", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants?page=1&size=20&keyword=%E5%90%8E%E5%8F%B0%E5%AE%A2%E6%88%B7%E9%AA%8C%E6%94%B6-808053150342" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "97c218c3-3822-4cdd-9da9-b57794a67c1f, 6c8440ba-d155-41d1-bcf4-2cb10ef2ea23", + "traceId": "25fcab28e02c4228ab959b990073e791", + "evidence": "found=true, missing=none", + "checkedAt": "2026-08-08T05:31:51.326Z" + }, + { + "module": "customers", + "scenario": null, + "name": "查询客户详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085962164598329346" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "868f17ce-2159-4b5c-8bc3-f45d251ee3e6, 1cb2c06d-7a7d-4ba6-89db-4516af4f337f", + "traceId": "2a4821a6b36941049524bb508038c457", + "evidence": "", + "checkedAt": "2026-08-08T05:31:51.345Z" + }, + { + "module": "customers", + "scenario": null, + "name": "客户详情基本信息正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085962164598329346" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "868f17ce-2159-4b5c-8bc3-f45d251ee3e6, 1cb2c06d-7a7d-4ba6-89db-4516af4f337f", + "traceId": "2a4821a6b36941049524bb508038c457", + "evidence": "tenantId=2085962164598329346", + "checkedAt": "2026-08-08T05:31:51.345Z" + }, + { + "module": "customers", + "scenario": null, + "name": "编辑客户", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/tenants/2085962164598329346" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7b3408dd-4a1b-4f40-ae4a-7d82c392d919, 50e16a24-dba2-4839-ae5f-d8b7f720329d", + "traceId": "df7240be3b664ef6bc282afee5d47a70", + "evidence": "", + "checkedAt": "2026-08-08T05:31:51.389Z" + }, + { + "module": "customers", + "scenario": null, + "name": "客户编辑正确回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/tenants/2085962164598329346" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7b3408dd-4a1b-4f40-ae4a-7d82c392d919, 50e16a24-dba2-4839-ae5f-d8b7f720329d", + "traceId": "df7240be3b664ef6bc282afee5d47a70", + "evidence": "tenantId=2085962164598329346", + "checkedAt": "2026-08-08T05:31:51.389Z" + }, + { + "module": "customers", + "scenario": null, + "name": "回查客户编辑结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085962164598329346" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6c214762-df2b-4231-a87a-57174c6d6074, e007d15e-de16-458e-8caf-3f45a8855a65", + "traceId": "a1a3bf3e41114148a03e0e857fb68a31", + "evidence": "", + "checkedAt": "2026-08-08T05:31:51.409Z" + }, + { + "module": "customers", + "scenario": null, + "name": "客户编辑已持久化", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085962164598329346" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6c214762-df2b-4231-a87a-57174c6d6074, e007d15e-de16-458e-8caf-3f45a8855a65", + "traceId": "a1a3bf3e41114148a03e0e857fb68a31", + "evidence": "tenantId=2085962164598329346", + "checkedAt": "2026-08-08T05:31:51.409Z" + }, + { + "module": "customers", + "scenario": null, + "name": "业务概况查询资质", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085962164598329346/qualifications" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "09276e08-39b8-4d47-b515-d7d1065ebbeb, b8f5dc1e-1ab8-4f34-a9b9-7a3160083abe", + "traceId": "424343caffff45c3b61e4494600a6391", + "evidence": "", + "checkedAt": "2026-08-08T05:31:51.445Z" + }, + { + "module": "customers", + "scenario": null, + "name": "资质概况结构正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085962164598329346/qualifications" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "09276e08-39b8-4d47-b515-d7d1065ebbeb, b8f5dc1e-1ab8-4f34-a9b9-7a3160083abe", + "traceId": "424343caffff45c3b61e4494600a6391", + "evidence": "count=0", + "checkedAt": "2026-08-08T05:31:51.445Z" + }, + { + "module": "customers", + "scenario": null, + "name": "业务概况查询成员", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085962164598329346/members" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "31b359c6-8884-4533-a644-6cad82ee9d87, 1489c854-55d8-4016-bc28-04f0e2c5a037", + "traceId": "875ce84c51944c13896aeac2166df17b", + "evidence": "", + "checkedAt": "2026-08-08T05:31:51.482Z" + }, + { + "module": "customers", + "scenario": "customer-owner-provisioning", + "name": "联系电话账号是企业管理员", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085962164598329346/members" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "31b359c6-8884-4533-a644-6cad82ee9d87, 1489c854-55d8-4016-bc28-04f0e2c5a037", + "traceId": "875ce84c51944c13896aeac2166df17b", + "evidence": "ownerFound=true, matches=true", + "checkedAt": "2026-08-08T05:31:51.482Z" + }, + { + "module": "customers", + "scenario": null, + "name": "业务概况查询运单数量", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/tenant-counts?tenantIds=2085962164598329346" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ed36130a-4b90-4458-86a7-c34224ada2bd, ccd2585a-35bc-43d2-bd72-1adbb8f90a3a", + "traceId": "2bd7da4f4c784f6c89d04b25cc1159cf", + "evidence": "", + "checkedAt": "2026-08-08T05:31:51.508Z" + }, + { + "module": "customers", + "scenario": null, + "name": "业务概况返回当前客户运单数", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/tenant-counts?tenantIds=2085962164598329346" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ed36130a-4b90-4458-86a7-c34224ada2bd, ccd2585a-35bc-43d2-bd72-1adbb8f90a3a", + "traceId": "2bd7da4f4c784f6c89d04b25cc1159cf", + "evidence": "orderCount=0", + "checkedAt": "2026-08-08T05:31:51.508Z" + }, + { + "module": "customers", + "scenario": null, + "name": "查询客户运单记录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg?tenantId=2085962164598329346&page=1&size=10" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3f02eb68-a301-4e6f-9755-1f87a7e5afb0, d944cc51-de07-4c89-becd-cfa37b8e382f", + "traceId": "e44759795c44461cbf533b7a80e0df12", + "evidence": "", + "checkedAt": "2026-08-08T05:31:51.540Z" + }, + { + "module": "customers", + "scenario": null, + "name": "运单记录分页结构正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg?tenantId=2085962164598329346&page=1&size=10" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3f02eb68-a301-4e6f-9755-1f87a7e5afb0, d944cc51-de07-4c89-becd-cfa37b8e382f", + "traceId": "e44759795c44461cbf533b7a80e0df12", + "evidence": "records=0, total=0", + "checkedAt": "2026-08-08T05:31:51.540Z" + }, + { + "module": "customers", + "scenario": "customer-draft-archive", + "name": "归档测试客户", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants/2085962164598329346/archive" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c6848289-8d1f-4b3c-9dfc-c03454b08ce2, 43d973a5-4088-4a5d-b7b8-429f4a09b1bf", + "traceId": "e3d1d8a1c84f4f77b26107b9fc4f348f", + "evidence": "tenantId=2085962164598329346", + "checkedAt": "2026-08-08T05:31:51.641Z" + }, + { + "module": "customers", + "scenario": "customer-draft-archive", + "name": "测试客户归档后处于停用状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants/2085962164598329346/archive" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c6848289-8d1f-4b3c-9dfc-c03454b08ce2, 43d973a5-4088-4a5d-b7b8-429f4a09b1bf", + "traceId": "e3d1d8a1c84f4f77b26107b9fc4f348f", + "evidence": "status=DISABLED", + "checkedAt": "2026-08-08T05:31:51.641Z" + }, + { + "module": "overseas-storage-fees", + "scenario": null, + "name": "检查测试联系电话可用性", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/contact-phone-availability?contactPhone=16167111643" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2a61af1c-97f2-4eb6-8801-e6a9eb22c3e7, 1ed98489-ff56-4c8a-a2a1-d46ba1e01de3", + "traceId": "0a2a623829fc4984af4a699bd15440eb", + "evidence": "attempt=1", + "checkedAt": "2026-08-08T05:31:51.682Z" + }, + { + "module": "overseas-storage-fees", + "scenario": "customer-overseas-storage-fee-lifecycle", + "name": "创建海外仓费用隔离客户", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f253f4dd-0009-4dc9-ad1e-9790570a6b8e, 3184b8e1-a996-4ad2-87f9-5062c97e1c4c", + "traceId": "2348a41706124355866c07f3ce6a2ccb", + "evidence": "", + "checkedAt": "2026-08-08T05:31:52.041Z" + }, + { + "module": "overseas-storage-fees", + "scenario": "customer-overseas-storage-fee-lifecycle", + "name": "海外仓费用隔离客户创建并带 marker", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f253f4dd-0009-4dc9-ad1e-9790570a6b8e, 3184b8e1-a996-4ad2-87f9-5062c97e1c4c", + "traceId": "2348a41706124355866c07f3ce6a2ccb", + "evidence": "tenantId=2085962168499032065", + "checkedAt": "2026-08-08T05:31:52.041Z" + }, + { + "module": "overseas-storage-fees", + "scenario": "customer-overseas-storage-fee-lifecycle", + "name": "查询客户海外仓费用配置", + "passed": false, + "deploymentBlocker": true, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085962168499032065/overseas-storage-fees" + }, + "http": 200, + "code": "S0500", + "message": "Internal server error", + "requestId": "2dc6d0b9-c5de-4992-9ef5-d51b2cf9af8f", + "traceId": "11753a477aa641d381aebeaf50662737", + "evidence": "tenantId=2085962168499032065", + "checkedAt": "2026-08-08T05:31:52.067Z" + }, + { + "module": "overseas-storage-fees", + "scenario": "customer-overseas-storage-fee-lifecycle", + "name": "费用配置契约不可用时清理隔离客户", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants/2085962168499032065/archive" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ef1887de-e4fa-4085-b3bc-4c281638cb66, a916b730-b4f6-480e-9038-c311f167fd0c", + "traceId": "ce99f6759de046f0b36153d1d66e8c7d", + "evidence": "tenantId=2085962168499032065", + "checkedAt": "2026-08-08T05:31:52.168Z" + }, + { + "module": "overseas-storage-fees", + "scenario": "customer-overseas-storage-fee-lifecycle", + "name": "隔离客户清理后停用", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants/2085962168499032065/archive" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ef1887de-e4fa-4085-b3bc-4c281638cb66, a916b730-b4f6-480e-9038-c311f167fd0c", + "traceId": "ce99f6759de046f0b36153d1d66e8c7d", + "evidence": "status=DISABLED", + "checkedAt": "2026-08-08T05:31:52.168Z" + }, + { + "module": "system", + "scenario": null, + "name": "查询菜单权限资源", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/permissions" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6e97bd7e-5ba6-4216-a8a9-02ddd74ed32a, e56d3767-6b28-44cf-87bf-e2164951a0af", + "traceId": "4f49d3ecff834fb69e38dd4947a36093", + "evidence": "", + "checkedAt": "2026-08-08T05:31:52.219Z" + }, + { + "module": "system", + "scenario": null, + "name": "权限资源返回数组", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/permissions" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6e97bd7e-5ba6-4216-a8a9-02ddd74ed32a, e56d3767-6b28-44cf-87bf-e2164951a0af", + "traceId": "4f49d3ecff834fb69e38dd4947a36093", + "evidence": "count=136", + "checkedAt": "2026-08-08T05:31:52.219Z" + }, + { + "module": "system", + "scenario": null, + "name": "创建自定义权限资源", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/permissions" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "70645ae4-0aeb-4ccf-99f7-809ab9c28a2e, ffeaaa4c-d806-41c3-a748-eebb6a3bd300", + "traceId": "dcc249c433344ad4b1a74f69b4fec05a", + "evidence": "", + "checkedAt": "2026-08-08T05:31:52.259Z" + }, + { + "module": "system", + "scenario": null, + "name": "权限创建字段正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/permissions" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "70645ae4-0aeb-4ccf-99f7-809ab9c28a2e, ffeaaa4c-d806-41c3-a748-eebb6a3bd300", + "traceId": "dcc249c433344ad4b1a74f69b4fec05a", + "evidence": "permissionId=2085962170784927746", + "checkedAt": "2026-08-08T05:31:52.260Z" + }, + { + "module": "system", + "scenario": null, + "name": "编辑自定义权限资源", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/permissions/2085962170784927746" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "bb2e4cc4-3233-41ae-a97e-0934eef4a92b, ee7068dc-e50d-462e-8f64-7f69fe9885b7", + "traceId": "1ec74cf95c9d40969a63be6d37884e2b", + "evidence": "", + "checkedAt": "2026-08-08T05:31:52.285Z" + }, + { + "module": "system", + "scenario": null, + "name": "权限编辑正确回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/permissions/2085962170784927746" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "bb2e4cc4-3233-41ae-a97e-0934eef4a92b, ee7068dc-e50d-462e-8f64-7f69fe9885b7", + "traceId": "1ec74cf95c9d40969a63be6d37884e2b", + "evidence": "permissionId=2085962170784927746", + "checkedAt": "2026-08-08T05:31:52.285Z" + }, + { + "module": "system", + "scenario": null, + "name": "停用自定义权限", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/permissions/2085962170784927746/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e0e77f24-90e7-40a8-8e4d-97866dbcec14, 9f296ac2-0fa8-4c3f-9307-0a1d6a91698b", + "traceId": "3b80cd66b9ac4b109efaf61157063b58", + "evidence": "", + "checkedAt": "2026-08-08T05:31:52.321Z" + }, + { + "module": "system", + "scenario": null, + "name": "权限状态回显 DISABLED", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/permissions/2085962170784927746/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e0e77f24-90e7-40a8-8e4d-97866dbcec14, 9f296ac2-0fa8-4c3f-9307-0a1d6a91698b", + "traceId": "3b80cd66b9ac4b109efaf61157063b58", + "evidence": "status=DISABLED", + "checkedAt": "2026-08-08T05:31:52.321Z" + }, + { + "module": "system", + "scenario": null, + "name": "启用自定义权限", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/permissions/2085962170784927746/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "99e8940c-a991-45ab-a346-30f40c6ab938, 017c707a-d87c-4875-9a80-c62b37dd385a", + "traceId": "196f862b9fe1466f9171f87672c6dac3", + "evidence": "", + "checkedAt": "2026-08-08T05:31:52.384Z" + }, + { + "module": "system", + "scenario": null, + "name": "权限状态回显 ACTIVE", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/permissions/2085962170784927746/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "99e8940c-a991-45ab-a346-30f40c6ab938, 017c707a-d87c-4875-9a80-c62b37dd385a", + "traceId": "196f862b9fe1466f9171f87672c6dac3", + "evidence": "status=ACTIVE", + "checkedAt": "2026-08-08T05:31:52.384Z" + }, + { + "module": "system", + "scenario": null, + "name": "创建平台自定义角色", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/roles" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7f7ffe4b-dc2b-4d22-bb68-8b38c0b746cb, 4add70c4-3eee-422b-ab25-9997b6d23c76", + "traceId": "6bd82dae92bc40bc856b5d4fc0256164", + "evidence": "", + "checkedAt": "2026-08-08T05:31:52.415Z" + }, + { + "module": "system", + "scenario": null, + "name": "角色创建字段正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/roles" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7f7ffe4b-dc2b-4d22-bb68-8b38c0b746cb, 4add70c4-3eee-422b-ab25-9997b6d23c76", + "traceId": "6bd82dae92bc40bc856b5d4fc0256164", + "evidence": "roleId=2085962171426656258", + "checkedAt": "2026-08-08T05:31:52.415Z" + }, + { + "module": "system", + "scenario": null, + "name": "编辑平台自定义角色", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/2085962171426656258" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ee94ff97-7ee1-4cb8-a899-175ab416667c, 77d1d097-85e7-487f-9433-c513bc02b3a4", + "traceId": "7472068a6df74003a40c230ec502142b", + "evidence": "", + "checkedAt": "2026-08-08T05:31:52.445Z" + }, + { + "module": "system", + "scenario": null, + "name": "角色编辑正确回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/2085962171426656258" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ee94ff97-7ee1-4cb8-a899-175ab416667c, 77d1d097-85e7-487f-9433-c513bc02b3a4", + "traceId": "7472068a6df74003a40c230ec502142b", + "evidence": "roleId=2085962171426656258", + "checkedAt": "2026-08-08T05:31:52.445Z" + }, + { + "module": "system", + "scenario": null, + "name": "角色全量保存权限", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/permissions" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0726bc5d-5b66-43c5-a690-38a1b85bcabe, 4f1806e4-7db9-4ccd-a6ed-16dbdc9e901c", + "traceId": "8d8993eacdb74bc8a7965252e399b36b", + "evidence": "", + "checkedAt": "2026-08-08T05:31:52.480Z" + }, + { + "module": "system", + "scenario": null, + "name": "回查平台角色列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/roles" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e31dfd4b-0e0f-47b0-8977-b0bf7349d749, 5ae37c73-9729-4315-bb02-6c6ae9d28d03", + "traceId": "13ae8cb67f394a1e971a17f8824449ee", + "evidence": "", + "checkedAt": "2026-08-08T05:31:52.510Z" + }, + { + "module": "system", + "scenario": null, + "name": "角色权限 ID 正确回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/roles" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e31dfd4b-0e0f-47b0-8977-b0bf7349d749, 5ae37c73-9729-4315-bb02-6c6ae9d28d03", + "traceId": "13ae8cb67f394a1e971a17f8824449ee", + "evidence": "permissionIds=2085962170784927746", + "checkedAt": "2026-08-08T05:31:52.510Z" + }, + { + "module": "system", + "scenario": null, + "name": "停用自定义角色", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/2085962171426656258/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "fb0ae03e-62df-4223-9795-c54793200257, 6765b7eb-6f04-4dbc-b350-a667728cc258", + "traceId": "81d6a1f78b7f489c8c0ea5d44ab4db6e", + "evidence": "", + "checkedAt": "2026-08-08T05:31:52.542Z" + }, + { + "module": "system", + "scenario": null, + "name": "角色状态回显 DISABLED", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/2085962171426656258/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "fb0ae03e-62df-4223-9795-c54793200257, 6765b7eb-6f04-4dbc-b350-a667728cc258", + "traceId": "81d6a1f78b7f489c8c0ea5d44ab4db6e", + "evidence": "status=DISABLED", + "checkedAt": "2026-08-08T05:31:52.542Z" + }, + { + "module": "system", + "scenario": null, + "name": "启用自定义角色", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/2085962171426656258/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d7c2adb8-31e0-4aa9-a27e-737050878fb5, 50b69880-b9f6-4451-aec1-eb594c558d26", + "traceId": "1b9140ab456449b29993a15a1caa017b", + "evidence": "", + "checkedAt": "2026-08-08T05:31:52.572Z" + }, + { + "module": "system", + "scenario": null, + "name": "角色状态回显 ACTIVE", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/2085962171426656258/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d7c2adb8-31e0-4aa9-a27e-737050878fb5, 50b69880-b9f6-4451-aec1-eb594c558d26", + "traceId": "1b9140ab456449b29993a15a1caa017b", + "evidence": "status=ACTIVE", + "checkedAt": "2026-08-08T05:31:52.572Z" + }, + { + "module": "system", + "scenario": null, + "name": "查询内部用户可选平台角色", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/users/options" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ace9b0ad-18bf-41f3-9184-cb159121e6f1, 13b4cf5b-e153-4008-bd9a-e1b220bdd2c4", + "traceId": "8465ffb71c8148b7973505662cf1ecae", + "evidence": "", + "checkedAt": "2026-08-08T05:31:52.596Z" + }, + { + "module": "system", + "scenario": null, + "name": "用户选项包含平台与测试角色", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/users/options" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ace9b0ad-18bf-41f3-9184-cb159121e6f1, 13b4cf5b-e153-4008-bd9a-e1b220bdd2c4", + "traceId": "8465ffb71c8148b7973505662cf1ecae", + "evidence": "tenants=1, roles=14", + "checkedAt": "2026-08-08T05:31:52.596Z" + }, + { + "module": "system", + "scenario": null, + "name": "检查测试联系电话可用性", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/contact-phone-availability?contactPhone=16167112596" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d52c7151-4f76-4464-a3c5-daf9de0a046c, c6816666-a8fd-4ff6-a03a-1d2255d20e63", + "traceId": "6276d087e0c4472d9c28f17d5ccc11e7", + "evidence": "attempt=1", + "checkedAt": "2026-08-08T05:31:52.629Z" + }, + { + "module": "system", + "scenario": null, + "name": "创建平台内部用户", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/users" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d896dfc2-4514-4da8-b6af-5a44148a8d11, e0f313e1-a12e-4e83-898d-5a636fd20e85", + "traceId": "e39b42be7c054bf9ae47e3bf2529b380", + "evidence": "", + "checkedAt": "2026-08-08T05:31:52.983Z" + }, + { + "module": "system", + "scenario": null, + "name": "内部用户账号、平台范围和角色正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/users" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d896dfc2-4514-4da8-b6af-5a44148a8d11, e0f313e1-a12e-4e83-898d-5a636fd20e85", + "traceId": "e39b42be7c054bf9ae47e3bf2529b380", + "evidence": "membershipId=2085962172475232260", + "checkedAt": "2026-08-08T05:31:52.983Z" + }, + { + "module": "system", + "scenario": null, + "name": "按账号查询平台内部用户", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/users?page=1&size=20&keyword=admin_accept_808053150342" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f403fc35-f98b-41a0-be0e-128d5f7078f7, 80f531ba-d6bf-46f7-80ae-0eb6bfdd8262", + "traceId": "69aac12edf4a483e8b6d333eecbf25a1", + "evidence": "", + "checkedAt": "2026-08-08T05:31:53.030Z" + }, + { + "module": "system", + "scenario": null, + "name": "用户列表包含新账号且字段完整", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/users?page=1&size=20&keyword=admin_accept_808053150342" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f403fc35-f98b-41a0-be0e-128d5f7078f7, 80f531ba-d6bf-46f7-80ae-0eb6bfdd8262", + "traceId": "69aac12edf4a483e8b6d333eecbf25a1", + "evidence": "records=1, missing=none, lastLoginAt=omitted", + "checkedAt": "2026-08-08T05:31:53.030Z" + }, + { + "module": "system", + "scenario": null, + "name": "编辑平台内部用户", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/users/2085962172475232260" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2eb8cae1-cb82-4ac8-b2e2-b016ca21597b, b0a95ef6-b0cf-4770-ae62-f76e2f3d7f73", + "traceId": "0586b6e79db44984b1ab0724c50ccdbe", + "evidence": "", + "checkedAt": "2026-08-08T05:31:53.169Z" + }, + { + "module": "system", + "scenario": null, + "name": "用户编辑正确回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/users/2085962172475232260" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2eb8cae1-cb82-4ac8-b2e2-b016ca21597b, b0a95ef6-b0cf-4770-ae62-f76e2f3d7f73", + "traceId": "0586b6e79db44984b1ab0724c50ccdbe", + "evidence": "membershipId=2085962172475232260", + "checkedAt": "2026-08-08T05:31:53.169Z" + }, + { + "module": "system", + "scenario": null, + "name": "新建内部用户可使用初始密码登录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/auth/login" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1dbb71ee-35ca-465a-9f92-112c1db1fd36, abd8b554-bcef-470b-b445-1dab9e3abfb4", + "traceId": "7ce232c36ddb4fdab184c1ef876db34f", + "evidence": "username=admin_accept_808053150342", + "checkedAt": "2026-08-08T05:31:53.511Z" + }, + { + "module": "system", + "scenario": null, + "name": "重置平台内部用户密码", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/users/2085962172475232260/password" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "34810ca3-8e3c-43fb-adcd-2f7d4309681d, 1705e419-aac5-4ef0-a38a-28f229e111b8", + "traceId": "4063a26d837949ffb9f1046328fa5090", + "evidence": "", + "checkedAt": "2026-08-08T05:31:53.906Z" + }, + { + "module": "system", + "scenario": null, + "name": "内部用户使用重置密码登录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/auth/login" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c3265917-ab47-4a24-94bd-6df7feac1149, 461ee8b4-2094-43ce-bfc2-286781510d74", + "traceId": "bb28e24561df4259bc59724a1f255786", + "evidence": "username=admin_accept_808053150342", + "checkedAt": "2026-08-08T05:31:54.239Z" + }, + { + "module": "system", + "scenario": null, + "name": "停用平台内部用户", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/users/2085962172475232260/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c67258b8-59a2-448b-921b-cd90f89deb94, e8e831c2-61e1-4e1d-bc36-3cdc2b5a45d2", + "traceId": "d6e8cd0178d94d89b11bf558c174bdde", + "evidence": "", + "checkedAt": "2026-08-08T05:31:54.351Z" + }, + { + "module": "system", + "scenario": null, + "name": "内部用户停用状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/users/2085962172475232260/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c67258b8-59a2-448b-921b-cd90f89deb94, e8e831c2-61e1-4e1d-bc36-3cdc2b5a45d2", + "traceId": "d6e8cd0178d94d89b11bf558c174bdde", + "evidence": "status=DISABLED", + "checkedAt": "2026-08-08T05:31:54.351Z" + }, + { + "module": "system", + "scenario": null, + "name": "停用用户禁止登录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/auth/login" + }, + "http": 200, + "code": "A0403", + "message": "账号已禁用", + "requestId": "85f5da0a-531f-40e1-b4a3-3c772c065f23", + "traceId": "e7e7f615720d4000822ad1e5ab6491ef", + "evidence": "HTTP=200, code=A0403", + "checkedAt": "2026-08-08T05:31:54.383Z" + }, + { + "module": "system", + "scenario": null, + "name": "清空测试角色权限", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/permissions" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "758d283f-7815-47bf-a9ac-1e3b6548864f, 116cc125-35fa-431b-92e1-8900ed2f09ff", + "traceId": "50ec2fc390f249fd93f501b6a99166f6", + "evidence": "", + "checkedAt": "2026-08-08T05:31:54.493Z" + }, + { + "module": "system", + "scenario": "system-role-protection", + "name": "已分配成员的角色禁止删除", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "DELETE", + "path": "/api/platform/v1/iam/roles/2085962171426656258" + }, + "http": 200, + "code": "A0409", + "message": "角色已分配给成员,不能删除", + "requestId": "f7841c6b-4c71-4277-a293-b5e2502ea535", + "traceId": "a0089ca5d43248d09436136b55c9f7c2", + "evidence": "HTTP=200, code=A0409", + "checkedAt": "2026-08-08T05:31:54.527Z" + }, + { + "module": "system", + "scenario": null, + "name": "清理时停用测试角色", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/2085962171426656258/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "887281a4-574c-4d5c-b39c-e07c9f8faa49, 1e12c4ea-9825-46c0-b41b-3369a70d4591", + "traceId": "814edc00b8f2427c868bd34453b940d7", + "evidence": "", + "checkedAt": "2026-08-08T05:31:54.630Z" + }, + { + "module": "system", + "scenario": null, + "name": "保留测试角色处于停用状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/2085962171426656258/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "887281a4-574c-4d5c-b39c-e07c9f8faa49, 1e12c4ea-9825-46c0-b41b-3369a70d4591", + "traceId": "814edc00b8f2427c868bd34453b940d7", + "evidence": "status=DISABLED", + "checkedAt": "2026-08-08T05:31:54.630Z" + }, + { + "module": "system", + "scenario": null, + "name": "删除临时权限资源", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "DELETE", + "path": "/api/platform/v1/iam/permissions/2085962170784927746" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9b048ee7-96ba-4907-8ab0-ef03243173a8, bc24e5cf-9ee5-4f25-b637-09353c2b272b", + "traceId": "e9cfa5ecf01d408ead8a4142bed86c37", + "evidence": "", + "checkedAt": "2026-08-08T05:31:54.670Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "查询平台仓库列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=20" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d645c4e5-0d61-405d-a2d6-ff57642ad760, c9834008-8fca-4116-abee-56312b35d318", + "traceId": "a81712fe1d0a4f36a4e95723afae3ae0", + "evidence": "", + "checkedAt": "2026-08-08T05:31:54.718Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "仓库列表分页结构正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=20" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d645c4e5-0d61-405d-a2d6-ff57642ad760, c9834008-8fca-4116-abee-56312b35d318", + "traceId": "a81712fe1d0a4f36a4e95723afae3ae0", + "evidence": "total=273", + "checkedAt": "2026-08-08T05:31:54.718Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "创建平台公共仓库", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/warehouse-admin" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9d5ec0b5-9dbb-4b62-a15f-fa23b1129fd0, 639bf3bd-f0e8-43f0-88cc-7f4579138d56", + "traceId": "c0799d3042504ce5ba56ce39be9f645c", + "evidence": "", + "checkedAt": "2026-08-08T05:31:54.751Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "仓库创建返回字符串兼容 ID", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/warehouse-admin" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9d5ec0b5-9dbb-4b62-a15f-fa23b1129fd0, 639bf3bd-f0e8-43f0-88cc-7f4579138d56", + "traceId": "c0799d3042504ce5ba56ce39be9f645c", + "evidence": "warehouseId=2085962181221859329", + "checkedAt": "2026-08-08T05:31:54.751Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "查询平台仓库详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin/2085962181221859329?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8333ed85-59c3-4e40-9cec-8183143e83e9, 2e4e2317-ac7f-4c9b-95f9-4090d9768f92", + "traceId": "47677598a34a49dcaf708bbd168fcd04", + "evidence": "", + "checkedAt": "2026-08-08T05:31:54.790Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "仓库详情、地址和能力正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin/2085962181221859329?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8333ed85-59c3-4e40-9cec-8183143e83e9, 2e4e2317-ac7f-4c9b-95f9-4090d9768f92", + "traceId": "47677598a34a49dcaf708bbd168fcd04", + "evidence": "addresses=1, capabilities=1", + "checkedAt": "2026-08-08T05:31:54.791Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "编辑平台仓库", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/warehouse-admin/2085962181221859329?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7241c285-c3b0-40eb-a21e-625094ec81b7, 96106837-0745-4481-81a5-771fc7eeaf4b", + "traceId": "9af5460c2f724fa59c06a6fe853fae60", + "evidence": "", + "checkedAt": "2026-08-08T05:31:54.829Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "回查编辑后的平台仓库", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin/2085962181221859329?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4cf46b59-6768-495f-affb-9ebd7e0ea705, 827b9615-2ad2-4de9-ab37-b5cd6a981926", + "traceId": "5b00eee3c7824e5f8e035257f6c8c774", + "evidence": "", + "checkedAt": "2026-08-08T05:31:54.867Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "仓库编辑已持久化", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin/2085962181221859329?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4cf46b59-6768-495f-affb-9ebd7e0ea705, 827b9615-2ad2-4de9-ab37-b5cd6a981926", + "traceId": "5b00eee3c7824e5f8e035257f6c8c774", + "evidence": "warehouseId=2085962181221859329", + "checkedAt": "2026-08-08T05:31:54.867Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "创建仓库库位", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/locations?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0b8885f3-52e7-4b46-8d2d-e927636e4285, e42d5c84-cb7a-400d-a171-7f13eb80af80", + "traceId": "64997e7a5e9c4d2eb2b7f18e37752d45", + "evidence": "", + "checkedAt": "2026-08-08T05:31:54.901Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "查询库位详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations/2085962181863587842?tenantId=0&warehouseId=2085962181221859329" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1e43a5af-1538-4a60-b762-7a3cf0f5c6c5, 0d921fad-81e5-4116-b680-ca4e7342f0d3", + "traceId": "e3f42d40bbb14bce931bbb1829065adf", + "evidence": "", + "checkedAt": "2026-08-08T05:31:54.927Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "库位详情关联正确仓库", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations/2085962181863587842?tenantId=0&warehouseId=2085962181221859329" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1e43a5af-1538-4a60-b762-7a3cf0f5c6c5, 0d921fad-81e5-4116-b680-ca4e7342f0d3", + "traceId": "e3f42d40bbb14bce931bbb1829065adf", + "evidence": "locationId=2085962181863587842", + "checkedAt": "2026-08-08T05:31:54.927Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "编辑库位", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/locations/2085962181863587842?tenantId=0&warehouseId=2085962181221859329" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e5a4435f-8110-4714-9f5a-7844a4a8e13e, 08179aec-a534-4690-92f5-85f023e9c919", + "traceId": "c2bc5ce7799b47a3a01964a028f19f45", + "evidence": "", + "checkedAt": "2026-08-08T05:31:54.965Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "回查编辑后的库位", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations/2085962181863587842?tenantId=0&warehouseId=2085962181221859329" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b4ecac6f-4d24-4965-97f2-06d09b6d5f40, 98bc995c-d774-41d8-b163-00c2c807a8d7", + "traceId": "e93483b59f9341d7b807e4b80aaf9904", + "evidence": "", + "checkedAt": "2026-08-08T05:31:54.990Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "库位编辑与版本递增正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations/2085962181863587842?tenantId=0&warehouseId=2085962181221859329" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b4ecac6f-4d24-4965-97f2-06d09b6d5f40, 98bc995c-d774-41d8-b163-00c2c807a8d7", + "traceId": "e93483b59f9341d7b807e4b80aaf9904", + "evidence": "version=1", + "checkedAt": "2026-08-08T05:31:54.990Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "停用库位", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PATCH", + "path": "/api/platform/v1/locations/2085962181863587842/status?tenantId=0&warehouseId=2085962181221859329" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "04f93dc4-8682-4032-aaa3-7e3ecc646b39, 1ca6d834-a02f-4559-9f8d-547cec2df901", + "traceId": "28857d06cf73474b92b630b57509c46b", + "evidence": "", + "checkedAt": "2026-08-08T05:31:55.027Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "删除未占用测试库位", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "DELETE", + "path": "/api/platform/v1/locations/2085962181863587842?tenantId=0&warehouseId=2085962181221859329&version=2" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "337ea5e9-d7e7-4e72-a945-4561a8980546, ffe19150-0e14-475d-8727-8477f1a3de53", + "traceId": "bf641b6d358c4a67a016104e518cc102", + "evidence": "", + "checkedAt": "2026-08-08T05:31:55.056Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "创建仓库托盘", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/pallets?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8c857667-40f8-498e-8375-c85ac4149829, 252e649d-6850-49a8-8e07-b4a7958973f0", + "traceId": "c6f2203c2adf4cd28deeabe269a30e57", + "evidence": "", + "checkedAt": "2026-08-08T05:31:55.084Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "查询托盘详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets/2085962182631145474?tenantId=0&warehouseId=2085962181221859329" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "479fc9ea-dfe1-4e52-9958-b338e66b8124, 7ecd9c99-8628-4b3e-8cac-a5f769e128a1", + "traceId": "9703d36d3c8c4895940bdc1d0177c038", + "evidence": "", + "checkedAt": "2026-08-08T05:31:55.113Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "托盘详情关联正确仓库", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets/2085962182631145474?tenantId=0&warehouseId=2085962181221859329" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "479fc9ea-dfe1-4e52-9958-b338e66b8124, 7ecd9c99-8628-4b3e-8cac-a5f769e128a1", + "traceId": "9703d36d3c8c4895940bdc1d0177c038", + "evidence": "palletId=2085962182631145474", + "checkedAt": "2026-08-08T05:31:55.113Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "编辑托盘", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/pallets/2085962182631145474?tenantId=0&warehouseId=2085962181221859329" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e2cdfa47-eae0-40fc-a3b1-dbf6db32dc63, 12624475-6e1f-4a3c-91fd-eb845e9b517e", + "traceId": "b23855032b284aec93f73694960aa70c", + "evidence": "", + "checkedAt": "2026-08-08T05:31:55.150Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "回查编辑后的托盘", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets/2085962182631145474?tenantId=0&warehouseId=2085962181221859329" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c0b1b1c4-cbaa-488c-8935-884118f67e40, a48e00c3-174f-4a4f-bdd6-f3b2ecf4b2e1", + "traceId": "7073280a144c4fddb69b98d83d47fd88", + "evidence": "", + "checkedAt": "2026-08-08T05:31:55.170Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "托盘编辑已持久化", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets/2085962182631145474?tenantId=0&warehouseId=2085962181221859329" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c0b1b1c4-cbaa-488c-8935-884118f67e40, a48e00c3-174f-4a4f-bdd6-f3b2ecf4b2e1", + "traceId": "7073280a144c4fddb69b98d83d47fd88", + "evidence": "palletId=2085962182631145474", + "checkedAt": "2026-08-08T05:31:55.171Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "删除未使用测试托盘", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "DELETE", + "path": "/api/platform/v1/pallets/2085962182631145474?tenantId=0&warehouseId=2085962181221859329" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "91acb0f4-bb71-46f1-ab72-54ffad7b83ad, 1edb7746-cb29-460a-b854-ee04418f3c23", + "traceId": "48ccabb9883e4001beeac746e0c2d7e1", + "evidence": "", + "checkedAt": "2026-08-08T05:31:55.196Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "创建快递公司", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/express-companies?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "51291554-74fb-427d-a204-ef6b996009c4, f6b41ab8-b1a1-4372-a74f-79eff105c723", + "traceId": "d01cc3c6415240458b6072eb5195b4e2", + "evidence": "", + "checkedAt": "2026-08-08T05:31:55.230Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "查询快递公司详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies/2085962183243513857?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a67cd3fc-991b-4924-8883-00608c57b4db, 2e529556-1331-4822-ad12-7f01e75d6ae6", + "traceId": "93855b15c7a94dd4b727fa1f7fa74486", + "evidence": "", + "checkedAt": "2026-08-08T05:31:55.253Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "快递公司详情正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies/2085962183243513857?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a67cd3fc-991b-4924-8883-00608c57b4db, 2e529556-1331-4822-ad12-7f01e75d6ae6", + "traceId": "93855b15c7a94dd4b727fa1f7fa74486", + "evidence": "expressId=2085962183243513857", + "checkedAt": "2026-08-08T05:31:55.253Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "编辑快递公司", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/express-companies/2085962183243513857?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7b692462-527a-49b5-af95-3db44d7dac0a, e02b1bcb-cc84-4ffc-9ae5-1c20aed8af02", + "traceId": "8bb04766821947c7996d1633c3b4b46c", + "evidence": "", + "checkedAt": "2026-08-08T05:31:55.293Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "停用快递公司", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PATCH", + "path": "/api/platform/v1/express-companies/2085962183243513857/status?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c3569889-ee26-4ad3-ad34-f3d369c0454f, c98720a1-af3c-4ce6-8b02-6cd6d6a0ce97", + "traceId": "01abdd87385d44a39431426b04e4ccb7", + "evidence": "", + "checkedAt": "2026-08-08T05:31:55.322Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "筛选快递公司列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies?page=1&size=20&keyword=EX808053150342" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "76a3ca93-6289-40cb-a7ff-25f3f07a59be, 97800bfa-85c7-45db-af07-493ee056fdbb", + "traceId": "9bc976a26c5948c399e9f8291ec32c9a", + "evidence": "", + "checkedAt": "2026-08-08T05:31:55.350Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "快递公司列表回显停用状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies?page=1&size=20&keyword=EX808053150342" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "76a3ca93-6289-40cb-a7ff-25f3f07a59be, 97800bfa-85c7-45db-af07-493ee056fdbb", + "traceId": "9bc976a26c5948c399e9f8291ec32c9a", + "evidence": "records=1", + "checkedAt": "2026-08-08T05:31:55.350Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "创建往来单位", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/partners?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "be5d0f66-564b-4924-8a75-8f5777802e62, 1e34edfd-0567-452f-9f3b-f361d5d9c1c8", + "traceId": "322f54f58d2744ad9e3c9bc7a4aa506d", + "evidence": "", + "checkedAt": "2026-08-08T05:31:55.383Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "查询往来单位详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners/2085962183893630977?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "047642a1-5f49-4372-a247-36f3d23dffc7, d3fc4217-7400-46c1-aa9c-a85eca295e3b", + "traceId": "3b7c0f669d7e408a92d39a644df0e7ad", + "evidence": "", + "checkedAt": "2026-08-08T05:31:55.405Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "往来单位详情正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners/2085962183893630977?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "047642a1-5f49-4372-a247-36f3d23dffc7, d3fc4217-7400-46c1-aa9c-a85eca295e3b", + "traceId": "3b7c0f669d7e408a92d39a644df0e7ad", + "evidence": "partnerId=2085962183893630977", + "checkedAt": "2026-08-08T05:31:55.405Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "编辑往来单位", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/partners/2085962183893630977?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ec327afd-85c0-4fbe-b73e-80f49c125c49, 5bcfe4e2-1f1b-4cf0-9793-651001a4174e", + "traceId": "4901b83c25d642348b205b5bf5d425d9", + "evidence": "", + "checkedAt": "2026-08-08T05:31:55.446Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "停用往来单位", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PATCH", + "path": "/api/platform/v1/partners/2085962183893630977/status?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6070bc4d-48eb-4a2d-8db9-f898ea9d0cef, f6d9bab5-9e49-486b-b26d-bcfcfc48d0ce", + "traceId": "e5adfeb6b3024a6092fcdbca3612ba38", + "evidence": "", + "checkedAt": "2026-08-08T05:31:55.477Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "筛选往来单位列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners?page=1&size=20&keyword=PT808053150342" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "691038ff-30ad-4f82-af2c-c6288162c4cf, bc20e7cf-0061-495c-9a37-d3bea4e28c64", + "traceId": "90a7c9c3f0664b30bb53181ca93b166d", + "evidence": "", + "checkedAt": "2026-08-08T05:31:55.504Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "往来单位列表回显编辑与停用状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners?page=1&size=20&keyword=PT808053150342" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "691038ff-30ad-4f82-af2c-c6288162c4cf, bc20e7cf-0061-495c-9a37-d3bea4e28c64", + "traceId": "90a7c9c3f0664b30bb53181ca93b166d", + "evidence": "records=1", + "checkedAt": "2026-08-08T05:31:55.504Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "下载仓库导入模板", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin/import-template" + }, + "http": 200, + "code": null, + "message": "3853 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "630bb9d1-7722-4892-9893-f96e77e471e6, cd16dec0-99b0-497d-a5b8-4a304de702f3", + "traceId": "6bc1f2386a0740efa10b0fde712b61da", + "evidence": "bytes=3853, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "checkedAt": "2026-08-08T05:31:55.543Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "下载快递公司导入模板", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies/import-template" + }, + "http": 200, + "code": null, + "message": "3692 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "5c558c40-dd04-428f-8fa7-5103da056271, 2cc41312-1738-4126-9b61-739d2f28e69c", + "traceId": "ab68a9b30ecd46e0840e3b959ed5cfda", + "evidence": "bytes=3692, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "checkedAt": "2026-08-08T05:31:55.592Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "下载往来单位导入模板", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners/import-template" + }, + "http": 200, + "code": null, + "message": "3830 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "4212eaea-10fa-45cb-aee1-d7d346a4e15b, 6cd6c97d-4151-49ea-ab39-8f1ec69dc1cd", + "traceId": "ea96abf79cfd43179b03f414e6536f9e", + "evidence": "bytes=3830, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "checkedAt": "2026-08-08T05:31:55.621Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "停用测试仓库", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PATCH", + "path": "/api/platform/v1/warehouse-admin/2085962181221859329/status?tenantId=0&status=INACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "291db40a-139b-4778-b08b-470d216b056a, c2a0702f-6136-44b0-950a-c07b87b5c755", + "traceId": "755cfdfbe4f6427c90b5de9f34bfe45c", + "evidence": "", + "checkedAt": "2026-08-08T05:31:55.662Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 测试账号登录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/auth/login" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "cd640b9e-5c5b-41a3-8b05-7a5623f342c8, b35130cf-4f2d-4b79-8ef6-0afacbeb6f7b", + "traceId": "17e21d0c3f0d4aa9ae171741a54298e3", + "evidence": "username=merchant_admin", + "checkedAt": "2026-08-08T05:31:55.998Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询当前企业资料", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/iam/tenant/profile" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a33e19dd-c574-4dda-aa96-3de37a98f427, 84f91a0d-5f14-4e47-8040-7b49bf6c933e", + "traceId": "7e21036e0a7a4628bd4dff0f383851f1", + "evidence": "", + "checkedAt": "2026-08-08T05:31:56.029Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 测试企业已审核且客户 ID 有效", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/iam/tenant/profile" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a33e19dd-c574-4dda-aa96-3de37a98f427, 84f91a0d-5f14-4e47-8040-7b49bf6c933e", + "traceId": "7e21036e0a7a4628bd4dff0f383851f1", + "evidence": "tenantId=10001, status=ACTIVE", + "checkedAt": "2026-08-08T05:31:56.029Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询客户固定箱型", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7d02fe11-d6a9-457e-aeaf-3d2ef77da361, 7c4d3a30-aa7c-4254-bff8-d5754df20d4f", + "traceId": "f5a2ffd007f24b40a518d5f155161f98", + "evidence": "tenantId=10001", + "checkedAt": "2026-08-08T05:31:56.050Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "固定四箱型顺序、内径及每边加2cm正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7d02fe11-d6a9-457e-aeaf-3d2ef77da361, 7c4d3a30-aa7c-4254-bff8-d5754df20d4f", + "traceId": "f5a2ffd007f24b40a518d5f155161f98", + "evidence": "types=SMALL,MEDIUM,LARGE,EXTRA_LARGE", + "checkedAt": "2026-08-08T05:31:56.050Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询国内收货仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=DOMESTIC" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "83a00a99-b11d-47b1-85cc-47c5d3b551e1, 79255f81-569a-4050-a1f4-12f85afb1903", + "traceId": "c8093e1869d248c087d4f391566ba8c9", + "evidence": "", + "checkedAt": "2026-08-08T05:31:56.077Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在可用国内收货仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=DOMESTIC" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "83a00a99-b11d-47b1-85cc-47c5d3b551e1, 79255f81-569a-4050-a1f4-12f85afb1903", + "traceId": "c8093e1869d248c087d4f391566ba8c9", + "evidence": "count=2", + "checkedAt": "2026-08-08T05:31:56.078Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询 FBA 目的仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=FBA" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7cd212b1-a1ed-4ad7-8fd3-bcee1d2098c8, 150ebd12-6583-47cb-a789-39658b9f5e26", + "traceId": "130f88b9f8e04fb69c9d8146da844ecb", + "evidence": "", + "checkedAt": "2026-08-08T05:31:56.125Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在可用 FBA 目的仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=FBA" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7cd212b1-a1ed-4ad7-8fd3-bcee1d2098c8, 150ebd12-6583-47cb-a789-39658b9f5e26", + "traceId": "130f88b9f8e04fb69c9d8146da844ecb", + "evidence": "count=200", + "checkedAt": "2026-08-08T05:31:56.125Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询可用计费渠道", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/first-leg/pricing/channels?originWarehouseId=193000000000200001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1d95bc11-9c25-422c-93c9-24f9d146eea4, 7915d562-2791-4d81-8a60-284d6dac298e", + "traceId": "4a2e02ba6bc5484589609d87f7e7fb57", + "evidence": "", + "checkedAt": "2026-08-08T05:31:56.189Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在带计价税制的可用渠道", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/first-leg/pricing/channels?originWarehouseId=193000000000200001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1d95bc11-9c25-422c-93c9-24f9d146eea4, 7915d562-2791-4d81-8a60-284d6dac298e", + "traceId": "4a2e02ba6bc5484589609d87f7e7fb57", + "evidence": "count=15", + "checkedAt": "2026-08-08T05:31:56.189Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询发货客户候选", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/partners/candidates?type=SHIPPER" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "09f510bf-0895-460e-bb3a-8f6d45fd81d1, 8fd40c81-e535-4260-94ed-625e496c117a", + "traceId": "d15889ae81a7473b9179cd9455b49cb7", + "evidence": "", + "checkedAt": "2026-08-08T05:31:56.219Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 上传产品图片", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/files/product-images" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "fe1514c4-fba1-4eb1-850b-61176d191778, a4d8f961-16ac-4f18-8b0b-501885a60cf8", + "traceId": "19301769b31f43e99c848c9c64d157c9", + "evidence": "contentType=image/png", + "checkedAt": "2026-08-08T05:31:56.253Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "产品图片上传返回字符串文件 ID", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/files/product-images" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "fe1514c4-fba1-4eb1-850b-61176d191778, a4d8f961-16ac-4f18-8b0b-501885a60cf8", + "traceId": "19301769b31f43e99c848c9c64d157c9", + "evidence": "fileIdType=string, contentType=image/png", + "checkedAt": "2026-08-08T05:31:56.253Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 可下载本轮产品图片", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/files/product-images/2085962187537973250" + }, + "http": 200, + "code": null, + "message": null, + "requestId": "6b4df133-e4ee-4509-bf8f-2cc4c0abbbd7, 7787b45d-6c9d-4cea-8603-e2e447aee610", + "traceId": "9435ace9df274e71a9a55791fe46d65d", + "evidence": "bytes=68, contentType=image/png", + "checkedAt": "2026-08-08T05:31:56.279Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 创建四箱型隔离订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "64954307-706b-4b9c-b32c-c41903475f63, 196e6a2f-1087-421e-af4a-773e5b4b9771", + "traceId": "b68482e178254c779276ab43a95b15cf", + "evidence": "marker=ADMIN-API-20260808053150342", + "checkedAt": "2026-08-08T05:31:56.343Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 创建订单幂等重放", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ff3ce68e-9eff-4782-916e-2127cdbc8a9b, 7dcc074c-3303-4ff1-a533-349d8873fe54", + "traceId": "cd2b9c9ceeb94b6091f017111f61832c", + "evidence": "", + "checkedAt": "2026-08-08T05:31:56.375Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 创建幂等结果一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ff3ce68e-9eff-4782-916e-2127cdbc8a9b, 7dcc074c-3303-4ff1-a533-349d8873fe54", + "traceId": "cd2b9c9ceeb94b6091f017111f61832c", + "evidence": "orderId=2085962187894489089, replayedId=2085962187894489089", + "checkedAt": "2026-08-08T05:31:56.375Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询隔离订单草稿", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085962187894489089" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "569ea83e-1bbb-414f-922a-93dd7336709e, 1d4cf6ac-7c42-4cff-af1f-51fbfec18aa5", + "traceId": "4c1b1d4a8a31476a952572e3b4fab532", + "evidence": "", + "checkedAt": "2026-08-08T05:31:56.403Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 草稿身份、marker 和状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085962187894489089" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "569ea83e-1bbb-414f-922a-93dd7336709e, 1d4cf6ac-7c42-4cff-af1f-51fbfec18aa5", + "traceId": "4c1b1d4a8a31476a952572e3b4fab532", + "evidence": "orderNo=FL2085962187894489089, status=DRAFT", + "checkedAt": "2026-08-08T05:31:56.403Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "四箱型产品字段及图片契约完整回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085962187894489089" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "569ea83e-1bbb-414f-922a-93dd7336709e, 1d4cf6ac-7c42-4cff-af1f-51fbfec18aa5", + "traceId": "4c1b1d4a8a31476a952572e3b4fab532", + "evidence": "cargoes=4, imageFileId=2085962187537973250", + "checkedAt": "2026-08-08T05:31:56.404Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 提交隔离订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg/2085962187894489089/submit" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f5af12c5-b298-498f-a884-7fe754601e27, ad2b1b9a-e4e3-42be-9a76-ad16f7e04a70", + "traceId": "60a10da9a96045e7bf176c39cc681035", + "evidence": "orderId=2085962187894489089", + "checkedAt": "2026-08-08T05:31:56.456Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 回查已提交订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085962187894489089" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d75da191-7caa-4684-8cfd-37f7e23b8182, 8eb8fcaf-adb7-4a00-8cc6-5953dfcf96b4", + "traceId": "760ffabf64f24940884259b64ff7acbe", + "evidence": "", + "checkedAt": "2026-08-08T05:31:56.483Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 订单已进入待审核状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085962187894489089" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d75da191-7caa-4684-8cfd-37f7e23b8182, 8eb8fcaf-adb7-4a00-8cc6-5953dfcf96b4", + "traceId": "760ffabf64f24940884259b64ff7acbe", + "evidence": "status=SUBMITTED", + "checkedAt": "2026-08-08T05:31:56.483Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询统一订单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders?page=1&size=100&tenantId=10001&orderNo=FL2085962187894489089" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a38d9f6d-fe5e-4f5d-b34b-66e817c6d3dd, bf84fc05-a596-4f00-a4eb-bc8480948064", + "traceId": "f53ed24687b2441ea2a10ca0f9b162f5", + "evidence": "", + "checkedAt": "2026-08-08T05:31:56.522Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 统一订单列表只核对本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders?page=1&size=100&tenantId=10001&orderNo=FL2085962187894489089" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a38d9f6d-fe5e-4f5d-b34b-66e817c6d3dd, bf84fc05-a596-4f00-a4eb-bc8480948064", + "traceId": "f53ed24687b2441ea2a10ca0f9b162f5", + "evidence": "orderId=2085962187894489089, found=true", + "checkedAt": "2026-08-08T05:31:56.523Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询统一订单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085962187894489089?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "808757c9-dfaf-47f3-b5cc-b3e61a3e6a3c, 5173697c-c82b-449c-81cb-9e3cceb537c6", + "traceId": "edf3f9f7c99244fdb4c323d58a258cdc", + "evidence": "", + "checkedAt": "2026-08-08T05:31:56.548Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 统一订单详情身份与待审核状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085962187894489089?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "808757c9-dfaf-47f3-b5cc-b3e61a3e6a3c, 5173697c-c82b-449c-81cb-9e3cceb537c6", + "traceId": "edf3f9f7c99244fdb4c323d58a258cdc", + "evidence": "mainStatus=PENDING_REVIEW, timeline=2", + "checkedAt": "2026-08-08T05:31:56.548Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询头程订单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg?tenantId=10001&keyword=FL2085962187894489089&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "24df505a-b6bb-4c83-b296-8092dc815e8d, edb61403-565f-4400-8beb-a74ab39d46f0", + "traceId": "f05ec643b0ea49d98f47261587022627", + "evidence": "", + "checkedAt": "2026-08-08T05:31:56.576Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 头程订单列表只核对本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg?tenantId=10001&keyword=FL2085962187894489089&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "24df505a-b6bb-4c83-b296-8092dc815e8d, edb61403-565f-4400-8beb-a74ab39d46f0", + "traceId": "f05ec643b0ea49d98f47261587022627", + "evidence": "orderId=2085962187894489089, found=true", + "checkedAt": "2026-08-08T05:31:56.576Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询头程订单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085962187894489089?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f6c9f509-ed7f-4193-8a88-4c91921ac5b4, ca3156dc-a776-4f90-b3d2-87d5ac05cf9b", + "traceId": "6e75fbb155304f38a619e24bf6330bc1", + "evidence": "", + "checkedAt": "2026-08-08T05:31:56.605Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 头程订单详情聚合结构完整", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085962187894489089?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f6c9f509-ed7f-4193-8a88-4c91921ac5b4, ca3156dc-a776-4f90-b3d2-87d5ac05cf9b", + "traceId": "6e75fbb155304f38a619e24bf6330bc1", + "evidence": "cargoes=4, history=2", + "checkedAt": "2026-08-08T05:31:56.605Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "四箱型产品字段及图片契约完整回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085962187894489089?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f6c9f509-ed7f-4193-8a88-4c91921ac5b4, ca3156dc-a776-4f90-b3d2-87d5ac05cf9b", + "traceId": "6e75fbb155304f38a619e24bf6330bc1", + "evidence": "cargoes=4, imageFileId=2085962187537973250", + "checkedAt": "2026-08-08T05:31:56.605Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 为本轮订单添加内部备注", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085962187894489089/internal-notes?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "07c32529-20d3-4a55-8698-b25ed5ce8b0e, 488eaa1f-fc72-4aa9-960a-897e47d760af", + "traceId": "418f12a9fd87480c9401d4f67a068a00", + "evidence": "", + "checkedAt": "2026-08-08T05:31:56.641Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 审核通过本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085962187894489089/approve?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b54d090f-7013-4a21-8361-604839704456, 659b39a0-1316-469c-9212-f520107fe4fb", + "traceId": "88cf9dbd7bb34a019300350a23c25c1e", + "evidence": "orderId=2085962187894489089", + "checkedAt": "2026-08-08T05:31:56.673Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "审核后生成隔离入库单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085962187894489089?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4e768701-d707-4e82-ab2d-e378497ae9c7, d8d5d11f-8da5-4d5e-8aab-cff93556b983", + "traceId": "d3e53ed351bf4da4a508252c1f9220a5", + "evidence": "inboundId=2085962198357159938", + "checkedAt": "2026-08-08T05:31:59.872Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询本轮入库单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085962198357159938?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "79709b98-d597-4c0a-9db7-806daeab8064, 21f2d7b7-84b6-412d-b521-6cd40f078eca", + "traceId": "6e69a1a3cf484a0d9a5eec62ff226bb2", + "evidence": "inboundId=2085962198357159938", + "checkedAt": "2026-08-08T05:31:59.907Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "隔离入库单 marker 来源与可测量状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085962198357159938?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "79709b98-d597-4c0a-9db7-806daeab8064, 21f2d7b7-84b6-412d-b521-6cd40f078eca", + "traceId": "6e69a1a3cf484a0d9a5eec62ff226bb2", + "evidence": "markerFound=true, status=WAIT_MEASURE", + "checkedAt": "2026-08-08T05:31:59.907Z" + }, + { + "module": "orders", + "scenario": null, + "name": "入库单详情包含托盘库位、文件、备注和状态历史", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085962198357159938?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "79709b98-d597-4c0a-9db7-806daeab8064, 21f2d7b7-84b6-412d-b521-6cd40f078eca", + "traceId": "6e69a1a3cf484a0d9a5eec62ff226bb2", + "evidence": "inboundId=2085962198357159938, history=1", + "checkedAt": "2026-08-08T05:31:59.907Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询入库单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds?tenantId=10001&inboundCode=RK-2085962187894489089&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e414c0fa-9b3b-4c7f-8b9f-7174d63d05cf, aa1319a1-e2ed-46cb-932b-8d239cb83d4b", + "traceId": "644961baaa1f48b8b9eaa2eb8ea20c45", + "evidence": "", + "checkedAt": "2026-08-08T05:31:59.940Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 入库单列表只核对本轮入库单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds?tenantId=10001&inboundCode=RK-2085962187894489089&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e414c0fa-9b3b-4c7f-8b9f-7174d63d05cf, aa1319a1-e2ed-46cb-932b-8d239cb83d4b", + "traceId": "644961baaa1f48b8b9eaa2eb8ea20c45", + "evidence": "inboundId=2085962198357159938, total=1", + "checkedAt": "2026-08-08T05:31:59.941Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询本轮订单履约任务", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/by-order/2085962187894489089?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "cdda044a-806f-4573-9240-385bb9eea0ab, 88dc8ec9-81df-4c94-b817-a45be0a7ea48", + "traceId": "d12a8dc84faf4b108b45f7ff19dc8126", + "evidence": "新订单应生成可查询的履约任务", + "checkedAt": "2026-08-08T05:31:59.960Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "履约任务与本轮订单和客户一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/by-order/2085962187894489089?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "cdda044a-806f-4573-9240-385bb9eea0ab, 88dc8ec9-81df-4c94-b817-a45be0a7ea48", + "traceId": "d12a8dc84faf4b108b45f7ff19dc8126", + "evidence": "taskId=2085962198352965633, status=PENDING_ASSIGNMENT", + "checkedAt": "2026-08-08T05:31:59.960Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询本轮履约任务分配历史", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/2085962198352965633/assignment-history?tenantId=10001&page=1&size=20" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f172629c-fa90-4f5e-81bc-a1640c617299, 684f57c7-69d8-4c06-b534-e7e0594d0957", + "traceId": "ccbcd441f0ac4ca9b7c87d0c9504a904", + "evidence": "", + "checkedAt": "2026-08-08T05:31:59.999Z" + }, + { + "module": "orders", + "scenario": null, + "name": "履约分配历史分页结构正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/2085962198352965633/assignment-history?tenantId=10001&page=1&size=20" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f172629c-fa90-4f5e-81bc-a1640c617299, 684f57c7-69d8-4c06-b534-e7e0594d0957", + "traceId": "ccbcd441f0ac4ca9b7c87d0c9504a904", + "evidence": "taskId=2085962198352965633, total=0", + "checkedAt": "2026-08-08T05:31:59.999Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 受理本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085962187894489089/accept?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a5d45313-7512-49fa-af70-6153317fa8c5, 6d468e74-7d0a-463b-b6cb-40c631424897", + "traceId": "4972455a80b24c8095a63fbec0076a05", + "evidence": "", + "checkedAt": "2026-08-08T05:32:00.036Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 启动本轮订单履约", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085962187894489089/start?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "fd1a8caf-d678-4547-8f91-49580bccc0b7, 4b6fc57f-a494-417a-8297-04714fa5ce21", + "traceId": "a9199fb78d7b4625b0f4a3bf98218da1", + "evidence": "", + "checkedAt": "2026-08-08T05:32:00.065Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 回查本轮订单履约状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085962187894489089?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6e398177-c3e0-4b6a-8fc5-76e57cb8722b, af2bc6bf-e7ec-46f9-971f-126f9079cd28", + "traceId": "f99c6678c9244a1c8cae1101ce50217b", + "evidence": "", + "checkedAt": "2026-08-08T05:32:00.124Z" + }, + { + "module": "orders", + "scenario": null, + "name": "本轮订单已进入处理中且保留状态历史", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085962187894489089?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6e398177-c3e0-4b6a-8fc5-76e57cb8722b, af2bc6bf-e7ec-46f9-971f-126f9079cd28", + "traceId": "f99c6678c9244a1c8cae1101ce50217b", + "evidence": "status=PROCESSING, history=5", + "checkedAt": "2026-08-08T05:32:00.124Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "查询发布前船期价格版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4199634c-41a3-40e6-8f6e-06b57a735468, 9bdac1e5-bb34-4950-9f0a-8e079cdf4d5f", + "traceId": "c831f59f3bb54d16850e48c5fc4f47bb", + "evidence": "", + "checkedAt": "2026-08-08T05:32:00.148Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "发布前最多一份生效版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4199634c-41a3-40e6-8f6e-06b57a735468, 9bdac1e5-bb34-4950-9f0a-8e079cdf4d5f", + "traceId": "c831f59f3bb54d16850e48c5fc4f47bb", + "evidence": "versions=14, active=1", + "checkedAt": "2026-08-08T05:32:00.148Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "船期价格测试文件已隔离", + "passed": true, + "deploymentBlocker": false, + "request": null, + "http": null, + "code": null, + "message": null, + "requestId": null, + "traceId": null, + "evidence": "fileName=ADMIN-API-20260808053150342-2026.08.03柏悦价格表 船期2026.08.12.xlsx, bytes=1343413, sha256=3170fd3aa8795cd816ca9600f87a6a2a06b15d0cf6042d4592f33d4b30c7b8ab", + "checkedAt": "2026-08-08T05:32:00.151Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "上传并解析船期价格表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "752fcf31-51f3-4c50-9804-cfed4e32d4a1, 656f1e71-0151-4522-8c5b-23f5232dca83", + "traceId": "08da09ddc4ee412284d65135b736c52e", + "evidence": "fileName=ADMIN-API-20260808053150342-2026.08.03柏悦价格表 船期2026.08.12.xlsx, bytes=1343413, sha256=3170fd3aa8795cd816ca9600f87a6a2a06b15d0cf6042d4592f33d4b30c7b8ab", + "checkedAt": "2026-08-08T05:32:01.676Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "上传返回隔离的待确认版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "752fcf31-51f3-4c50-9804-cfed4e32d4a1, 656f1e71-0151-4522-8c5b-23f5232dca83", + "traceId": "08da09ddc4ee412284d65135b736c52e", + "evidence": "versionId=2085962204229185537, status=PENDING_CONFIRMATION, fileName=ADMIN-API-20260808053150342-2026.08.03柏悦价格表 船期2026.08.12.xlsx, shaMatched=true", + "checkedAt": "2026-08-08T05:32:01.676Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "解析出15个固定渠道且编码唯一", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "752fcf31-51f3-4c50-9804-cfed4e32d4a1, 656f1e71-0151-4522-8c5b-23f5232dca83", + "traceId": "08da09ddc4ee412284d65135b736c52e", + "evidence": "channelCount=15, unique=15, missing=none", + "checkedAt": "2026-08-08T05:32:01.677Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "解析价格行完整且可追溯到 Excel", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "752fcf31-51f3-4c50-9804-cfed4e32d4a1, 656f1e71-0151-4522-8c5b-23f5232dca83", + "traceId": "08da09ddc4ee412284d65135b736c52e", + "evidence": "rateCount=2157, declared=2157, valid=true", + "checkedAt": "2026-08-08T05:32:01.677Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "解析阻断仅包含可确认的仓库映射问题", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "752fcf31-51f3-4c50-9804-cfed4e32d4a1, 656f1e71-0151-4522-8c5b-23f5232dca83", + "traceId": "08da09ddc4ee412284d65135b736c52e", + "evidence": "blocking=0, unexpected=none, infrastructure=none", + "checkedAt": "2026-08-08T05:32:01.678Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "上传后回查价格版本列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1a467a02-dae1-41ef-9d0b-ad9ce844dd45, f61b519e-c01a-412a-98cb-e80feccd28b8", + "traceId": "b0ead8ab04c2477fa6e3d9b35e6d15e9", + "evidence": "", + "checkedAt": "2026-08-08T05:32:01.719Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "上传只生成待确认版本且不替换当前生效版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1a467a02-dae1-41ef-9d0b-ad9ce844dd45, f61b519e-c01a-412a-98cb-e80feccd28b8", + "traceId": "b0ead8ab04c2477fa6e3d9b35e6d15e9", + "evidence": "pending=PENDING_CONFIRMATION, activeBefore=2085961800552591362, activeAfterUpload=2085961800552591362", + "checkedAt": "2026-08-08T05:32:01.719Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "查询待确认版本渠道和价格预览", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books/2085962204229185537" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c8e1228c-dcac-4a68-8c4d-d3f02eab471c, f3340e32-84c1-474e-8b6a-e04db3d47a6e", + "traceId": "88c61474bee7484f9e114cdf3a741047", + "evidence": "", + "checkedAt": "2026-08-08T05:32:01.804Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "详情与上传解析结果一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books/2085962204229185537" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c8e1228c-dcac-4a68-8c4d-d3f02eab471c, f3340e32-84c1-474e-8b6a-e04db3d47a6e", + "traceId": "88c61474bee7484f9e114cdf3a741047", + "evidence": "versionId=2085962204229185537, channels=15, rates=2157, issues=2", + "checkedAt": "2026-08-08T05:32:01.804Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "下载原始 XLSX 且内容散列一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books/2085962204229185537/source" + }, + "http": 200, + "code": null, + "message": "1343413 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "97a25333-565f-4f48-9bed-f5ddba2eca97, b71d0915-0913-4273-b6b5-ec52e8153790, 0678cfd5-bd83-470d-9530-44f7f933fe54", + "traceId": "ed9392e38d57499686d2d9a267f6ee67, 6545025eac124e7d8268ccef3e8a6d1a", + "evidence": "bytes=1343413, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, zipMagic=true, sha256=3170fd3aa8795cd816ca9600f87a6a2a06b15d0cf6042d4592f33d4b30c7b8ab", + "checkedAt": "2026-08-08T05:32:01.912Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "查询启用的平台公共国内仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=200&status=ACTIVE&warehouseType=DOMESTIC" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9cfbef2d-9b42-462b-9908-15898f7aead6, fdb76742-5366-4778-95ae-aae97ba6b919", + "traceId": "3c57a6a022c14b659d22a343ff71c337", + "evidence": "", + "checkedAt": "2026-08-08T05:32:01.937Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "查询启用的平台公共海外仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=200&status=ACTIVE&warehouseType=OVERSEAS" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "60e3bce8-5ccb-40b7-ad4e-8ee777514a41, 9cec1055-572b-481d-8162-81d597491ae2", + "traceId": "77c553f43b9145e8860ffee61d08ffbb", + "evidence": "", + "checkedAt": "2026-08-08T05:32:01.959Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "国内起运仓和目的海外仓均精确映射", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=200&status=ACTIVE&warehouseType=OVERSEAS" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "60e3bce8-5ccb-40b7-ad4e-8ee777514a41, 9cec1055-572b-481d-8162-81d597491ae2", + "traceId": "77c553f43b9145e8860ffee61d08ffbb", + "evidence": "origins=CN-DONGGUAN-01->193000000000200002,CN-YIWU-01->193000000000200001, overseas=纽约仓->193000000000200004,洛杉矶仓->193000000000200003, missing=none", + "checkedAt": "2026-08-08T05:32:01.960Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "确认仓库映射并立即生效", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books/2085962204229185537/publish" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "700baf5d-9002-4460-b33a-1381fb398efb, b9b9afc0-e2ea-482b-b01d-ee12d42e0c1f", + "traceId": "9a8a0a7545784d35a266bfcd3c136c5c", + "evidence": "versionId=2085962204229185537, originMappings=2, overseasMappings=2", + "checkedAt": "2026-08-08T05:32:03.597Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "发布后价格版本为 ACTIVE 且无阻断", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books/2085962204229185537/publish" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "700baf5d-9002-4460-b33a-1381fb398efb, b9b9afc0-e2ea-482b-b01d-ee12d42e0c1f", + "traceId": "9a8a0a7545784d35a266bfcd3c136c5c", + "evidence": "status=ACTIVE, blocking=0, publishedAt=2026-08-08T13:32:02.46, channels=15, rates=2157", + "checkedAt": "2026-08-08T05:32:03.597Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "发布后回查当前生效和历史版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "174a1356-c212-4f05-9baf-285fe33e5c93, 68680491-5563-4b7c-a365-e0d4b98dd499", + "traceId": "6e43e120aee24a8fa815c8b88d86fa55", + "evidence": "", + "checkedAt": "2026-08-08T05:32:03.631Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "始终只有一份当前生效版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "174a1356-c212-4f05-9baf-285fe33e5c93, 68680491-5563-4b7c-a365-e0d4b98dd499", + "traceId": "6e43e120aee24a8fa815c8b88d86fa55", + "evidence": "active=2085962204229185537", + "checkedAt": "2026-08-08T05:32:03.631Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "上一生效版本已保留为历史版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "174a1356-c212-4f05-9baf-285fe33e5c93, 68680491-5563-4b7c-a365-e0d4b98dd499", + "traceId": "6e43e120aee24a8fa815c8b88d86fa55", + "evidence": "previous=2085961800552591362, superseded=true", + "checkedAt": "2026-08-08T05:32:03.631Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "查询当前生效价格版本详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books/2085962204229185537" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0203fb65-0230-46f9-8769-4aa4f23a40d7, cf45cb33-1451-44c8-9038-ed3190caf04e", + "traceId": "c9da9c1c9e534fc498fc26bf6f4e5b18", + "evidence": "", + "checkedAt": "2026-08-08T05:32:03.729Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "当前生效版本预览数据完整", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books/2085962204229185537" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0203fb65-0230-46f9-8769-4aa4f23a40d7, cf45cb33-1451-44c8-9038-ed3190caf04e", + "traceId": "c9da9c1c9e534fc498fc26bf6f4e5b18", + "evidence": "status=ACTIVE, channels=15, rates=2157", + "checkedAt": "2026-08-08T05:32:03.729Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "已生效版本禁止重复发布", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books/2085962204229185537/publish" + }, + "http": 200, + "code": "A0409", + "message": "只有待确认上传记录可以确认并生效", + "requestId": "5abccb17-b43f-4e70-a0ed-d91df87ead40", + "traceId": "df83915029434819b7c573216ab5b854", + "evidence": "HTTP=200, code=A0409", + "checkedAt": "2026-08-08T05:32:03.764Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "重复发布被拒绝后回查版本状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8d7f2d33-94e2-43c0-aa6b-f70f55d2a44c, 4c659b0e-cacf-4f83-a018-30911533f62b", + "traceId": "854e3a437c3e44d287537aefb552a9ba", + "evidence": "", + "checkedAt": "2026-08-08T05:32:03.793Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "重复发布未改变唯一生效版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8d7f2d33-94e2-43c0-aa6b-f70f55d2a44c, 4c659b0e-cacf-4f83-a018-30911533f62b", + "traceId": "854e3a437c3e44d287537aefb552a9ba", + "evidence": "active=2085962204229185537", + "checkedAt": "2026-08-08T05:32:03.793Z" + }, + { + "module": "downloads", + "scenario": null, + "name": "创建客户列表导出任务", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/export-tasks" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ec2a844d-005f-4d4b-b761-c04d1db133a1, d57632d1-40b5-4d7a-bbb9-69de0f3bdddb", + "traceId": "9b4fdc5271a3496e93ac9b3f3431a3a5", + "evidence": "", + "checkedAt": "2026-08-08T05:32:03.831Z" + }, + { + "module": "downloads", + "scenario": null, + "name": "导出任务创建字段正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/export-tasks" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ec2a844d-005f-4d4b-b761-c04d1db133a1, d57632d1-40b5-4d7a-bbb9-69de0f3bdddb", + "traceId": "9b4fdc5271a3496e93ac9b3f3431a3a5", + "evidence": "taskId=2085962219301437441, status=PENDING", + "checkedAt": "2026-08-08T05:32:03.831Z" + }, + { + "module": "downloads", + "scenario": null, + "name": "查询下载中心任务列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=20&exportType=CUSTOMER_LIST" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b0d00951-7442-4b3b-aba6-c4f11ea5543d, 65dc0d14-3350-44e0-ba34-c5b904ff8216", + "traceId": "be03b54e31d54b64ba8ff98350d58c71", + "evidence": "", + "checkedAt": "2026-08-08T05:32:03.858Z" + }, + { + "module": "downloads", + "scenario": null, + "name": "下载中心列表包含新任务", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=20&exportType=CUSTOMER_LIST" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b0d00951-7442-4b3b-aba6-c4f11ea5543d, 65dc0d14-3350-44e0-ba34-c5b904ff8216", + "traceId": "be03b54e31d54b64ba8ff98350d58c71", + "evidence": "records=10", + "checkedAt": "2026-08-08T05:32:03.858Z" + }, + { + "module": "downloads", + "scenario": null, + "name": "轮询导出任务直到终态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks/2085962219301437441" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e8f45e14-d039-4949-952c-e950c879f9a8, cc38d06f-a99e-46f3-a03d-7500b6eec71a", + "traceId": "ded0b90dad8b4dc5bed790e3dcba6dae", + "evidence": "status=SUCCEEDED, processedRows=0", + "checkedAt": "2026-08-08T05:32:05.911Z" + }, + { + "module": "downloads", + "scenario": null, + "name": "查询导出任务详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks/2085962219301437441" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2939f5ce-52f4-42a5-9b60-f1388040fd78, 230b4b96-b00f-43a7-bddd-c77785ac9bf7", + "traceId": "83718885701f48b29abe7ad5c4160f96", + "evidence": "", + "checkedAt": "2026-08-08T05:32:05.939Z" + }, + { + "module": "downloads", + "scenario": null, + "name": "导出详情行数和文件元数据正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks/2085962219301437441" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2939f5ce-52f4-42a5-9b60-f1388040fd78, 230b4b96-b00f-43a7-bddd-c77785ac9bf7", + "traceId": "83718885701f48b29abe7ad5c4160f96", + "evidence": "processedRows=0, sizeBytes=4067", + "checkedAt": "2026-08-08T05:32:05.939Z" + }, + { + "module": "downloads", + "scenario": null, + "name": "下载并校验客户列表 XLSX", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks/2085962219301437441/download" + }, + "http": 200, + "code": null, + "message": "4067 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "8f04a598-7efb-4c66-9811-ddac8d55722a, 9d576efa-2f68-46ee-85de-03c4ab38610d", + "traceId": "eb3f19668de54cffa29f635a7ac0e55e", + "evidence": "bytes=4067, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "checkedAt": "2026-08-08T05:32:05.973Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "仅选择带本轮测试标记的可编辑入库单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085962198357159938?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6634b1d1-34f9-45d3-a96b-1ed0fbd131d1, 384e8303-1e69-4fae-bcb7-2cc6b2f95db9", + "traceId": "448c7a3e476f4101990198ca9b671816", + "evidence": "tenantId=10001, inboundId=2085962198357159938, status=WAIT_MEASURE", + "checkedAt": "2026-08-08T05:32:06.006Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "读取 OCR 测试前重量工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085962198357159938/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6b2f3335-2d5e-4150-871f-0e7ffe6da2e6, 11eae7ae-bee1-4b79-aa3c-297138ce66cc", + "traceId": "f5480f329dc94445bc6d2d805b9a74b4", + "evidence": "inboundId=2085962198357159938", + "checkedAt": "2026-08-08T05:32:06.036Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "测试入库单身份与基线可追踪", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085962198357159938/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6b2f3335-2d5e-4150-871f-0e7ffe6da2e6, 11eae7ae-bee1-4b79-aa3c-297138ce66cc", + "traceId": "f5480f329dc94445bc6d2d805b9a74b4", + "evidence": "existingResults=0, baselineWeight=null", + "checkedAt": "2026-08-08T05:32:06.036Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "未认证请求不能上传称重图片", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085962198357159938" + }, + "http": 401, + "code": "A0401", + "message": "未登录或令牌已失效", + "requestId": "29aa0ecb-1519", + "traceId": null, + "evidence": "HTTP=401, code=A0401", + "checkedAt": "2026-08-08T05:32:06.055Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "非图片类型被拒绝且不模拟成功", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085962198357159938" + }, + "http": 200, + "code": "A0400", + "message": "称重图片仅支持JPG、PNG、BMP", + "requestId": "acad33e3-c5f8-46c9-9a0a-d63b0ca30a80", + "traceId": "5f6346ae965f40ad949b0b9d6d5cb105", + "evidence": "HTTP=200, code=A0400", + "checkedAt": "2026-08-08T05:32:06.081Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "超过5MB图片被拒绝", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085962198357159938" + }, + "http": 200, + "code": "A0400", + "message": "称重图片不能超过5MB", + "requestId": "9b472479-79d0-4200-94ab-3802975c992d", + "traceId": "4374ec4a9e0e486381907e1d728ac323", + "evidence": "HTTP=200, code=A0400", + "checkedAt": "2026-08-08T05:32:07.179Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "上传称重图片并执行 OCR", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085962198357159938" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "943c54cb-0bbc-46df-af6f-9da3ee0242b0, 27cd648f-0aaa-4e39-b173-edeba158c357", + "traceId": "da2bf3ed48dc486992b5a4b37773acaf", + "evidence": "file=orig_1cf27695-b2c3-44b3-98e3-c0be8b80f79a.JPG, size=3701469", + "checkedAt": "2026-08-08T05:32:08.500Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "上传响应保持文件 ID 字符串契约", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085962198357159938" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "943c54cb-0bbc-46df-af6f-9da3ee0242b0, 27cd648f-0aaa-4e39-b173-edeba158c357", + "traceId": "da2bf3ed48dc486992b5a4b37773acaf", + "evidence": "fileIdType=string, status=RECOGNIZED", + "checkedAt": "2026-08-08T05:32:08.500Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "OCR 上传响应字段完整且置信度受限", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085962198357159938" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "943c54cb-0bbc-46df-af6f-9da3ee0242b0, 27cd648f-0aaa-4e39-b173-edeba158c357", + "traceId": "da2bf3ed48dc486992b5a4b37773acaf", + "evidence": "status=RECOGNIZED, hasWeight=true, confidence=0.50972", + "checkedAt": "2026-08-08T05:32:08.500Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "重试当前称重图片 OCR", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085962198357159938/2085962235193655297/recognize" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d8f71018-b492-41d3-8ecc-e11581f87da1, 1d32c9cd-b8f3-47a3-8d51-663d38b4d07c", + "traceId": "0b916a437b3a46a1a14959ccade4c0b3", + "evidence": "fileId=2085962235193655297", + "checkedAt": "2026-08-08T05:32:09.288Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "OCR 重试保持文件身份并返回识别契约", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085962198357159938/2085962235193655297/recognize" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d8f71018-b492-41d3-8ecc-e11581f87da1, 1d32c9cd-b8f3-47a3-8d51-663d38b4d07c", + "traceId": "0b916a437b3a46a1a14959ccade4c0b3", + "evidence": "sameFile=true, status=RECOGNIZED", + "checkedAt": "2026-08-08T05:32:09.288Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "登记 OCR 原值", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085962198357159938/weight-results?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "fbd060f9-268a-4ffd-b91a-041021e4e00e, ab5d6779-2ad5-4108-b167-931ed98fe221", + "traceId": "133f8028ac93452a8aa38939d6382e73", + "evidence": "fileId=2085962235193655297", + "checkedAt": "2026-08-08T05:32:09.329Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "重量结果 ID、文件 ID 和初始版本契约正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085962198357159938/weight-results?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "fbd060f9-268a-4ffd-b91a-041021e4e00e, ab5d6779-2ad5-4108-b167-931ed98fe221", + "traceId": "133f8028ac93452a8aa38939d6382e73", + "evidence": "resultIdType=string, fileIdType=string, version=0", + "checkedAt": "2026-08-08T05:32:09.329Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "鉴权读取原始称重图片", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/measurements/10001/2085962198357159938/2085962235193655297" + }, + "http": 200, + "code": null, + "message": "3701469 bytes (image/jpeg)", + "requestId": "c22f7804-4e21-468f-9495-90fa0bb5d4b4, fe7ae18a-64dc-4fa6-a61d-62f735ef1bd9", + "traceId": "551dda5a123146218f0b55d0292d4ecc", + "evidence": "contentType=image/jpeg, bytes=3701469", + "checkedAt": "2026-08-08T05:32:09.501Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "缩略图返回受限尺寸 JPEG", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/measurements/10001/2085962198357159938/2085962235193655297/thumbnail" + }, + "http": 200, + "code": null, + "message": "18677 bytes (image/jpeg)", + "requestId": "d6fe6c72-3a66-49a5-917d-228227b5c574, 36edc855-251e-4f8d-8cd9-0c0dfbcf55f4", + "traceId": "e6a11c7bc1bf427eb05ea408c4654494", + "evidence": "contentType=image/jpeg, bytes=18677, dimensions=240x320", + "checkedAt": "2026-08-08T05:32:09.871Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "登记后回查 OCR 重量结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085962198357159938/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3ab24a1a-7649-471b-8287-402f7c5107ce, 5c179221-366b-4166-b662-adda68336937", + "traceId": "a5fed374d8674f4b99807bc3fa0e6b1a", + "evidence": "inboundId=2085962198357159938", + "checkedAt": "2026-08-08T05:32:09.893Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "工作区保留本轮 OCR 原值且未覆盖历史结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085962198357159938/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3ab24a1a-7649-471b-8287-402f7c5107ce, 5c179221-366b-4166-b662-adda68336937", + "traceId": "a5fed374d8674f4b99807bc3fa0e6b1a", + "evidence": "resultFound=true, baselineCount=0, currentCount=1", + "checkedAt": "2026-08-08T05:32:09.893Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "旧版本确认返回并发冲突", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085962198357159938/weight-results/2085962242380574721/confirm?tenantId=10001" + }, + "http": 200, + "code": "A0409", + "message": "数据版本已变化,请刷新后重试", + "requestId": "49547695-72f0-483f-b2a1-521771423371", + "traceId": "d38cb3df3944411eb7af911e4fc9e9ea", + "evidence": "HTTP=200, code=A0409", + "checkedAt": "2026-08-08T05:32:09.927Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "确认 OCR 重量并计入实际总毛重", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085962198357159938/weight-results/2085962242380574721/confirm?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7f95d917-0bac-4473-a0e2-d00122ef7942, 7082044b-c884-4e0d-9403-f2f463c2901e", + "traceId": "707ff988b15841b18e9923a3bacc4aad", + "evidence": "usedOriginal=true", + "checkedAt": "2026-08-08T05:32:09.966Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "确认结果状态、版本和最终KG正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085962198357159938/weight-results/2085962242380574721/confirm?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7f95d917-0bac-4473-a0e2-d00122ef7942, 7082044b-c884-4e0d-9403-f2f463c2901e", + "traceId": "707ff988b15841b18e9923a3bacc4aad", + "evidence": "status=CONFIRMED, version=1, finalKg=285.5", + "checkedAt": "2026-08-08T05:32:09.966Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "确认后回查实际总毛重", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085962198357159938/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "24abf23d-545f-4769-8b9a-a75efa67e9ec, bd6e5814-e2ae-4a03-bb82-7c5b044787cf", + "traceId": "282fe86d3577491c828de6826b26fa3a", + "evidence": "inboundId=2085962198357159938", + "checkedAt": "2026-08-08T05:32:09.989Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "确认后实际总毛重按服务端结果重算", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085962198357159938/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "24abf23d-545f-4769-8b9a-a75efa67e9ec, bd6e5814-e2ae-4a03-bb82-7c5b044787cf", + "traceId": "282fe86d3577491c828de6826b26fa3a", + "evidence": "baseline=null, added=285.5, actual=285.5", + "checkedAt": "2026-08-08T05:32:09.989Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "旧版本删除返回并发冲突", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "DELETE", + "path": "/api/platform/v1/first-leg/inbounds/2085962198357159938/weight-results/2085962242380574721?tenantId=10001&version=0" + }, + "http": 200, + "code": "A0409", + "message": "数据版本已变化,请刷新后重试", + "requestId": "47730a48-d595-4250-ad34-d2fcb37ffdd8", + "traceId": "987cd7b1a8ac47839a2a4745f517893a", + "evidence": "HTTP=200, code=A0409", + "checkedAt": "2026-08-08T05:32:10.021Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除本轮已确认图片及重量结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "DELETE", + "path": "/api/platform/v1/first-leg/inbounds/2085962198357159938/weight-results/2085962242380574721?tenantId=10001&version=1" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "af186625-f397-4868-ab85-f009c68fc672, 11c462b0-0ed7-48f6-af15-c5512be2a165", + "traceId": "dfae95fd4c7c43c49c7fc4d1077ab45f", + "evidence": "resultId=2085962242380574721, version=1", + "checkedAt": "2026-08-08T05:32:10.060Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除后回查重量工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085962198357159938/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a9bcc15d-f4a2-4203-9c39-a9885bcba4ff, a42881d9-17c1-4eba-ab16-67ea1a59260e", + "traceId": "996663b5fc0c4c419e797eb707abf519", + "evidence": "inboundId=2085962198357159938", + "checkedAt": "2026-08-08T05:32:10.098Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除后结果消失且总毛重恢复基线", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085962198357159938/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a9bcc15d-f4a2-4203-9c39-a9885bcba4ff, a42881d9-17c1-4eba-ab16-67ea1a59260e", + "traceId": "996663b5fc0c4c419e797eb707abf519", + "evidence": "resultMissing=true, baseline=null, actual=null", + "checkedAt": "2026-08-08T05:32:10.098Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除结果后原始图片不可再读取", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/measurements/10001/2085962198357159938/2085962235193655297" + }, + "http": 200, + "code": "A0404", + "message": "称重图片不存在", + "requestId": "8f746630-b4b4-4ab5-bef5-823996086715", + "traceId": "62ad2842d2b54bf0b043136cc8e68fb9", + "evidence": "HTTP=200, code=A0404", + "checkedAt": "2026-08-08T05:32:10.127Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "上传称重图片并执行 OCR", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085962198357159938" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f3e2c783-fd59-4b15-b4f0-77a6c5929699, 1c797458-5e15-439d-b2ee-baeaec16f6c8", + "traceId": "a78e8e36f3954e6ea4c20437d095bad6", + "evidence": "file=orig_1cf27695-b2c3-44b3-98e3-c0be8b80f79a.JPG, size=3701469", + "checkedAt": "2026-08-08T05:32:11.507Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "上传响应保持文件 ID 字符串契约", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085962198357159938" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f3e2c783-fd59-4b15-b4f0-77a6c5929699, 1c797458-5e15-439d-b2ee-baeaec16f6c8", + "traceId": "a78e8e36f3954e6ea4c20437d095bad6", + "evidence": "fileIdType=string, status=RECOGNIZED", + "checkedAt": "2026-08-08T05:32:11.507Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "OCR 上传响应字段完整且置信度受限", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085962198357159938" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f3e2c783-fd59-4b15-b4f0-77a6c5929699, 1c797458-5e15-439d-b2ee-baeaec16f6c8", + "traceId": "a78e8e36f3954e6ea4c20437d095bad6", + "evidence": "status=RECOGNIZED, hasWeight=true, confidence=0.50972", + "checkedAt": "2026-08-08T05:32:11.507Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "登记人工录入重量结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085962198357159938/weight-results?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "cd8c0560-f525-4b79-9ca7-33d1ea0f2f76, 9032e353-77b8-4f02-8bcc-005c022e4bca", + "traceId": "61aa454c96c544a1bc9a672c579b4e78", + "evidence": "fileId=2085962248300855297", + "checkedAt": "2026-08-08T05:32:11.536Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "重量结果 ID、文件 ID 和初始版本契约正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085962198357159938/weight-results?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "cd8c0560-f525-4b79-9ca7-33d1ea0f2f76, 9032e353-77b8-4f02-8bcc-005c022e4bca", + "traceId": "61aa454c96c544a1bc9a672c579b4e78", + "evidence": "resultIdType=string, fileIdType=string, version=0", + "checkedAt": "2026-08-08T05:32:11.536Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "零重量确认被拒绝", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085962198357159938/weight-results/2085962251637403650/confirm?tenantId=10001" + }, + "http": 200, + "code": "A0422", + "message": "adjustedWeightValue: must be greater than or equal to 0.001", + "requestId": "54f78546-bcf6-412c-bcd7-f2488060b63c", + "traceId": "8d573cddbb2a408baa6387e11970ffa0", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T05:32:11.557Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "零重量确认被拒绝后回查工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085962198357159938/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "17de289a-17dc-429e-a107-0acabccbe7bd, a8f245eb-a9bb-4b07-90b6-aeb4f61e449e", + "traceId": "673001d2aeb040839f75abcfb12ae9f8", + "evidence": "inboundId=2085962198357159938", + "checkedAt": "2026-08-08T05:32:11.593Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "零重量确认被拒绝未改变重量结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085962198357159938/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "17de289a-17dc-429e-a107-0acabccbe7bd, a8f245eb-a9bb-4b07-90b6-aeb4f61e449e", + "traceId": "673001d2aeb040839f75abcfb12ae9f8", + "evidence": "version=0, status=NEEDS_MANUAL", + "checkedAt": "2026-08-08T05:32:11.593Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "负重量确认被拒绝", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085962198357159938/weight-results/2085962251637403650/confirm?tenantId=10001" + }, + "http": 200, + "code": "A0422", + "message": "adjustedWeightValue: must be greater than or equal to 0.001", + "requestId": "cf283514-3aee-43a1-ac9d-7c2abd90e511", + "traceId": "4cf232dac8a4462cb6c6eb5471d4767a", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T05:32:11.621Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "负重量确认被拒绝后回查工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085962198357159938/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "69885923-885a-4f06-8d5c-cd232883d832, 41dd9695-1a06-4eb0-bae9-bfeffb04ce07", + "traceId": "18af8b0bb6f6443cb780d3914c0ab306", + "evidence": "inboundId=2085962198357159938", + "checkedAt": "2026-08-08T05:32:11.656Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "负重量确认被拒绝未改变重量结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085962198357159938/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "69885923-885a-4f06-8d5c-cd232883d832, 41dd9695-1a06-4eb0-bae9-bfeffb04ce07", + "traceId": "18af8b0bb6f6443cb780d3914c0ab306", + "evidence": "version=0, status=NEEDS_MANUAL", + "checkedAt": "2026-08-08T05:32:11.656Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "LB 0.001换算为零后被拒绝", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085962198357159938/weight-results/2085962251637403650/confirm?tenantId=10001" + }, + "http": 200, + "code": "A0422", + "message": "换算后重量不能小于 0.001 KG", + "requestId": "9ddd2490-a0b0-42d1-81b3-574dbd1ba6ef", + "traceId": "e0f704174b854010a99a05cb80b0a64f", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T05:32:11.688Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "LB 0.001换算为零后被拒绝后回查工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085962198357159938/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f5f41288-9a99-474d-9dce-218559e577f6, 45b15298-5766-420d-823b-adca2b0d8f0b", + "traceId": "2dd0d4087d5e4abda9fe4cb6737ba5bc", + "evidence": "inboundId=2085962198357159938", + "checkedAt": "2026-08-08T05:32:11.719Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "LB 0.001换算为零后被拒绝未改变重量结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085962198357159938/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f5f41288-9a99-474d-9dce-218559e577f6, 45b15298-5766-420d-823b-adca2b0d8f0b", + "traceId": "2dd0d4087d5e4abda9fe4cb6737ba5bc", + "evidence": "version=0, status=NEEDS_MANUAL", + "checkedAt": "2026-08-08T05:32:11.719Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "超出15位整数重量被拒绝", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085962198357159938/weight-results/2085962251637403650/confirm?tenantId=10001" + }, + "http": 200, + "code": "A0422", + "message": "adjustedWeightValue: numeric value out of bounds (<15 digits>.<3 digits> expected)", + "requestId": "305bfa0b-924d-4375-8239-79f893fd45e1", + "traceId": "43d7a2b2c024482f9a40057a6b682e65", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T05:32:11.737Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "超出15位整数重量被拒绝后回查工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085962198357159938/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "08a920c4-3c4e-4e61-a3a1-e5e6ebb5474f, a578a801-0b09-4c5d-b043-49c8fc220845", + "traceId": "e1114ed0e5184aada3520d290207b4fe", + "evidence": "inboundId=2085962198357159938", + "checkedAt": "2026-08-08T05:32:11.758Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "超出15位整数重量被拒绝未改变重量结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085962198357159938/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "08a920c4-3c4e-4e61-a3a1-e5e6ebb5474f, a578a801-0b09-4c5d-b043-49c8fc220845", + "traceId": "e1114ed0e5184aada3520d290207b4fe", + "evidence": "version=0, status=NEEDS_MANUAL", + "checkedAt": "2026-08-08T05:32:11.758Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "人工改重与确认原子完成", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085962198357159938/weight-results/2085962251637403650/confirm?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5c434278-1ecf-4d85-bd68-4788a82f8d4a, b8729e7c-1032-49ce-8cfe-803dd750524f", + "traceId": "ec9380d7f4e5420ba1bdb66de1294b08", + "evidence": "adjusted=10.125 LB", + "checkedAt": "2026-08-08T05:32:11.801Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "LB 人工改重保留输入并正确换算最终KG", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085962198357159938/weight-results/2085962251637403650/confirm?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5c434278-1ecf-4d85-bd68-4788a82f8d4a, b8729e7c-1032-49ce-8cfe-803dd750524f", + "traceId": "ec9380d7f4e5420ba1bdb66de1294b08", + "evidence": "adjusted=10.125 LB, finalKg=4.593, expectedKg=4.593", + "checkedAt": "2026-08-08T05:32:11.801Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除本轮人工改重图片及结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "DELETE", + "path": "/api/platform/v1/first-leg/inbounds/2085962198357159938/weight-results/2085962251637403650?tenantId=10001&version=2" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "aacce4a1-974d-4474-8a85-01ac66320f38, f71ec1e0-e3e6-4c98-8a45-4a4d93b05571", + "traceId": "a93e34cfba0b403295323836975e48a7", + "evidence": "resultId=2085962251637403650, version=2", + "checkedAt": "2026-08-08T05:32:11.844Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除后回查重量工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085962198357159938/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4261f70d-8cb0-4d74-b4b3-f8e91138158f, 1b2c21e8-552d-4543-8911-cdedcbc7df77", + "traceId": "71fe2d5e964740f7a6868566976b93b9", + "evidence": "inboundId=2085962198357159938", + "checkedAt": "2026-08-08T05:32:11.872Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除后结果消失且总毛重恢复基线", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085962198357159938/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4261f70d-8cb0-4d74-b4b3-f8e91138158f, 1b2c21e8-552d-4543-8911-cdedcbc7df77", + "traceId": "71fe2d5e964740f7a6868566976b93b9", + "evidence": "resultMissing=true, baseline=null, actual=null", + "checkedAt": "2026-08-08T05:32:11.872Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除结果后原始图片不可再读取", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/measurements/10001/2085962198357159938/2085962248300855297" + }, + "http": 200, + "code": "A0404", + "message": "称重图片不存在", + "requestId": "4b8d3963-4122-410c-a43d-da9107701344", + "traceId": "595493468e294f528f511610df480da8", + "evidence": "HTTP=200, code=A0404", + "checkedAt": "2026-08-08T05:32:11.904Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "最终清理后回查重量工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085962198357159938/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1b58dc51-6a0d-4a7a-a6d8-b8d994edc1a9, fa487c98-0c83-4cf5-8509-a01bc84bdfb5", + "traceId": "eb508ffde46548d88168fdd91df35852", + "evidence": "inboundId=2085962198357159938", + "checkedAt": "2026-08-08T05:32:11.934Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "仅清理本轮结果且订单总毛重恢复运行前基线", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085962198357159938/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1b58dc51-6a0d-4a7a-a6d8-b8d994edc1a9, fa487c98-0c83-4cf5-8509-a01bc84bdfb5", + "traceId": "eb508ffde46548d88168fdd91df35852", + "evidence": "leftovers=0, baseline=null, actual=null", + "checkedAt": "2026-08-08T05:32:11.934Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 测试账号登录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/auth/login" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7e4b9a05-50c1-41aa-a5c7-f8179bfb3f53, 0a1eb68d-2660-4da8-aeb4-9a751aa46781", + "traceId": "bfea4c4f9105444aa5ecd3d41818ba06", + "evidence": "username=merchant_admin", + "checkedAt": "2026-08-08T05:32:12.276Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询当前企业资料", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/iam/tenant/profile" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a7e7be46-53d9-4056-b4e8-690710c2520b, 2f8fc06a-a025-40dd-abe5-ae9d5d03e993", + "traceId": "6f557255f6f74b1e90beb7aeb1e396de", + "evidence": "", + "checkedAt": "2026-08-08T05:32:12.298Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 测试企业已审核且客户 ID 有效", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/iam/tenant/profile" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a7e7be46-53d9-4056-b4e8-690710c2520b, 2f8fc06a-a025-40dd-abe5-ae9d5d03e993", + "traceId": "6f557255f6f74b1e90beb7aeb1e396de", + "evidence": "tenantId=10001, status=ACTIVE", + "checkedAt": "2026-08-08T05:32:12.298Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询客户固定箱型", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "20815cac-ddcc-411c-b1c6-5c8038540f4a, 1835c37b-d8d1-4216-ba16-0258fac7e1c0", + "traceId": "95441098b68542d7ae2226076b02de96", + "evidence": "tenantId=10001", + "checkedAt": "2026-08-08T05:32:12.328Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "固定四箱型顺序、内径及每边加2cm正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "20815cac-ddcc-411c-b1c6-5c8038540f4a, 1835c37b-d8d1-4216-ba16-0258fac7e1c0", + "traceId": "95441098b68542d7ae2226076b02de96", + "evidence": "types=SMALL,MEDIUM,LARGE,EXTRA_LARGE", + "checkedAt": "2026-08-08T05:32:12.328Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询国内收货仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=DOMESTIC" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8173d595-2538-4080-98c9-584e4206239a, 0cd7ae5f-dab4-4bf1-b2b9-8902cd56e0b8", + "traceId": "bc8d33c0530145b7a70fc0faba740547", + "evidence": "", + "checkedAt": "2026-08-08T05:32:12.358Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在可用国内收货仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=DOMESTIC" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8173d595-2538-4080-98c9-584e4206239a, 0cd7ae5f-dab4-4bf1-b2b9-8902cd56e0b8", + "traceId": "bc8d33c0530145b7a70fc0faba740547", + "evidence": "count=2", + "checkedAt": "2026-08-08T05:32:12.358Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询 FBA 目的仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=FBA" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4bd17bcf-f660-41ed-b6a2-5d4b1db01824, 9fcceeeb-429b-4323-b2da-0706b8a17cf8", + "traceId": "db5203e53d1d4d6ba0967824f82c26b0", + "evidence": "", + "checkedAt": "2026-08-08T05:32:12.413Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在可用 FBA 目的仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=FBA" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4bd17bcf-f660-41ed-b6a2-5d4b1db01824, 9fcceeeb-429b-4323-b2da-0706b8a17cf8", + "traceId": "db5203e53d1d4d6ba0967824f82c26b0", + "evidence": "count=200", + "checkedAt": "2026-08-08T05:32:12.414Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询可用计费渠道", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/first-leg/pricing/channels?originWarehouseId=193000000000200001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "26f7cf06-aa72-4c77-9916-57410a63e972, 6a79c119-0103-418d-8cf7-a8f8ca3bc7e3", + "traceId": "2474997d09a44d2b9d7254211a1bb7c0", + "evidence": "", + "checkedAt": "2026-08-08T05:32:12.451Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在带计价税制的可用渠道", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/first-leg/pricing/channels?originWarehouseId=193000000000200001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "26f7cf06-aa72-4c77-9916-57410a63e972, 6a79c119-0103-418d-8cf7-a8f8ca3bc7e3", + "traceId": "2474997d09a44d2b9d7254211a1bb7c0", + "evidence": "count=15", + "checkedAt": "2026-08-08T05:32:12.452Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询发货客户候选", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/partners/candidates?type=SHIPPER" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "fa20084f-edb6-4717-8851-0ef856467038, b960cdd9-53b5-4036-bd58-b1372aa6875d", + "traceId": "458f1cc21e044e478e67e5c35100024b", + "evidence": "", + "checkedAt": "2026-08-08T05:32:12.479Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 上传产品图片", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/files/product-images" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "da9c1a55-54ed-49a7-a642-e8d5acc0b8b4, cdd95590-9502-4558-bb93-72aebdaf9cdf", + "traceId": "e3ec979b308c478197a27f9d643ab39c", + "evidence": "contentType=image/png", + "checkedAt": "2026-08-08T05:32:12.505Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "产品图片上传返回字符串文件 ID", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/files/product-images" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "da9c1a55-54ed-49a7-a642-e8d5acc0b8b4, cdd95590-9502-4558-bb93-72aebdaf9cdf", + "traceId": "e3ec979b308c478197a27f9d643ab39c", + "evidence": "fileIdType=string, contentType=image/png", + "checkedAt": "2026-08-08T05:32:12.505Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 可下载本轮产品图片", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/files/product-images/2085962255703801858" + }, + "http": 200, + "code": null, + "message": null, + "requestId": "576874b7-d772-403d-8071-89316d489fb8, 0f89d3ef-ea28-4b60-b903-e36fb42c1bf2", + "traceId": "ada2e4f2b78740e78bcaa438e0aa2619", + "evidence": "bytes=68, contentType=image/png", + "checkedAt": "2026-08-08T05:32:12.540Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 创建四箱型隔离订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d5529d34-0728-4f9c-8095-85aa7a47c4fa, f9a4c2b9-50ca-478e-a3bd-989c5965f769", + "traceId": "04ea32b2158a455f9273b4655132f739", + "evidence": "marker=ADMIN-API-20260808053150342-MOJIA", + "checkedAt": "2026-08-08T05:32:12.605Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 创建订单幂等重放", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8b626b05-4c51-4e5a-bd3a-a405b49c4e5e, b3443ae0-992b-491d-b162-0148dd405848", + "traceId": "1006f1eaa6814b44a7d807714fca28d1", + "evidence": "", + "checkedAt": "2026-08-08T05:32:12.638Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 创建幂等结果一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8b626b05-4c51-4e5a-bd3a-a405b49c4e5e, b3443ae0-992b-491d-b162-0148dd405848", + "traceId": "1006f1eaa6814b44a7d807714fca28d1", + "evidence": "orderId=2085962256093872130, replayedId=2085962256093872130", + "checkedAt": "2026-08-08T05:32:12.638Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询隔离订单草稿", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085962256093872130" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8824879b-3420-42df-ba01-9c73167a24e0, d03e0ab9-8548-419f-8d67-73cee7576eb3", + "traceId": "1d608115585d4a3faba12e10be32afd9", + "evidence": "", + "checkedAt": "2026-08-08T05:32:12.663Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 草稿身份、marker 和状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085962256093872130" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8824879b-3420-42df-ba01-9c73167a24e0, d03e0ab9-8548-419f-8d67-73cee7576eb3", + "traceId": "1d608115585d4a3faba12e10be32afd9", + "evidence": "orderNo=FL2085962256093872130, status=DRAFT", + "checkedAt": "2026-08-08T05:32:12.663Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "四箱型产品字段及图片契约完整回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085962256093872130" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8824879b-3420-42df-ba01-9c73167a24e0, d03e0ab9-8548-419f-8d67-73cee7576eb3", + "traceId": "1d608115585d4a3faba12e10be32afd9", + "evidence": "cargoes=4, imageFileId=2085962255703801858", + "checkedAt": "2026-08-08T05:32:12.663Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 提交隔离订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg/2085962256093872130/submit" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0b3077d4-7af4-49fd-b4b6-9ba0cc607da1, bd929421-ed23-4b65-82a5-5f5ba5a37721", + "traceId": "60e2389372b1447db32765b64ff8c557", + "evidence": "orderId=2085962256093872130", + "checkedAt": "2026-08-08T05:32:12.716Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 回查已提交订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085962256093872130" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4014dc44-cdda-4afa-8223-13696fc014a2, 396e5fc7-8ffd-4342-be73-9465d14da74e", + "traceId": "9c816cbbaad84c68b475ccf5e2b07806", + "evidence": "", + "checkedAt": "2026-08-08T05:32:12.744Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 订单已进入待审核状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085962256093872130" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4014dc44-cdda-4afa-8223-13696fc014a2, 396e5fc7-8ffd-4342-be73-9465d14da74e", + "traceId": "9c816cbbaad84c68b475ccf5e2b07806", + "evidence": "status=SUBMITTED", + "checkedAt": "2026-08-08T05:32:12.744Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询统一订单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders?page=1&size=100&tenantId=10001&orderNo=FL2085962256093872130" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f1b6b92c-a1ef-4214-ae0a-59fe3e102137, a39f9c83-5e63-4f00-a049-2b8b57531673", + "traceId": "d048ff8e90a6432bb0ba0c4beae9fd44", + "evidence": "", + "checkedAt": "2026-08-08T05:32:12.787Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 统一订单列表只核对本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders?page=1&size=100&tenantId=10001&orderNo=FL2085962256093872130" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f1b6b92c-a1ef-4214-ae0a-59fe3e102137, a39f9c83-5e63-4f00-a049-2b8b57531673", + "traceId": "d048ff8e90a6432bb0ba0c4beae9fd44", + "evidence": "orderId=2085962256093872130, found=true", + "checkedAt": "2026-08-08T05:32:12.787Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询统一订单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085962256093872130?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "615edd98-2d79-4f1d-b394-b64bdc4db57f, eea229ce-86ed-4c32-b2ff-ef456fe80767", + "traceId": "130f5b50e30f4e658091253ace5cb06c", + "evidence": "", + "checkedAt": "2026-08-08T05:32:12.810Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 统一订单详情身份与待审核状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085962256093872130?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "615edd98-2d79-4f1d-b394-b64bdc4db57f, eea229ce-86ed-4c32-b2ff-ef456fe80767", + "traceId": "130f5b50e30f4e658091253ace5cb06c", + "evidence": "mainStatus=PENDING_REVIEW, timeline=2", + "checkedAt": "2026-08-08T05:32:12.810Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询头程订单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg?tenantId=10001&keyword=FL2085962256093872130&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "519cd9e7-7353-4a8b-9719-fa5f07a78eb4, cfc04f1b-65ca-4c0a-b9bb-4907adeb4df5", + "traceId": "9e6f46502b5846628c4adc554af36585", + "evidence": "", + "checkedAt": "2026-08-08T05:32:12.835Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 头程订单列表只核对本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg?tenantId=10001&keyword=FL2085962256093872130&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "519cd9e7-7353-4a8b-9719-fa5f07a78eb4, cfc04f1b-65ca-4c0a-b9bb-4907adeb4df5", + "traceId": "9e6f46502b5846628c4adc554af36585", + "evidence": "orderId=2085962256093872130, found=true", + "checkedAt": "2026-08-08T05:32:12.835Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询头程订单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085962256093872130?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "971ecd51-1d19-445a-b8f1-bb73863ec5a5, ec7847c0-4e2e-4740-ae62-9fcbac6884cc", + "traceId": "7687bd7d95c34524b8010c8a841f4c6f", + "evidence": "", + "checkedAt": "2026-08-08T05:32:12.868Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 头程订单详情聚合结构完整", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085962256093872130?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "971ecd51-1d19-445a-b8f1-bb73863ec5a5, ec7847c0-4e2e-4740-ae62-9fcbac6884cc", + "traceId": "7687bd7d95c34524b8010c8a841f4c6f", + "evidence": "cargoes=4, history=2", + "checkedAt": "2026-08-08T05:32:12.868Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "四箱型产品字段及图片契约完整回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085962256093872130?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "971ecd51-1d19-445a-b8f1-bb73863ec5a5, ec7847c0-4e2e-4740-ae62-9fcbac6884cc", + "traceId": "7687bd7d95c34524b8010c8a841f4c6f", + "evidence": "cargoes=4, imageFileId=2085962255703801858", + "checkedAt": "2026-08-08T05:32:12.868Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 为本轮订单添加内部备注", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085962256093872130/internal-notes?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5a464b09-bfd0-4577-a1e6-80db230f70a9, 64c0235d-77d9-40b3-99f8-1290659bf07c", + "traceId": "acd47e0dfbfe47c68834f81892948b83", + "evidence": "", + "checkedAt": "2026-08-08T05:32:12.905Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 审核通过本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085962256093872130/approve?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "cbf84bf3-d673-44f6-847a-d74f22dbed59, 95914bac-8580-4350-b8f5-ded111ff1962", + "traceId": "a45d017c725f48bdb96b019a138ad2cf", + "evidence": "orderId=2085962256093872130", + "checkedAt": "2026-08-08T05:32:12.940Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "审核后生成隔离入库单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085962256093872130?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "48cd57cf-9c05-4a21-9e50-44ff3fc730fe, 03ae61f6-452f-41ec-a8cf-f9f1e4d5034b", + "traceId": "cc2241a4307d497ba0921ffa7d23f2dc", + "evidence": "inboundId=2085962261359800323", + "checkedAt": "2026-08-08T05:32:14.044Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询本轮入库单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085962261359800323?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "60489a0d-27c9-476d-8b56-b5588cdd8d66, 2250394f-eb2d-497c-a5b5-8b6feddfc640", + "traceId": "12aecb6b608d41b387881ba9ff2b282c", + "evidence": "inboundId=2085962261359800323", + "checkedAt": "2026-08-08T05:32:14.078Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "隔离入库单 marker 来源与可测量状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085962261359800323?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "60489a0d-27c9-476d-8b56-b5588cdd8d66, 2250394f-eb2d-497c-a5b5-8b6feddfc640", + "traceId": "12aecb6b608d41b387881ba9ff2b282c", + "evidence": "markerFound=true, status=WAIT_MEASURE", + "checkedAt": "2026-08-08T05:32:14.078Z" + }, + { + "module": "orders", + "scenario": null, + "name": "入库单详情包含托盘库位、文件、备注和状态历史", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085962261359800323?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "60489a0d-27c9-476d-8b56-b5588cdd8d66, 2250394f-eb2d-497c-a5b5-8b6feddfc640", + "traceId": "12aecb6b608d41b387881ba9ff2b282c", + "evidence": "inboundId=2085962261359800323, history=1", + "checkedAt": "2026-08-08T05:32:14.079Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询入库单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds?tenantId=10001&inboundCode=RK-2085962256093872130&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e0945c66-3f78-49f2-b4a9-1b3f60d5ea15, 239f1531-b720-40b4-8511-b5d3a711a2b6", + "traceId": "0723569a6b6e4fada5f460d84e4974ac", + "evidence": "", + "checkedAt": "2026-08-08T05:32:14.111Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 入库单列表只核对本轮入库单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds?tenantId=10001&inboundCode=RK-2085962256093872130&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e0945c66-3f78-49f2-b4a9-1b3f60d5ea15, 239f1531-b720-40b4-8511-b5d3a711a2b6", + "traceId": "0723569a6b6e4fada5f460d84e4974ac", + "evidence": "inboundId=2085962261359800323, total=1", + "checkedAt": "2026-08-08T05:32:14.111Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询本轮订单履约任务", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/by-order/2085962256093872130?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9459c350-7a68-4500-8b0b-26f8dba49305, 96283913-5b69-446b-9953-910b52c069d0", + "traceId": "906a6ac5ea5b4d67964ec08fa3c1f207", + "evidence": "新订单应生成可查询的履约任务", + "checkedAt": "2026-08-08T05:32:14.139Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "履约任务与本轮订单和客户一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/by-order/2085962256093872130?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9459c350-7a68-4500-8b0b-26f8dba49305, 96283913-5b69-446b-9953-910b52c069d0", + "traceId": "906a6ac5ea5b4d67964ec08fa3c1f207", + "evidence": "taskId=2085962261359800322, status=PENDING_ASSIGNMENT", + "checkedAt": "2026-08-08T05:32:14.139Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询本轮履约任务分配历史", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/2085962261359800322/assignment-history?tenantId=10001&page=1&size=20" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "dbf6c903-ebe5-4f88-b975-11d16a602beb, e7f33598-2000-49d8-9f98-81129f975ab7", + "traceId": "0081e686123241c3a054dff8da3360f8", + "evidence": "", + "checkedAt": "2026-08-08T05:32:14.172Z" + }, + { + "module": "orders", + "scenario": null, + "name": "履约分配历史分页结构正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/2085962261359800322/assignment-history?tenantId=10001&page=1&size=20" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "dbf6c903-ebe5-4f88-b975-11d16a602beb, e7f33598-2000-49d8-9f98-81129f975ab7", + "traceId": "0081e686123241c3a054dff8da3360f8", + "evidence": "taskId=2085962261359800322, total=0", + "checkedAt": "2026-08-08T05:32:14.172Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 受理本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085962256093872130/accept?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5095325a-06e5-4b68-9465-9b53c5a6b04a, ffa1644b-2b93-428b-bd96-9fc27d4079dc", + "traceId": "4d75bb8f93b142fdb5fa3047b79e55d5", + "evidence": "", + "checkedAt": "2026-08-08T05:32:14.207Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 启动本轮订单履约", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085962256093872130/start?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6ea2b7da-0cb3-44ba-82d7-cce125859957, ebcdff4c-f887-4f26-b4fe-23ae7ea00101", + "traceId": "3606b1819f1e4a908db626f2a78ae1c8", + "evidence": "", + "checkedAt": "2026-08-08T05:32:14.239Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 回查本轮订单履约状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085962256093872130?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c45f0bc4-da07-4b3d-95fe-0136ae02b6d9, b4169f5b-3437-428b-8b48-35c45ab26a96", + "traceId": "61612fe81cd54b108242c125a7b40526", + "evidence": "", + "checkedAt": "2026-08-08T05:32:14.263Z" + }, + { + "module": "orders", + "scenario": null, + "name": "本轮订单已进入处理中且保留状态历史", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085962256093872130?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c45f0bc4-da07-4b3d-95fe-0136ae02b6d9, b4169f5b-3437-428b-8b48-35c45ab26a96", + "traceId": "61612fe81cd54b108242c125a7b40526", + "evidence": "status=PROCESSING, history=5", + "checkedAt": "2026-08-08T05:32:14.263Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "查询隔离入库单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085962261359800323?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b365c12d-c286-48f3-880c-4028d88ebaff, 10204fb8-b1be-45bf-bc35-9a16632bbf27", + "traceId": "3a7ad95683b44df78434fffdd69a7baf", + "evidence": "inboundId=2085962261359800323, tenantId=10001", + "checkedAt": "2026-08-08T05:32:14.291Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "隔离入库单身份与可测量状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085962261359800323?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b365c12d-c286-48f3-880c-4028d88ebaff, 10204fb8-b1be-45bf-bc35-9a16632bbf27", + "traceId": "3a7ad95683b44df78434fffdd69a7baf", + "evidence": "identity=true, status=WAIT_MEASURE", + "checkedAt": "2026-08-08T05:32:14.291Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "生成箱唛 PDF 并冻结稳定箱码", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/inbounds/2085962261359800323/carton-label-pdf?tenantId=10001" + }, + "http": 200, + "code": null, + "message": "13904 bytes (application/pdf)", + "requestId": "51cf6981-c35d-4cc8-8509-feb7d702842c, 83075559-93cc-4cb9-b926-d3dcc2f5f782, bd9e96ef-74a9-4eb6-95f7-e86e5d4b06d3", + "traceId": "90c42ea412d84789aada051ffc0902a4, b8b8142f2cc54b5ab5ecb006c0568db6", + "evidence": "contentType=application/pdf, bytes=13904", + "checkedAt": "2026-08-08T05:32:14.413Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "首次打印后回查冻结箱数", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085962261359800323?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "dafe637c-8c4e-4bcc-9d29-018d81684cf5, 3718ec01-215b-4ee7-b535-6fa629a6ca3b", + "traceId": "9f247efc8b3b45658c77d4319478fd37", + "evidence": "", + "checkedAt": "2026-08-08T05:32:14.454Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "首次打印按订单货物冻结原始总箱数", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085962261359800323?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "dafe637c-8c4e-4bcc-9d29-018d81684cf5, 3718ec01-215b-4ee7-b535-6fa629a6ca3b", + "traceId": "9f247efc8b3b45658c77d4319478fd37", + "evidence": "inboundCodeStable=true, totalPackageCount=4", + "checkedAt": "2026-08-08T05:32:14.454Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "重复整单打印复用已冻结箱码映射", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/inbounds/2085962261359800323/carton-label-pdf?tenantId=10001" + }, + "http": 200, + "code": null, + "message": "13904 bytes (application/pdf)", + "requestId": "0bff624c-6427-4d1c-9c1d-4b3ad02aaa6f, 8e8586e0-b7a2-4b66-bcff-a9dd118867e3, ecbca51c-65d2-4d5d-921c-ebb639964c99", + "traceId": "12108afc1a104a71b6936ccf05e65fc8, bd821a79bb614128b2c6b3c565442fbc", + "evidence": "boxCode=RK-2085962256093872130#4-1, contentType=application/pdf, bytes=13904", + "checkedAt": "2026-08-08T05:32:14.576Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "指定第1箱补打复用已冻结箱码映射", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/inbounds/2085962261359800323/carton-label-pdf?tenantId=10001&cartonIndex=1" + }, + "http": 200, + "code": null, + "message": "7738 bytes (application/pdf)", + "requestId": "7d188880-48ec-4c91-a00d-3a803e27820e, 128b6a79-3f88-4e8e-acd2-1b1756d41e9f, e23b4037-1c8d-4c02-b0e6-036ef0840bd9", + "traceId": "e923af40d21d4f828857fb4c62f09972, cf560d1a11704d3fa3f3f60c31f8418c", + "evidence": "boxCode=RK-2085962256093872130#4-1, cartonIndex=1, contentType=application/pdf, bytes=7738", + "checkedAt": "2026-08-08T05:32:14.688Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "模拟墨家首次扫描单箱", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085962261359800323/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c8cdaf6d-37de-4b50-a121-0dd2eb28b256, 46c6354c-e91d-464e-a1f4-0d7df4b956f6", + "traceId": "748c23610457471cb8d257333d521f4f", + "evidence": "boxCode=RK-2085962256093872130#4-1, machineNo=MJ-ADMIN-E2E-01", + "checkedAt": "2026-08-08T05:32:14.752Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "首次扫描新增一条且默认代表1箱", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085962261359800323/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c8cdaf6d-37de-4b50-a121-0dd2eb28b256, 46c6354c-e91d-464e-a1f4-0d7df4b956f6", + "traceId": "748c23610457471cb8d257333d521f4f", + "evidence": "created=true, confirmedPackageCount=1", + "checkedAt": "2026-08-08T05:32:14.752Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "重复打印及指定箱补打后原箱码仍可解析", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085962261359800323/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c8cdaf6d-37de-4b50-a121-0dd2eb28b256, 46c6354c-e91d-464e-a1f4-0d7df4b956f6", + "traceId": "748c23610457471cb8d257333d521f4f", + "evidence": "boxCodeStable=true, resolvedInboundId=2085962261359800323", + "checkedAt": "2026-08-08T05:32:14.752Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "查询箱级测量详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085962261359800323/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5d32e97d-c974-4ad5-b90f-8968fc1f040a, 13e77d59-359d-4fd3-9a38-c5a3d9e39212", + "traceId": "cb0a9157d5b84d6ba6ffb55ffde984d2", + "evidence": "measurementId=2085962265117896705", + "checkedAt": "2026-08-08T05:32:14.795Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "箱级查询回显箱码、尺寸、图片与设备信息", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085962261359800323/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5d32e97d-c974-4ad5-b90f-8968fc1f040a, 13e77d59-359d-4fd3-9a38-c5a3d9e39212", + "traceId": "cb0a9157d5b84d6ba6ffb55ffde984d2", + "evidence": "itemFound=true, imageFileId=2085962265082265601", + "checkedAt": "2026-08-08T05:32:14.795Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "人工确认当前测量代表箱数", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/inbounds/2085962261359800323/measurement/items/2085962265117896706/confirmed-package-count?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9151a368-99aa-42ba-96f4-0f3e41808961, 622ec8c2-584b-45ca-8605-e705b7a98a65", + "traceId": "fbdab751e6f242e8acdfab3a09cb9df9", + "evidence": "confirmedPackageCount=4", + "checkedAt": "2026-08-08T05:32:14.829Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "人工箱数更新且测量版本递增", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/inbounds/2085962261359800323/measurement/items/2085962265117896706/confirmed-package-count?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9151a368-99aa-42ba-96f4-0f3e41808961, 622ec8c2-584b-45ca-8605-e705b7a98a65", + "traceId": "fbdab751e6f242e8acdfab3a09cb9df9", + "evidence": "version=2", + "checkedAt": "2026-08-08T05:32:14.829Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "同箱号重新扫描覆盖当前记录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085962261359800323/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "40b33f13-9c57-41a3-b548-5ff26b5d5d5a, d3ebeef0-02ae-4b1e-9daa-c67afe464d62", + "traceId": "cd260a616c3b4667975b1a1656b465e7", + "evidence": "boxCode=RK-2085962256093872130#4-1, machineNo=MJ-ADMIN-E2E-02", + "checkedAt": "2026-08-08T05:32:14.885Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "覆盖保留同一条记录和人工箱数", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085962261359800323/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "40b33f13-9c57-41a3-b548-5ff26b5d5d5a, d3ebeef0-02ae-4b1e-9daa-c67afe464d62", + "traceId": "cd260a616c3b4667975b1a1656b465e7", + "evidence": "sameItem=true, confirmedPackageCount=4", + "checkedAt": "2026-08-08T05:32:14.885Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "回查覆盖后的尺寸与体积结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085962261359800323/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e3f403a6-ed64-4ba7-ada0-c25d48c2c847, 2c0e628e-84d8-4b69-be79-9222e5f3ca4b", + "traceId": "153bc86752b54cacb380e2df619c46d5", + "evidence": "", + "checkedAt": "2026-08-08T05:32:14.914Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "覆盖尺寸、箱数和服务端体积公式正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085962261359800323/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e3f403a6-ed64-4ba7-ada0-c25d48c2c847, 2c0e628e-84d8-4b69-be79-9222e5f3ca4b", + "traceId": "153bc86752b54cacb380e2df619c46d5", + "evidence": "weightedOuter=64x54x54, unitVolume=0.187, totalVolume=0.748, volumeWeight=124.916, girth=204.5", + "checkedAt": "2026-08-08T05:32:14.915Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "保存同一测量批次草稿", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/inbounds/2085962261359800323/measurement/draft?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7b18718a-170a-40fd-8922-44a2967659b2, 43a08359-8653-4ba0-8900-f3477aa2e294", + "traceId": "a8b48c0c9b6e463a94fb675fe6e3b8cd", + "evidence": "measurementId=2085962265117896705, items=1", + "checkedAt": "2026-08-08T05:32:14.963Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "草稿沿用批次并递增版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/inbounds/2085962261359800323/measurement/draft?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7b18718a-170a-40fd-8922-44a2967659b2, 43a08359-8653-4ba0-8900-f3477aa2e294", + "traceId": "a8b48c0c9b6e463a94fb675fe6e3b8cd", + "evidence": "status=DRAFT, version=4", + "checkedAt": "2026-08-08T05:32:14.963Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "提交测量审核", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085962261359800323/measurement/submit?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c66d9f79-5a1a-4405-b072-f586589dfcb6, 72c06613-f64e-4590-8a52-03c325c33f96", + "traceId": "297bfd41321d403999386196ab6f8bdc", + "evidence": "measurementId=2085962265117896705", + "checkedAt": "2026-08-08T05:32:15.003Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "提交后进入待测量审核状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085962261359800323/measurement/submit?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c66d9f79-5a1a-4405-b072-f586589dfcb6, 72c06613-f64e-4590-8a52-03c325c33f96", + "traceId": "297bfd41321d403999386196ab6f8bdc", + "evidence": "processStatus=MEASURE_PENDING, reviewStatus=PENDING", + "checkedAt": "2026-08-08T05:32:15.003Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "测量提交后拒绝设备覆盖并返回中文提示", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085962261359800323/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "A0409", + "message": "测量已提交,设备不能新增或覆盖数据", + "requestId": "985504e6-2b45-40e6-aee9-695be17962c5", + "traceId": "4771b5bb98b643d1980b4bf6f21e1794", + "evidence": "HTTP=200, code=A0409, chineseMessage=true", + "checkedAt": "2026-08-08T05:32:15.031Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "审核前读取最新入库单版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085962261359800323?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b328dc1b-04cf-41ac-865d-74e126b13364, d21d914b-92ff-4a1c-baaa-10b6e6eea835", + "traceId": "06a3f9b3a9464b7187070a373972b58f", + "evidence": "", + "checkedAt": "2026-08-08T05:32:15.055Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "审核前状态和版本有效", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085962261359800323?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b328dc1b-04cf-41ac-865d-74e126b13364, d21d914b-92ff-4a1c-baaa-10b6e6eea835", + "traceId": "06a3f9b3a9464b7187070a373972b58f", + "evidence": "status=MEASURE_PENDING, version=1", + "checkedAt": "2026-08-08T05:32:15.055Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "Admin 审核通过墨家测量", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/inbounds/2085962261359800323/measurements/approve?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5718e280-0623-419f-a859-3b6a61da18d8, e8c82d3b-e979-4c29-b76a-d5bfa83021a1", + "traceId": "4cee1eabe5a24380b835af103b248ba5", + "evidence": "measurementId=2085962265117896705", + "checkedAt": "2026-08-08T05:32:15.095Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "查询审核后的最终测量状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085962261359800323/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6a543f37-bba8-45e1-bd2c-1be975dddfb9, ec3fd19c-d4a3-4ac8-a277-b7d3914c5272", + "traceId": "b89a3a876cc440fa902d5668e10acd75", + "evidence": "", + "checkedAt": "2026-08-08T05:32:15.117Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "审核后入库与测量状态闭环且结果未变化", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085962261359800323/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6a543f37-bba8-45e1-bd2c-1be975dddfb9, ec3fd19c-d4a3-4ac8-a277-b7d3914c5272", + "traceId": "b89a3a876cc440fa902d5668e10acd75", + "evidence": "processStatus=INBOUNDED, measurementStatus=APPROVED, packages=4", + "checkedAt": "2026-08-08T05:32:15.117Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "order-service 状态响应使用统一成功体", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "42c4a9d8-7f88-4404-b2a4-ac0c3f9d9c2d, a4f66481-c180-42b5-9274-1334efd919c6", + "traceId": "f99b69cd4a11493aa963fe4fab532d82", + "evidence": "HTTP=200, code=200", + "checkedAt": "2026-08-08T05:32:15.145Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "order-service 状态字段完整且 readiness 语义明确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "42c4a9d8-7f88-4404-b2a4-ac0c3f9d9c2d, a4f66481-c180-42b5-9274-1334efd919c6", + "traceId": "f99b69cd4a11493aa963fe4fab532d82", + "evidence": "service=order-service, status=UP, readiness=UP", + "checkedAt": "2026-08-08T05:32:15.145Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "firstleg-service 状态响应使用统一成功体", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8bebabd9-07c5-43f7-899b-989aec0f7b26, a4706d89-2bd8-40ea-a43c-b5a2a653c81c", + "traceId": "de6ad9d9f72443de88d32327fe2de2f3", + "evidence": "HTTP=200, code=200", + "checkedAt": "2026-08-08T05:32:15.178Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "firstleg-service 状态字段完整且 readiness 语义明确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8bebabd9-07c5-43f7-899b-989aec0f7b26, a4706d89-2bd8-40ea-a43c-b5a2a653c81c", + "traceId": "de6ad9d9f72443de88d32327fe2de2f3", + "evidence": "service=firstleg-service, status=UP, readiness=UP", + "checkedAt": "2026-08-08T05:32:15.178Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "file-service 状态响应使用统一成功体", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b2b9280d-891b-48dd-a123-1c556326cf57, 553c2518-f6d9-4245-80e2-d7f87a50b9b5", + "traceId": "a2a87d50830e4257bc0f4c68af102cb7", + "evidence": "HTTP=200, code=200", + "checkedAt": "2026-08-08T05:32:15.206Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "file-service 状态字段完整且 readiness 语义明确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b2b9280d-891b-48dd-a123-1c556326cf57, 553c2518-f6d9-4245-80e2-d7f87a50b9b5", + "traceId": "a2a87d50830e4257bc0f4c68af102cb7", + "evidence": "service=file-service, status=UP, readiness=UP", + "checkedAt": "2026-08-08T05:32:15.206Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "warehouse-service 状态响应使用统一成功体", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouses/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c5f9dc6c-8c7a-47ba-b00d-d0c2e9ba717b, f85661e8-255a-498f-90a2-bd2ce982ab77", + "traceId": "466ae8ea7d244c638a1105cbf1b67ae7", + "evidence": "HTTP=200, code=200", + "checkedAt": "2026-08-08T05:32:15.241Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "warehouse-service 状态字段完整且 readiness 语义明确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouses/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c5f9dc6c-8c7a-47ba-b00d-d0c2e9ba717b, f85661e8-255a-498f-90a2-bd2ce982ab77", + "traceId": "466ae8ea7d244c638a1105cbf1b67ae7", + "evidence": "service=warehouse-service, status=UP, readiness=UP", + "checkedAt": "2026-08-08T05:32:15.241Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "平台接口未携带令牌返回 401", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/status" + }, + "http": 401, + "code": "A0401", + "message": "未登录或令牌已失效", + "requestId": "c106c29d-1599", + "traceId": null, + "evidence": "HTTP=401, code=A0401", + "checkedAt": "2026-08-08T05:32:15.265Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "平台接口伪造令牌返回 401", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/status" + }, + "http": 401, + "code": "A0401", + "message": "未登录或令牌已失效", + "requestId": "29aa0ecb-1600", + "traceId": null, + "evidence": "HTTP=401, code=A0401", + "checkedAt": "2026-08-08T05:32:15.278Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "未认证请求不返回业务成功码", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/status" + }, + "http": 401, + "code": "A0401", + "message": "未登录或令牌已失效", + "requestId": "c106c29d-1601", + "traceId": null, + "evidence": "HTTP=401, code=A0401", + "checkedAt": "2026-08-08T05:32:15.295Z" + }, + { + "module": "supplemental", + "scenario": "master-data-readonly", + "name": "仓库分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=5&status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "891ff533-45e5-472f-8828-c4f5bb640a5b, f14ed2bb-ad37-4e35-8d64-e04c5c736ca2", + "traceId": "ce9c4b6c695147c3b2d47ad8a34892b0", + "evidence": "path=/api/platform/v1/warehouse-admin?page=1&size=5&status=ACTIVE", + "checkedAt": "2026-08-08T05:32:15.319Z" + }, + { + "module": "supplemental", + "scenario": "master-data-readonly", + "name": "仓库分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=5&status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "891ff533-45e5-472f-8828-c4f5bb640a5b, f14ed2bb-ad37-4e35-8d64-e04c5c736ca2", + "traceId": "ce9c4b6c695147c3b2d47ad8a34892b0", + "evidence": "records=5, current=1, size=5", + "checkedAt": "2026-08-08T05:32:15.319Z" + }, + { + "module": "supplemental", + "scenario": "master-data-readonly", + "name": "仓库筛选分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=5&tenantId=0&warehouseType=FBA" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "19238a6f-fbdf-4cc8-99ca-db73b08e22cb, 56204728-5217-4467-ae4c-48d57c47146d", + "traceId": "c8f29a42ebae471483cbf096f5a335e7", + "evidence": "path=/api/platform/v1/warehouse-admin?page=1&size=5&tenantId=0&warehouseType=FBA", + "checkedAt": "2026-08-08T05:32:15.351Z" + }, + { + "module": "supplemental", + "scenario": "master-data-readonly", + "name": "仓库筛选分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=5&tenantId=0&warehouseType=FBA" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "19238a6f-fbdf-4cc8-99ca-db73b08e22cb, 56204728-5217-4467-ae4c-48d57c47146d", + "traceId": "c8f29a42ebae471483cbf096f5a335e7", + "evidence": "records=5, current=1, size=5", + "checkedAt": "2026-08-08T05:32:15.351Z" + }, + { + "module": "supplemental", + "scenario": "master-data-readonly", + "name": "仓库非法状态安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=5&status=NOT_A_STATUS" + }, + "http": 200, + "code": "A0422", + "message": "status: must match \"ACTIVE|INACTIVE\"", + "requestId": "661b98ea-a7d5-4029-b55d-6eef743208d5", + "traceId": "210a1228a6eb414da3070cb5e3066cde", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T05:32:15.378Z" + }, + { + "module": "supplemental", + "scenario": "master-data-readonly", + "name": "仓库客户作用域安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=5&tenantId=10001" + }, + "http": 200, + "code": "A0400", + "message": "Platform resource scope must be 0 / 平台公共资源作用域必须为0", + "requestId": "a640cfc6-29fc-4df3-8c00-01a8073fe63c", + "traceId": "4632cd3fb661424bb8119aaa67b9c462", + "evidence": "HTTP=200, code=A0400", + "checkedAt": "2026-08-08T05:32:15.411Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "库位分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations?page=1&size=5&tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4d60ee3a-6473-4c44-aeda-58609408fa85, d827f106-129c-47f0-b829-6eb1dd65b32a", + "traceId": "3be4d8389b174d808b9186bea12684f3", + "evidence": "path=/api/platform/v1/locations?page=1&size=5&tenantId=0", + "checkedAt": "2026-08-08T05:32:15.441Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "库位分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations?page=1&size=5&tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4d60ee3a-6473-4c44-aeda-58609408fa85, d827f106-129c-47f0-b829-6eb1dd65b32a", + "traceId": "3be4d8389b174d808b9186bea12684f3", + "evidence": "records=3, current=1, size=5", + "checkedAt": "2026-08-08T05:32:15.441Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "托盘分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets?page=1&size=5&tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d566b58c-2743-468f-8b19-b76e619c4d18, e7da4ade-61ad-4677-80ea-b9229c06c437", + "traceId": "9d1a5d1027bd4636b14ee1de6f828f8d", + "evidence": "path=/api/platform/v1/pallets?page=1&size=5&tenantId=0", + "checkedAt": "2026-08-08T05:32:15.463Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "托盘分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets?page=1&size=5&tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d566b58c-2743-468f-8b19-b76e619c4d18, e7da4ade-61ad-4677-80ea-b9229c06c437", + "traceId": "9d1a5d1027bd4636b14ee1de6f828f8d", + "evidence": "records=3, current=1, size=5", + "checkedAt": "2026-08-08T05:32:15.463Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "库位仓库筛选分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations?page=1&size=5&tenantId=0&warehouseId=193000000000000001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1812a5eb-7d4d-42a0-8583-74f36a49ce1e, bc14ff6f-a3c7-4243-80c2-10bbe917d782", + "traceId": "553490f105594a0da2cfa963145a04fd", + "evidence": "path=/api/platform/v1/locations?page=1&size=5&tenantId=0&warehouseId=193000000000000001", + "checkedAt": "2026-08-08T05:32:15.486Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "库位仓库筛选分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations?page=1&size=5&tenantId=0&warehouseId=193000000000000001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1812a5eb-7d4d-42a0-8583-74f36a49ce1e, bc14ff6f-a3c7-4243-80c2-10bbe917d782", + "traceId": "553490f105594a0da2cfa963145a04fd", + "evidence": "records=0, current=1, size=5", + "checkedAt": "2026-08-08T05:32:15.486Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "托盘仓库筛选分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets?page=1&size=5&tenantId=0&warehouseId=193000000000000001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0504b596-93b8-4a2f-9b8a-0b12496d04ff, 05468254-4985-4e46-b490-26e31c5e12e7", + "traceId": "8be6237dc1ce4c7b94a2cce89bc12880", + "evidence": "path=/api/platform/v1/pallets?page=1&size=5&tenantId=0&warehouseId=193000000000000001", + "checkedAt": "2026-08-08T05:32:15.518Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "托盘仓库筛选分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets?page=1&size=5&tenantId=0&warehouseId=193000000000000001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0504b596-93b8-4a2f-9b8a-0b12496d04ff, 05468254-4985-4e46-b490-26e31c5e12e7", + "traceId": "8be6237dc1ce4c7b94a2cce89bc12880", + "evidence": "records=0, current=1, size=5", + "checkedAt": "2026-08-08T05:32:15.518Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "库位客户作用域安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations?page=1&size=5&tenantId=10001" + }, + "http": 200, + "code": "A0400", + "message": "平台公共资源作用域必须为0", + "requestId": "9ef37c37-092e-441b-bfb7-872ccb25b0ad", + "traceId": "ccfeca5e9123452d85287a9931437750", + "evidence": "HTTP=200, code=A0400", + "checkedAt": "2026-08-08T05:32:15.549Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "托盘客户作用域安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets?page=1&size=5&tenantId=10001" + }, + "http": 200, + "code": "A0400", + "message": "平台公共资源作用域必须为0", + "requestId": "8f22de2d-c83c-439b-902e-a626fac2eb07", + "traceId": "fc31026a835645feb8b60729ab93e811", + "evidence": "HTTP=200, code=A0400", + "checkedAt": "2026-08-08T05:32:15.578Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "库位非法状态安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations?page=1&size=5&tenantId=0&status=ALLOCATED" + }, + "http": 200, + "code": "A0422", + "message": "status: must match \"^(AVAILABLE|RESERVED|OCCUPIED|DISABLED)$\"", + "requestId": "191797d2-ab6f-4fdf-aae7-eae4ad95fa22", + "traceId": "b45599f3d09842869f74f92b046223ef", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T05:32:15.608Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "库位过期版本/不存在资源不泄露或误修改数据", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations/999999999999?tenantId=0&warehouseId=999999999999" + }, + "http": 200, + "code": "A0404", + "message": "库位不存在或超出当前企业仓库数据范围", + "requestId": "498f959e-dd44-4ba9-99d2-7b630cfd22d3", + "traceId": "feea9ef3480847b0a38c4682cb6a778a", + "evidence": "HTTP=200, code=A0404", + "checkedAt": "2026-08-08T05:32:15.641Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "托盘占用资源保护边界不泄露或误修改数据", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets/999999999999?tenantId=0&warehouseId=999999999999" + }, + "http": 200, + "code": "A0404", + "message": "托盘不存在或不属于当前租户和仓库", + "requestId": "d346d939-704f-4860-a404-858fc2a4fbf5", + "traceId": "e5c4c519c9084b468397febabb33fc19", + "evidence": "HTTP=200, code=A0404", + "checkedAt": "2026-08-08T05:32:15.670Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "快递公司分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "325ceb84-44ce-4452-9abc-b16a7f55f280, 8b126753-5ae2-4a07-ac46-196400ed3c6b", + "traceId": "dd70a76cc42f49a4b45dc5c2314eebbc", + "evidence": "path=/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=ACTIVE", + "checkedAt": "2026-08-08T05:32:15.697Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "快递公司分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "325ceb84-44ce-4452-9abc-b16a7f55f280, 8b126753-5ae2-4a07-ac46-196400ed3c6b", + "traceId": "dd70a76cc42f49a4b45dc5c2314eebbc", + "evidence": "records=4, current=1, size=5", + "checkedAt": "2026-08-08T05:32:15.697Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "快递公司停用筛选分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=INACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5754d302-1f97-4c31-b6e2-61d023d3eca3, 7e9656a6-dd47-4d96-b816-dbdbbc24e92e", + "traceId": "c7a7cb6946374c9fa2d1b0461e3e4296", + "evidence": "path=/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=INACTIVE", + "checkedAt": "2026-08-08T05:32:15.733Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "快递公司停用筛选分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=INACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5754d302-1f97-4c31-b6e2-61d023d3eca3, 7e9656a6-dd47-4d96-b816-dbdbbc24e92e", + "traceId": "c7a7cb6946374c9fa2d1b0461e3e4296", + "evidence": "records=5, current=1, size=5", + "checkedAt": "2026-08-08T05:32:15.733Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "快递公司状态枚举过滤不混入其他状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=INACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5754d302-1f97-4c31-b6e2-61d023d3eca3, 7e9656a6-dd47-4d96-b816-dbdbbc24e92e", + "traceId": "c7a7cb6946374c9fa2d1b0461e3e4296", + "evidence": "records=5", + "checkedAt": "2026-08-08T05:32:15.733Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "快递公司无效筛选参数安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=UNKNOWN" + }, + "http": 200, + "code": "A0422", + "message": "status: must match \"^(ACTIVE|INACTIVE)$\"", + "requestId": "9330af60-fe2a-4047-9162-cd5bb7920a25", + "traceId": "a7966472d9d34ba2bebfd42bf22a19de", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T05:32:15.761Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "往来单位分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners?page=1&size=5&tenantId=0&status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2dd70191-2233-493e-8793-af4e1c477852, d96194f2-6007-48af-a648-31b94da8ab71", + "traceId": "c5d23ed33a5e477082c1587bc964a97f", + "evidence": "path=/api/platform/v1/partners?page=1&size=5&tenantId=0&status=ACTIVE", + "checkedAt": "2026-08-08T05:32:15.796Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "往来单位分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners?page=1&size=5&tenantId=0&status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2dd70191-2233-493e-8793-af4e1c477852, d96194f2-6007-48af-a648-31b94da8ab71", + "traceId": "c5d23ed33a5e477082c1587bc964a97f", + "evidence": "records=5, current=1, size=5", + "checkedAt": "2026-08-08T05:32:15.796Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "往来单位停用筛选分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners?page=1&size=5&tenantId=0&status=INACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ea68894f-02f5-495f-b2f6-db2772088553, b53d7571-fdc9-4fa9-bb2e-d3bfbc220e07", + "traceId": "f33c5ee5f0884b36bc1f9a6c44efe7d9", + "evidence": "path=/api/platform/v1/partners?page=1&size=5&tenantId=0&status=INACTIVE", + "checkedAt": "2026-08-08T05:32:15.827Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "往来单位停用筛选分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners?page=1&size=5&tenantId=0&status=INACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ea68894f-02f5-495f-b2f6-db2772088553, b53d7571-fdc9-4fa9-bb2e-d3bfbc220e07", + "traceId": "f33c5ee5f0884b36bc1f9a6c44efe7d9", + "evidence": "records=5, current=1, size=5", + "checkedAt": "2026-08-08T05:32:15.827Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "往来单位状态枚举过滤不混入其他状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners?page=1&size=5&tenantId=0&status=INACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ea68894f-02f5-495f-b2f6-db2772088553, b53d7571-fdc9-4fa9-bb2e-d3bfbc220e07", + "traceId": "f33c5ee5f0884b36bc1f9a6c44efe7d9", + "evidence": "records=5", + "checkedAt": "2026-08-08T05:32:15.827Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "往来单位无效筛选参数安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners?page=1&size=5&tenantId=0&types=UNKNOWN_TYPE" + }, + "http": 200, + "code": "A0422", + "message": "types[0]: must match \"^(CUSTOMER|SUPPLIER|CARRIER|CUSTOMS_BROKER|SHIPPER|CONSIGNEE)$\"", + "requestId": "90b4ed65-227e-4820-a681-5f4177e9c040", + "traceId": "9a06a2856e124c9e810fcef72291040d", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T05:32:15.853Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "仓库导入模板为 XLSX 且不记录二进制", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin/import-template" + }, + "http": 200, + "code": null, + "message": "3853 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "e353085b-33bb-4ffc-bd15-6bae58fed01d, 8038130d-a379-41ae-91ae-8e612b504039", + "traceId": "a12be41657ff4f0a9420a5e78ea25e23", + "evidence": "HTTP=200, bytes=3853, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "checkedAt": "2026-08-08T05:32:15.895Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "快递公司导入模板为 XLSX 且不记录二进制", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies/import-template" + }, + "http": 200, + "code": null, + "message": "3692 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "c5c265b7-3d07-4c25-af09-68d17a267853, 232a1e09-2539-4291-b014-6f4582df0b39", + "traceId": "4466fa5d7dc442c0a7e8beb02d20f7d6", + "evidence": "HTTP=200, bytes=3692, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "checkedAt": "2026-08-08T05:32:15.951Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "往来单位导入模板为 XLSX 且不记录二进制", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners/import-template" + }, + "http": 200, + "code": null, + "message": "3830 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "5cad70ee-9c54-4f0a-a6a7-0dc85dfcdb0c, 0d411780-af53-4518-9960-631c62410f7b", + "traceId": "b54de2cec52e470dbc45ba9498439f5f", + "evidence": "HTTP=200, bytes=3830, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "checkedAt": "2026-08-08T05:32:15.993Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "船期价格表 PENDING_CONFIRMATION 状态过滤", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books?status=PENDING_CONFIRMATION" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "04d7055c-57c1-46ce-a35b-83484cefa790, c1d99f50-9570-4f4a-a110-6eee6682bd53", + "traceId": "040192455cc74b488bea688394221fbd", + "evidence": "count=1", + "checkedAt": "2026-08-08T05:32:16.025Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "船期价格表 PENDING_CONFIRMATION 结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books?status=PENDING_CONFIRMATION" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "04d7055c-57c1-46ce-a35b-83484cefa790, c1d99f50-9570-4f4a-a110-6eee6682bd53", + "traceId": "040192455cc74b488bea688394221fbd", + "evidence": "count=1", + "checkedAt": "2026-08-08T05:32:16.025Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "船期价格表 ACTIVE 状态过滤", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books?status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2dc11186-c9d8-465c-b404-d8925c861c58, 2a68533d-eac1-410d-9f10-99124fca46e4", + "traceId": "0c2411aa8c664d989b5705057e006115", + "evidence": "count=1", + "checkedAt": "2026-08-08T05:32:16.054Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "船期价格表 ACTIVE 结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books?status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2dc11186-c9d8-465c-b404-d8925c861c58, 2a68533d-eac1-410d-9f10-99124fca46e4", + "traceId": "0c2411aa8c664d989b5705057e006115", + "evidence": "count=1", + "checkedAt": "2026-08-08T05:32:16.055Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "船期价格表 SUPERSEDED 状态过滤", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books?status=SUPERSEDED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e87744c3-795a-4e78-bc73-20db5d35feba, 877a3e3f-3c54-4eb8-a146-ebde552d5542", + "traceId": "712afc30477c41068cd43e772ac55781", + "evidence": "count=9", + "checkedAt": "2026-08-08T05:32:16.084Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "船期价格表 SUPERSEDED 结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books?status=SUPERSEDED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e87744c3-795a-4e78-bc73-20db5d35feba, 877a3e3f-3c54-4eb8-a146-ebde552d5542", + "traceId": "712afc30477c41068cd43e772ac55781", + "evidence": "count=9", + "checkedAt": "2026-08-08T05:32:16.084Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "读取现有生效价格版本用于下载安全检查", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books?status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "18d46c1f-495a-4867-8d70-0ef26ae7cf7f, 5db78f54-ea3f-4208-bb52-8b2a5cea96d8", + "traceId": "16d18bec20f244c481cb5961374e3891", + "evidence": "", + "checkedAt": "2026-08-08T05:32:16.116Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "现有生效价格源文件下载为 XLSX", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books/2085962204229185537/source" + }, + "http": 200, + "code": null, + "message": "1343413 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "dc533d7d-1d33-496d-8c96-5ffb0c06b1c9, 5cd13ea0-4523-4451-8621-9979104fd1a6, ca62f453-b4a1-4dd2-b41a-4a6c4d8857ea", + "traceId": "5a846134e28c4d2d95400c54a52b3912, 625e588723c4472ea0d9691cb18313bf", + "evidence": "versionId=2085962204229185537, bytes=1343413, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "checkedAt": "2026-08-08T05:32:16.215Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 PENDING 状态分页", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=PENDING" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "56c74307-9ea3-46cf-892b-05ce3e5d41b4, 8efdb3be-7a77-4424-8ecc-5967cf6317eb", + "traceId": "24b37013f6924c4391fe74ae1fbb17d0", + "evidence": "", + "checkedAt": "2026-08-08T05:32:16.239Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 PENDING 过滤结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=PENDING" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "56c74307-9ea3-46cf-892b-05ce3e5d41b4, 8efdb3be-7a77-4424-8ecc-5967cf6317eb", + "traceId": "24b37013f6924c4391fe74ae1fbb17d0", + "evidence": "records=0", + "checkedAt": "2026-08-08T05:32:16.239Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 RUNNING 状态分页", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=RUNNING" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "daa9a021-13e4-4212-a0b2-64d802086d87, e08feb01-3d21-4481-87cc-39deee86a9a9", + "traceId": "b11aee0725884a18843b74a40e2e3648", + "evidence": "", + "checkedAt": "2026-08-08T05:32:16.273Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 RUNNING 过滤结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=RUNNING" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "daa9a021-13e4-4212-a0b2-64d802086d87, e08feb01-3d21-4481-87cc-39deee86a9a9", + "traceId": "b11aee0725884a18843b74a40e2e3648", + "evidence": "records=0", + "checkedAt": "2026-08-08T05:32:16.273Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 SUCCEEDED 状态分页", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=SUCCEEDED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "aaa44486-78bf-4b3b-8d1d-96341d2f90b0, 475f980b-703a-4a75-b960-a7f6ae72c493", + "traceId": "9e9f3d33daec4630bf317a1bc7cabc74", + "evidence": "", + "checkedAt": "2026-08-08T05:32:16.308Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 SUCCEEDED 过滤结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=SUCCEEDED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "aaa44486-78bf-4b3b-8d1d-96341d2f90b0, 475f980b-703a-4a75-b960-a7f6ae72c493", + "traceId": "9e9f3d33daec4630bf317a1bc7cabc74", + "evidence": "records=5", + "checkedAt": "2026-08-08T05:32:16.308Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 FAILED 状态分页", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=FAILED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "740ddbae-76b7-4c7f-bde7-f14c2eb8ea41, 1cc17a10-4d6d-4e7d-a5c6-3f98b44d82fd", + "traceId": "bebd862b768c40dc814871ed97b472df", + "evidence": "", + "checkedAt": "2026-08-08T05:32:16.334Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 FAILED 过滤结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=FAILED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "740ddbae-76b7-4c7f-bde7-f14c2eb8ea41, 1cc17a10-4d6d-4e7d-a5c6-3f98b44d82fd", + "traceId": "bebd862b768c40dc814871ed97b472df", + "evidence": "records=0", + "checkedAt": "2026-08-08T05:32:16.335Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 EXPIRED 状态分页", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=EXPIRED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b0a54a12-38ec-4946-b6af-c7b5f7dec56c, eee7f926-3ca2-4107-a55a-526c51727134", + "traceId": "2593c2a4bf3e4d95b0d0231f615d60e4", + "evidence": "", + "checkedAt": "2026-08-08T05:32:16.367Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 EXPIRED 过滤结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=EXPIRED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b0a54a12-38ec-4946-b6af-c7b5f7dec56c, eee7f926-3ca2-4107-a55a-526c51727134", + "traceId": "2593c2a4bf3e4d95b0d0231f615d60e4", + "evidence": "records=0", + "checkedAt": "2026-08-08T05:32:16.367Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "不存在下载任务详情安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks/999999999999" + }, + "http": 200, + "code": "A0404", + "message": "导出任务不存在", + "requestId": "9296f8a3-7bb6-44c5-b16a-7c2944a3027e", + "traceId": "6755efccbc4c4bac9eec60bc1fb8613a", + "evidence": "HTTP=200, code=A0404", + "checkedAt": "2026-08-08T05:32:16.393Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "不存在下载任务文件安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks/999999999999/download" + }, + "http": 200, + "code": "A0404", + "message": "导出任务不存在", + "requestId": "b3e3a153-5ddc-42c2-8747-d41f1513ac49", + "traceId": "7128bd58082c4284b25445074cbbc58e", + "evidence": "HTTP=200, code=A0404", + "checkedAt": "2026-08-08T05:32:16.426Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "未授权下载请求被拒绝", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks/999999999999/download" + }, + "http": 401, + "code": "A0401", + "message": "未登录或令牌已失效", + "requestId": "29aa0ecb-1636", + "traceId": null, + "evidence": "HTTP=401, code=A0401", + "checkedAt": "2026-08-08T05:32:16.451Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "平台用户只读列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/users?page=1&size=5" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3b745558-f155-4561-9bdf-63514374c4b0, 274ef787-be9b-48c3-803b-b6688f688f67", + "traceId": "88bff5abcb874815bbd2f53d532516cc", + "evidence": "", + "checkedAt": "2026-08-08T05:32:16.504Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "平台用户列表结构正确且包含内置保护标识", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/users?page=1&size=5" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3b745558-f155-4561-9bdf-63514374c4b0, 274ef787-be9b-48c3-803b-b6688f688f67", + "traceId": "88bff5abcb874815bbd2f53d532516cc", + "evidence": "records=5, builtInField=protectedAccount", + "checkedAt": "2026-08-08T05:32:16.504Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "平台角色只读列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/roles" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b599efb2-b702-44ee-95b5-068222f4acf1, 4a87bcb5-7389-4346-94eb-3bca98ee88e9", + "traceId": "d0c87fae2bd043969fed0bf957c0d594", + "evidence": "", + "checkedAt": "2026-08-08T05:32:16.545Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "平台角色列表结构正确且包含内置保护标识", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/roles" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b599efb2-b702-44ee-95b5-068222f4acf1, 4a87bcb5-7389-4346-94eb-3bca98ee88e9", + "traceId": "d0c87fae2bd043969fed0bf957c0d594", + "evidence": "records=14, builtInField=roleType", + "checkedAt": "2026-08-08T05:32:16.545Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "菜单权限只读列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/permissions" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5a51f268-aaa3-401c-8ab0-5660eb5cbafc, bf9af5e9-74a7-454a-b2fb-ce4c7c789a96", + "traceId": "5a36aa6659a04eac807017b71cf3d98b", + "evidence": "", + "checkedAt": "2026-08-08T05:32:16.595Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "菜单权限列表结构正确且包含内置保护标识", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/permissions" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5a51f268-aaa3-401c-8ab0-5660eb5cbafc, bf9af5e9-74a7-454a-b2fb-ce4c7c789a96", + "traceId": "5a36aa6659a04eac807017b71cf3d98b", + "evidence": "records=136, builtInField=builtIn", + "checkedAt": "2026-08-08T05:32:16.595Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "角色列表伪造令牌拒绝访问", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/roles" + }, + "http": 401, + "code": "A0401", + "message": "未登录或令牌已失效", + "requestId": "29aa0ecb-1640", + "traceId": null, + "evidence": "HTTP=401, code=A0401", + "checkedAt": "2026-08-08T05:32:16.609Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "菜单权限未携带令牌拒绝访问", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/permissions" + }, + "http": 401, + "code": "A0401", + "message": "未登录或令牌已失效", + "requestId": "c106c29d-1641", + "traceId": null, + "evidence": "HTTP=401, code=A0401", + "checkedAt": "2026-08-08T05:32:16.636Z" + } + ] +} diff --git a/reports/admin-test-env-acceptance-overseas-fees.json b/reports/admin-test-env-acceptance-overseas-fees.json new file mode 100644 index 000000000..5bb5a21bc --- /dev/null +++ b/reports/admin-test-env-acceptance-overseas-fees.json @@ -0,0 +1,7761 @@ +{ + "reportName": "后台管理测试环境 HTTP API 验收", + "marker": "ADMIN-API-20260808053015762", + "gateway": "http://8.163.30.128:9000", + "generatedAt": "2026-08-08T05:30:44.461Z", + "startedAt": "2026-08-08T05:30:15.762Z", + "success": false, + "fatal": null, + "summary": { + "total": 415, + "passed": 413, + "failed": 2 + }, + "modules": [ + { + "name": "customers", + "startedAt": "2026-08-08T05:30:16.136Z", + "finishedAt": "2026-08-08T05:30:17.081Z", + "success": true, + "passed": 38, + "failed": 0, + "fatal": null + }, + { + "name": "overseas-storage-fees", + "startedAt": "2026-08-08T05:30:17.082Z", + "finishedAt": "2026-08-08T05:30:17.642Z", + "success": false, + "passed": 5, + "failed": 2, + "fatal": null + }, + { + "name": "system", + "startedAt": "2026-08-08T05:30:17.643Z", + "finishedAt": "2026-08-08T05:30:20.086Z", + "success": true, + "passed": 41, + "failed": 0, + "fatal": null + }, + { + "name": "master-data", + "startedAt": "2026-08-08T05:30:20.087Z", + "finishedAt": "2026-08-08T05:30:21.173Z", + "success": true, + "passed": 42, + "failed": 0, + "fatal": null + }, + { + "name": "orders", + "startedAt": "2026-08-08T05:30:21.176Z", + "finishedAt": "2026-08-08T05:30:23.567Z", + "success": true, + "passed": 49, + "failed": 0, + "fatal": null + }, + { + "name": "pricing", + "startedAt": "2026-08-08T05:30:23.570Z", + "finishedAt": "2026-08-08T05:30:27.897Z", + "success": true, + "passed": 26, + "failed": 0, + "fatal": null + }, + { + "name": "downloads", + "startedAt": "2026-08-08T05:30:27.898Z", + "finishedAt": "2026-08-08T05:30:32.132Z", + "success": true, + "passed": 8, + "failed": 0, + "fatal": null + }, + { + "name": "inbound-weight-ocr", + "startedAt": "2026-08-08T05:30:32.135Z", + "finishedAt": "2026-08-08T05:30:37.584Z", + "success": true, + "passed": 52, + "failed": 0, + "fatal": null + }, + { + "name": "orders-inbound-measurement-fixture", + "startedAt": "2026-08-08T05:30:37.584Z", + "finishedAt": "2026-08-08T05:30:42.003Z", + "success": true, + "passed": 49, + "failed": 0, + "fatal": null + }, + { + "name": "inbound-measurement", + "startedAt": "2026-08-08T05:30:42.004Z", + "finishedAt": "2026-08-08T05:30:42.899Z", + "success": true, + "passed": 28, + "failed": 0, + "fatal": null + }, + { + "name": "supplemental", + "startedAt": "2026-08-08T05:30:42.900Z", + "finishedAt": "2026-08-08T05:30:44.461Z", + "success": true, + "passed": 74, + "failed": 0, + "fatal": null + } + ], + "scenarios": [ + { + "name": "customer-dimension-rules", + "module": "customers", + "success": true, + "deploymentBlocked": false, + "passed": 13, + "failed": 0 + }, + { + "name": "price-book-lifecycle", + "module": "pricing", + "success": true, + "deploymentBlocked": false, + "passed": 26, + "failed": 0 + }, + { + "name": "weight-image-recognition-and-confirmation", + "module": "inbound-weight-ocr", + "success": true, + "deploymentBlocked": false, + "passed": 52, + "failed": 0 + }, + { + "name": "mojia-carton-measurement", + "module": "inbound-measurement", + "success": true, + "deploymentBlocked": false, + "passed": 28, + "failed": 0 + } + ], + "deploymentBlockers": [ + { + "module": "overseas-storage-fees", + "scenario": "customer-overseas-storage-fee-lifecycle", + "name": "查询客户海外仓费用配置", + "evidence": "tenantId=2085961767913639938", + "code": "S0500", + "requestId": "9347f34a-2107-4dc3-9b30-3f98565a784d", + "traceId": "415966117e4940bc8f8a4004f91e6d33" + }, + { + "module": "overseas-storage-fees", + "scenario": "customer-overseas-storage-fee-lifecycle", + "name": "查询新隔离客户海外仓费用配置", + "evidence": "tenantId=2085961771998892033", + "code": "S0500", + "requestId": "64be1bbf-c017-40ca-9af9-7a40cbc8f97e", + "traceId": "439105660f3247ecacb072943cf112f0" + } + ], + "createdResources": { + "customer": { + "tenantId": "2085961767913639938", + "marker": "ADMIN-API-20260808053015762", + "contactPhone": "16167016137" + }, + "overseasStorageFeeCustomer": { + "tenantId": "2085961771998892033", + "marker": "ADMIN-API-20260808053015762", + "ownedByModule": true + }, + "systemPermission": { + "id": "2085961774280593410", + "code": "platform:acceptance:808053015762" + }, + "systemRole": { + "id": "2085961774804881409", + "code": "ADMIN_ACCEPT_808053015762", + "finalStatus": "DISABLED", + "retainedBecauseAssigned": true + }, + "systemUser": { + "membershipId": "2085961775853457412", + "username": "admin_accept_808053015762", + "finalStatus": "DISABLED" + }, + "warehouse": { + "id": "2085961784562335745", + "code": "AW808053015762", + "finalStatus": "INACTIVE" + }, + "location": { + "id": "2085961785191481346", + "warehouseId": "2085961784562335745", + "deleted": false + }, + "pallet": { + "id": "2085961786063896577", + "warehouseId": "2085961784562335745", + "deleted": true + }, + "expressCompany": { + "id": "2085961786722402305", + "code": "EX808053015762", + "finalStatus": "INACTIVE" + }, + "partner": { + "id": "2085961787439628289", + "code": "PT808053015762", + "finalStatus": "INACTIVE" + }, + "orders": { + "marker": "ADMIN-API-20260808053015762", + "tenantId": "10001", + "orderId": "2085961791918637057", + "productImageFileId": "2085961791524372481", + "boxTypes": [ + "SMALL", + "MEDIUM", + "LARGE", + "EXTRA_LARGE" + ], + "inboundId": "2085961795368431617", + "orderNo": "FL2085961791918637057", + "inboundCode": "RK-2085961791918637057", + "processStatus": "WAIT_MEASURE", + "taskId": "2085961795364237314" + }, + "ocrInbound": { + "tenantId": "10001", + "inboundId": "2085961795368431617", + "marker": "ADMIN-API-20260808053015762" + }, + "testInbound": { + "tenantId": "10001", + "inboundId": "2085961795368431617", + "marker": "ADMIN-API-20260808053015762" + }, + "priceBookVersion": { + "versionId": "2085961800552591362", + "marker": "ADMIN-API-20260808053015762", + "sourceSha256": "3170fd3aa8795cd816ca9600f87a6a2a06b15d0cf6042d4592f33d4b30c7b8ab" + }, + "exportTask": { + "id": "2085961817059295234" + }, + "inboundWeightOcr": { + "tenantId": "10001", + "inboundId": "2085961795368431617", + "resultIds": [ + "2085961847025479681", + "2085961855799963650" + ], + "cleaned": true + }, + "orchestrationFixtures": { + "inboundMeasurement": { + "marker": "ADMIN-API-20260808053015762-MOJIA", + "tenantId": "10001", + "orderId": "2085961860365484033", + "inboundId": "2085961870979149826" + } + }, + "inboundMeasurement": { + "marker": "ADMIN-API-20260808053015762-MOJIA", + "tenantId": "10001", + "inboundId": "2085961870979149826", + "measurementId": "2085961878092689409", + "boxCode": "RK-2085961860365484033#4-1", + "finalStatus": "APPROVED" + } + }, + "excluded": [ + { + "scope": "dashboard", + "reason": "首页为静态演示数据,不调用后端 API" + }, + { + "scope": "hidden-prototypes", + "reason": "隐藏原型页面尚无已确认后端契约" + } + ], + "securityNote": "报告不保存登录密码、Access Token、Refresh Token、图片二进制或 OCR 原文全文。", + "steps": [ + { + "module": "authentication", + "scenario": null, + "name": "平台管理员登录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/auth/login" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4a852633-01c8-4970-a62b-df587a2f10bf, 9195d592-921f-45e6-ac78-ebf0aaac49d2", + "traceId": "4acc8ae4b55a413ba404ce9b2abc0cb2", + "evidence": "", + "checkedAt": "2026-08-08T05:30:16.136Z" + }, + { + "module": "customers", + "scenario": null, + "name": "检查测试联系电话可用性", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/contact-phone-availability?contactPhone=16167016137" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8e8a2779-4219-4825-a3f1-962a1043e7be, 2affebb1-39e9-44cf-a540-5b2f3d1e18b2", + "traceId": "429d50b2cd3c4dcfbd22554737888536", + "evidence": "attempt=1", + "checkedAt": "2026-08-08T05:30:16.178Z" + }, + { + "module": "customers", + "scenario": null, + "name": "创建客户", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7df43a8a-abcf-4cb1-bea4-ad9782bc1d7a, e6d80d6a-c8d0-4f08-b52b-1e54ebc16bb5", + "traceId": "9d582697cee540e093769938a303b531", + "evidence": "", + "checkedAt": "2026-08-08T05:30:16.545Z" + }, + { + "module": "customers", + "scenario": null, + "name": "创建响应客户字段完整", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7df43a8a-abcf-4cb1-bea4-ad9782bc1d7a, e6d80d6a-c8d0-4f08-b52b-1e54ebc16bb5", + "traceId": "9d582697cee540e093769938a303b531", + "evidence": "missing=none", + "checkedAt": "2026-08-08T05:30:16.545Z" + }, + { + "module": "customers", + "scenario": null, + "name": "新客户基础字段正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7df43a8a-abcf-4cb1-bea4-ad9782bc1d7a, e6d80d6a-c8d0-4f08-b52b-1e54ebc16bb5", + "traceId": "9d582697cee540e093769938a303b531", + "evidence": "tenantId=2085961767913639938, status=PROFILE_REQUIRED", + "checkedAt": "2026-08-08T05:30:16.545Z" + }, + { + "module": "customers", + "scenario": "customer-owner-provisioning", + "name": "创建客户生成初始密码", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7df43a8a-abcf-4cb1-bea4-ad9782bc1d7a, e6d80d6a-c8d0-4f08-b52b-1e54ebc16bb5", + "traceId": "9d582697cee540e093769938a303b531", + "evidence": "generated=true, length=16", + "checkedAt": "2026-08-08T05:30:16.545Z" + }, + { + "module": "customers", + "scenario": "customer-owner-provisioning", + "name": "管理员用户名默认使用联系电话", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7df43a8a-abcf-4cb1-bea4-ad9782bc1d7a, e6d80d6a-c8d0-4f08-b52b-1e54ebc16bb5", + "traceId": "9d582697cee540e093769938a303b531", + "evidence": "matches=true", + "checkedAt": "2026-08-08T05:30:16.545Z" + }, + { + "module": "customers", + "scenario": null, + "name": "待完善客户的审核字段保持为空", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7df43a8a-abcf-4cb1-bea4-ad9782bc1d7a, e6d80d6a-c8d0-4f08-b52b-1e54ebc16bb5", + "traceId": "9d582697cee540e093769938a303b531", + "evidence": "creditCode=omitted, approvedAt=omitted", + "checkedAt": "2026-08-08T05:30:16.545Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "新客户尺寸规则可查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085961767913639938" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "25c10358-645c-4f21-94cd-4c8f43930fbf, 15f87667-43d0-4aea-9dac-4dbc52a1a4a1", + "traceId": "59aafee0b1b2411bb002ecc8cda89594", + "evidence": "tenantId=2085961767913639938", + "checkedAt": "2026-08-08T05:30:16.570Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "固定四箱规顺序完整且无重复", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085961767913639938" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "25c10358-645c-4f21-94cd-4c8f43930fbf, 15f87667-43d0-4aea-9dac-4dbc52a1a4a1", + "traceId": "59aafee0b1b2411bb002ecc8cda89594", + "evidence": "count=4, order=SMALL,MEDIUM,LARGE,EXTRA_LARGE", + "checkedAt": "2026-08-08T05:30:16.570Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "四箱规默认内径、加边和备注正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085961767913639938" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "25c10358-645c-4f21-94cd-4c8f43930fbf, 15f87667-43d0-4aea-9dac-4dbc52a1a4a1", + "traceId": "59aafee0b1b2411bb002ecc8cda89594", + "evidence": "defaults=matched", + "checkedAt": "2026-08-08T05:30:16.570Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "客户 ID、规则 ID 为字符串且初始版本为0", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085961767913639938" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "25c10358-645c-4f21-94cd-4c8f43930fbf, 15f87667-43d0-4aea-9dac-4dbc52a1a4a1", + "traceId": "59aafee0b1b2411bb002ecc8cda89594", + "evidence": "groupTenantIdType=string, rows=string/v0,string/v0,string/v0,string/v0", + "checkedAt": "2026-08-08T05:30:16.570Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "默认规则外径与 HALF_UP 三位 CBM 正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085961767913639938" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "25c10358-645c-4f21-94cd-4c8f43930fbf, 15f87667-43d0-4aea-9dac-4dbc52a1a4a1", + "traceId": "59aafee0b1b2411bb002ecc8cda89594", + "evidence": "derivedRows=4", + "checkedAt": "2026-08-08T05:30:16.571Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "PUT 每行只发送约定7字段并整组保存", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085961767913639938" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "25c10358-645c-4f21-94cd-4c8f43930fbf, 15f87667-43d0-4aea-9dac-4dbc52a1a4a1", + "traceId": "59aafee0b1b2411bb002ecc8cda89594", + "evidence": "fields=boxType,innerLengthCm,innerWidthCm,innerHeightCm,edgeAdditionCm,remark,version", + "checkedAt": "2026-08-08T05:30:16.571Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "一次 PUT 保存四条三位小数规则", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085961767913639938" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "175ccba7-4136-4419-905d-c0fa221617dd, 6bc5d2d8-629f-4a63-a5cc-7452e8a241be", + "traceId": "e7a1933edad249db9bb41775d4cb7659", + "evidence": "rows=4", + "checkedAt": "2026-08-08T05:30:16.607Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "修改后四行版本+1且派生外径/CBM正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085961767913639938" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "175ccba7-4136-4419-905d-c0fa221617dd, 6bc5d2d8-629f-4a63-a5cc-7452e8a241be", + "traceId": "e7a1933edad249db9bb41775d4cb7659", + "evidence": "versions=1,1,1,1", + "checkedAt": "2026-08-08T05:30:16.608Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "旧 version 重放 PUT 返回冲突", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085961767913639938" + }, + "http": 200, + "code": "A0409", + "message": "箱规尺寸配置已被修改,请刷新后重试", + "requestId": "c262f5c3-89a2-4968-b158-22a222574769", + "traceId": "33a70431d46142a4ad3ccf857582641a", + "evidence": "HTTP=200, code=A0409", + "checkedAt": "2026-08-08T05:30:16.633Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "冲突后重新查询四条规则", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085961767913639938" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "82917b00-698c-48d2-82cb-7739680787a6, f6d3c4cf-c0a3-4d9c-8818-03e943ffb4fe", + "traceId": "147225db2c404581828b7a8870f8d355", + "evidence": "", + "checkedAt": "2026-08-08T05:30:16.660Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "冲突请求未造成四行部分更新", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085961767913639938" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "82917b00-698c-48d2-82cb-7739680787a6, f6d3c4cf-c0a3-4d9c-8818-03e943ffb4fe", + "traceId": "147225db2c404581828b7a8870f8d355", + "evidence": "unchangedRows=4", + "checkedAt": "2026-08-08T05:30:16.660Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "恢复本轮修改前的四箱规配置", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085961767913639938" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "bd50dc46-d6b8-4b04-8b90-6fc1318b1129, 86be71ae-7161-4c16-9672-0f25e9ad491c", + "traceId": "1aae7b320f3e45cda9e4c6ee445a1145", + "evidence": "restore=original-values", + "checkedAt": "2026-08-08T05:30:16.699Z" + }, + { + "module": "customers", + "scenario": "customer-dimension-rules", + "name": "尺寸规则恢复后回显与初始值一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=2085961767913639938" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "bd50dc46-d6b8-4b04-8b90-6fc1318b1129, 86be71ae-7161-4c16-9672-0f25e9ad491c", + "traceId": "1aae7b320f3e45cda9e4c6ee445a1145", + "evidence": "restoredRows=4", + "checkedAt": "2026-08-08T05:30:16.699Z" + }, + { + "module": "customers", + "scenario": null, + "name": "查询客户列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants?page=1&size=20&keyword=%E5%90%8E%E5%8F%B0%E5%AE%A2%E6%88%B7%E9%AA%8C%E6%94%B6-808053015762" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ad60bfa0-50f8-44d6-964b-63f420f7647b, d0c090a0-ed44-4184-a22f-7b16cf6f1702", + "traceId": "f8c439a8836c4a0682864e16ed90f8d3", + "evidence": "", + "checkedAt": "2026-08-08T05:30:16.731Z" + }, + { + "module": "customers", + "scenario": null, + "name": "列表包含新客户且字段完整", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants?page=1&size=20&keyword=%E5%90%8E%E5%8F%B0%E5%AE%A2%E6%88%B7%E9%AA%8C%E6%94%B6-808053015762" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ad60bfa0-50f8-44d6-964b-63f420f7647b, d0c090a0-ed44-4184-a22f-7b16cf6f1702", + "traceId": "f8c439a8836c4a0682864e16ed90f8d3", + "evidence": "found=true, missing=none", + "checkedAt": "2026-08-08T05:30:16.731Z" + }, + { + "module": "customers", + "scenario": null, + "name": "查询客户详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085961767913639938" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1af8adc5-0d46-4bf5-99a1-704b09cf6ec5, 24c1e4e6-33a6-47ee-8c88-dfd67eb13f4b", + "traceId": "69c77439289f48a1bd48dada57890bbf", + "evidence": "", + "checkedAt": "2026-08-08T05:30:16.754Z" + }, + { + "module": "customers", + "scenario": null, + "name": "客户详情基本信息正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085961767913639938" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1af8adc5-0d46-4bf5-99a1-704b09cf6ec5, 24c1e4e6-33a6-47ee-8c88-dfd67eb13f4b", + "traceId": "69c77439289f48a1bd48dada57890bbf", + "evidence": "tenantId=2085961767913639938", + "checkedAt": "2026-08-08T05:30:16.754Z" + }, + { + "module": "customers", + "scenario": null, + "name": "编辑客户", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/tenants/2085961767913639938" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "56ab9b9e-1902-488e-8cf8-c53d3052735e, f90042b7-4307-4f9e-acf8-ad21f1450477", + "traceId": "3cc7df73bab9462ca7607c8cb8246e49", + "evidence": "", + "checkedAt": "2026-08-08T05:30:16.793Z" + }, + { + "module": "customers", + "scenario": null, + "name": "客户编辑正确回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/tenants/2085961767913639938" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "56ab9b9e-1902-488e-8cf8-c53d3052735e, f90042b7-4307-4f9e-acf8-ad21f1450477", + "traceId": "3cc7df73bab9462ca7607c8cb8246e49", + "evidence": "tenantId=2085961767913639938", + "checkedAt": "2026-08-08T05:30:16.793Z" + }, + { + "module": "customers", + "scenario": null, + "name": "回查客户编辑结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085961767913639938" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ec2a639c-0d5a-4f8c-ac0d-4b6e817aeb36, 8aa62454-debb-41e8-b8f4-ad23aa31b6ee", + "traceId": "b4cefaf31cdc48119ae2a29e53352dd4", + "evidence": "", + "checkedAt": "2026-08-08T05:30:16.830Z" + }, + { + "module": "customers", + "scenario": null, + "name": "客户编辑已持久化", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085961767913639938" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ec2a639c-0d5a-4f8c-ac0d-4b6e817aeb36, 8aa62454-debb-41e8-b8f4-ad23aa31b6ee", + "traceId": "b4cefaf31cdc48119ae2a29e53352dd4", + "evidence": "tenantId=2085961767913639938", + "checkedAt": "2026-08-08T05:30:16.830Z" + }, + { + "module": "customers", + "scenario": null, + "name": "业务概况查询资质", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085961767913639938/qualifications" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "aa4fa668-0004-4c04-bf67-cd1f9928ec3a, 525fe2fd-8e9f-4843-95b0-a503a0cbda9f", + "traceId": "7e3ee50b62fa480abbe09b12db9f3edd", + "evidence": "", + "checkedAt": "2026-08-08T05:30:16.862Z" + }, + { + "module": "customers", + "scenario": null, + "name": "资质概况结构正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085961767913639938/qualifications" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "aa4fa668-0004-4c04-bf67-cd1f9928ec3a, 525fe2fd-8e9f-4843-95b0-a503a0cbda9f", + "traceId": "7e3ee50b62fa480abbe09b12db9f3edd", + "evidence": "count=0", + "checkedAt": "2026-08-08T05:30:16.862Z" + }, + { + "module": "customers", + "scenario": null, + "name": "业务概况查询成员", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085961767913639938/members" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "53c1ba80-6f16-4f68-8a98-a213957c1bac, 1c2be0e2-ad7f-450a-a4b8-b12dcff93e4a", + "traceId": "78ad8de6776048f4b2d294db97d9cd2d", + "evidence": "", + "checkedAt": "2026-08-08T05:30:16.903Z" + }, + { + "module": "customers", + "scenario": "customer-owner-provisioning", + "name": "联系电话账号是企业管理员", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085961767913639938/members" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "53c1ba80-6f16-4f68-8a98-a213957c1bac, 1c2be0e2-ad7f-450a-a4b8-b12dcff93e4a", + "traceId": "78ad8de6776048f4b2d294db97d9cd2d", + "evidence": "ownerFound=true, matches=true", + "checkedAt": "2026-08-08T05:30:16.903Z" + }, + { + "module": "customers", + "scenario": null, + "name": "业务概况查询运单数量", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/tenant-counts?tenantIds=2085961767913639938" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "71137658-a0b9-415a-aace-da1736d228f6, faac44f1-ca72-4c47-8f45-92e7fdfbff86", + "traceId": "de6df922a93543668a0cff6df6f682f4", + "evidence": "", + "checkedAt": "2026-08-08T05:30:16.940Z" + }, + { + "module": "customers", + "scenario": null, + "name": "业务概况返回当前客户运单数", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/tenant-counts?tenantIds=2085961767913639938" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "71137658-a0b9-415a-aace-da1736d228f6, faac44f1-ca72-4c47-8f45-92e7fdfbff86", + "traceId": "de6df922a93543668a0cff6df6f682f4", + "evidence": "orderCount=0", + "checkedAt": "2026-08-08T05:30:16.941Z" + }, + { + "module": "customers", + "scenario": null, + "name": "查询客户运单记录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg?tenantId=2085961767913639938&page=1&size=10" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "79b01721-5d88-41fc-9422-606f3d3276de, d1cd2ab5-7d96-4f85-9c8e-c364eeffccc0", + "traceId": "a319c2eedac048a0b1ef22df86bee67f", + "evidence": "", + "checkedAt": "2026-08-08T05:30:16.971Z" + }, + { + "module": "customers", + "scenario": null, + "name": "运单记录分页结构正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg?tenantId=2085961767913639938&page=1&size=10" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "79b01721-5d88-41fc-9422-606f3d3276de, d1cd2ab5-7d96-4f85-9c8e-c364eeffccc0", + "traceId": "a319c2eedac048a0b1ef22df86bee67f", + "evidence": "records=0, total=0", + "checkedAt": "2026-08-08T05:30:16.971Z" + }, + { + "module": "customers", + "scenario": "customer-draft-archive", + "name": "归档测试客户", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants/2085961767913639938/archive" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a322ad21-484b-4568-bcc1-518a96a20113, 0623e627-c521-4c1d-84d1-894f008c3cd6", + "traceId": "44d7e6aa9bb74dbba9e354c827bd38d1", + "evidence": "tenantId=2085961767913639938", + "checkedAt": "2026-08-08T05:30:17.081Z" + }, + { + "module": "customers", + "scenario": "customer-draft-archive", + "name": "测试客户归档后处于停用状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants/2085961767913639938/archive" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a322ad21-484b-4568-bcc1-518a96a20113, 0623e627-c521-4c1d-84d1-894f008c3cd6", + "traceId": "44d7e6aa9bb74dbba9e354c827bd38d1", + "evidence": "status=DISABLED", + "checkedAt": "2026-08-08T05:30:17.081Z" + }, + { + "module": "overseas-storage-fees", + "scenario": "customer-overseas-storage-fee-lifecycle", + "name": "查询客户海外仓费用配置", + "passed": false, + "deploymentBlocker": true, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085961767913639938/overseas-storage-fees" + }, + "http": 200, + "code": "S0500", + "message": "Internal server error", + "requestId": "9347f34a-2107-4dc3-9b30-3f98565a784d", + "traceId": "415966117e4940bc8f8a4004f91e6d33", + "evidence": "tenantId=2085961767913639938", + "checkedAt": "2026-08-08T05:30:17.116Z" + }, + { + "module": "overseas-storage-fees", + "scenario": null, + "name": "检查测试联系电话可用性", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/contact-phone-availability?contactPhone=16167017117" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5fe0dfc9-4d11-48f0-ae3f-9a59fb108887, 18140f84-f719-4510-8875-133d09e35a83", + "traceId": "99f2dd6b1d2f405690ecce3218b16727", + "evidence": "attempt=1", + "checkedAt": "2026-08-08T05:30:17.149Z" + }, + { + "module": "overseas-storage-fees", + "scenario": "customer-overseas-storage-fee-lifecycle", + "name": "创建海外仓费用隔离客户", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d85a030c-7db4-4dd8-90ab-790837fd2807, bf41e923-cd2f-4138-ad2c-3ff2e8d7d306", + "traceId": "ce16fae3410344fca07945b0ff7d020b", + "evidence": "", + "checkedAt": "2026-08-08T05:30:17.511Z" + }, + { + "module": "overseas-storage-fees", + "scenario": "customer-overseas-storage-fee-lifecycle", + "name": "海外仓费用隔离客户创建并带 marker", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d85a030c-7db4-4dd8-90ab-790837fd2807, bf41e923-cd2f-4138-ad2c-3ff2e8d7d306", + "traceId": "ce16fae3410344fca07945b0ff7d020b", + "evidence": "tenantId=2085961771998892033", + "checkedAt": "2026-08-08T05:30:17.511Z" + }, + { + "module": "overseas-storage-fees", + "scenario": "customer-overseas-storage-fee-lifecycle", + "name": "查询新隔离客户海外仓费用配置", + "passed": false, + "deploymentBlocker": true, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/2085961771998892033/overseas-storage-fees" + }, + "http": 200, + "code": "S0500", + "message": "Internal server error", + "requestId": "64be1bbf-c017-40ca-9af9-7a40cbc8f97e", + "traceId": "439105660f3247ecacb072943cf112f0", + "evidence": "tenantId=2085961771998892033", + "checkedAt": "2026-08-08T05:30:17.535Z" + }, + { + "module": "overseas-storage-fees", + "scenario": "customer-overseas-storage-fee-lifecycle", + "name": "费用配置契约不可用时清理隔离客户", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants/2085961771998892033/archive" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b6dba100-e089-4377-a982-d42b900b93ad, 380460c7-f90b-4185-a38b-31268f4cb2f6", + "traceId": "b36032f3d42346a190bfdae19a53877f", + "evidence": "tenantId=2085961771998892033", + "checkedAt": "2026-08-08T05:30:17.642Z" + }, + { + "module": "overseas-storage-fees", + "scenario": "customer-overseas-storage-fee-lifecycle", + "name": "隔离客户清理后停用", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/tenants/2085961771998892033/archive" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b6dba100-e089-4377-a982-d42b900b93ad, 380460c7-f90b-4185-a38b-31268f4cb2f6", + "traceId": "b36032f3d42346a190bfdae19a53877f", + "evidence": "status=DISABLED", + "checkedAt": "2026-08-08T05:30:17.642Z" + }, + { + "module": "system", + "scenario": null, + "name": "查询菜单权限资源", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/permissions" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e564dfbd-8688-42bc-98b9-a913535b6a71, da6f38aa-0bb9-47ba-b2cd-57f34dbbc944", + "traceId": "659122c0c4de415d9be70b07e7ff9e0f", + "evidence": "", + "checkedAt": "2026-08-08T05:30:17.692Z" + }, + { + "module": "system", + "scenario": null, + "name": "权限资源返回数组", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/permissions" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e564dfbd-8688-42bc-98b9-a913535b6a71, da6f38aa-0bb9-47ba-b2cd-57f34dbbc944", + "traceId": "659122c0c4de415d9be70b07e7ff9e0f", + "evidence": "count=136", + "checkedAt": "2026-08-08T05:30:17.692Z" + }, + { + "module": "system", + "scenario": null, + "name": "创建自定义权限资源", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/permissions" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "34a7c847-2093-45d9-9148-1cf764537e60, 334cc12e-b7f7-4b0b-ab16-ad5a2edbd130", + "traceId": "81b8cbb420fe4cfdbf0d32aececd40c3", + "evidence": "", + "checkedAt": "2026-08-08T05:30:17.724Z" + }, + { + "module": "system", + "scenario": null, + "name": "权限创建字段正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/permissions" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "34a7c847-2093-45d9-9148-1cf764537e60, 334cc12e-b7f7-4b0b-ab16-ad5a2edbd130", + "traceId": "81b8cbb420fe4cfdbf0d32aececd40c3", + "evidence": "permissionId=2085961774280593410", + "checkedAt": "2026-08-08T05:30:17.724Z" + }, + { + "module": "system", + "scenario": null, + "name": "编辑自定义权限资源", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/permissions/2085961774280593410" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9cc3f2e3-823c-48ac-bc75-0daf4d457749, 638e739c-1b97-4562-a2ab-7da24fc23ed3", + "traceId": "354076efbc364c1daa5da4931649f86e", + "evidence": "", + "checkedAt": "2026-08-08T05:30:17.756Z" + }, + { + "module": "system", + "scenario": null, + "name": "权限编辑正确回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/permissions/2085961774280593410" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9cc3f2e3-823c-48ac-bc75-0daf4d457749, 638e739c-1b97-4562-a2ab-7da24fc23ed3", + "traceId": "354076efbc364c1daa5da4931649f86e", + "evidence": "permissionId=2085961774280593410", + "checkedAt": "2026-08-08T05:30:17.756Z" + }, + { + "module": "system", + "scenario": null, + "name": "停用自定义权限", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/permissions/2085961774280593410/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "162eeb48-fa97-4e79-8fcd-fcf2042fc0bf, bb8eea3b-c58c-4354-a668-3f59920c403e", + "traceId": "339bf8f1e4064d2eaac7e0ba3f9c3007", + "evidence": "", + "checkedAt": "2026-08-08T05:30:17.787Z" + }, + { + "module": "system", + "scenario": null, + "name": "权限状态回显 DISABLED", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/permissions/2085961774280593410/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "162eeb48-fa97-4e79-8fcd-fcf2042fc0bf, bb8eea3b-c58c-4354-a668-3f59920c403e", + "traceId": "339bf8f1e4064d2eaac7e0ba3f9c3007", + "evidence": "status=DISABLED", + "checkedAt": "2026-08-08T05:30:17.787Z" + }, + { + "module": "system", + "scenario": null, + "name": "启用自定义权限", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/permissions/2085961774280593410/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "437d4dff-b636-4777-95ae-785657c19c4a, e6cf5a5b-921a-4788-af58-eeb7a03fadeb", + "traceId": "e338ae0c72bc406f84e44bc4333cb1f4", + "evidence": "", + "checkedAt": "2026-08-08T05:30:17.811Z" + }, + { + "module": "system", + "scenario": null, + "name": "权限状态回显 ACTIVE", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/permissions/2085961774280593410/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "437d4dff-b636-4777-95ae-785657c19c4a, e6cf5a5b-921a-4788-af58-eeb7a03fadeb", + "traceId": "e338ae0c72bc406f84e44bc4333cb1f4", + "evidence": "status=ACTIVE", + "checkedAt": "2026-08-08T05:30:17.811Z" + }, + { + "module": "system", + "scenario": null, + "name": "创建平台自定义角色", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/roles" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9d55bc4d-a86d-4b3c-9060-0268ee275080, b635b97f-f152-41df-a48d-4c7cb9a5d973", + "traceId": "5cd1e208f1bc41e4a0b54fe07f8b4b82", + "evidence": "", + "checkedAt": "2026-08-08T05:30:17.849Z" + }, + { + "module": "system", + "scenario": null, + "name": "角色创建字段正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/roles" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9d55bc4d-a86d-4b3c-9060-0268ee275080, b635b97f-f152-41df-a48d-4c7cb9a5d973", + "traceId": "5cd1e208f1bc41e4a0b54fe07f8b4b82", + "evidence": "roleId=2085961774804881409", + "checkedAt": "2026-08-08T05:30:17.849Z" + }, + { + "module": "system", + "scenario": null, + "name": "编辑平台自定义角色", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/2085961774804881409" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b0f76462-1a2e-488f-864b-63e976acbcc0, 1f873821-a750-4758-80e3-c3ff3cce82b5", + "traceId": "4e1aea093b004bde979726a1dcdf9733", + "evidence": "", + "checkedAt": "2026-08-08T05:30:17.879Z" + }, + { + "module": "system", + "scenario": null, + "name": "角色编辑正确回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/2085961774804881409" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b0f76462-1a2e-488f-864b-63e976acbcc0, 1f873821-a750-4758-80e3-c3ff3cce82b5", + "traceId": "4e1aea093b004bde979726a1dcdf9733", + "evidence": "roleId=2085961774804881409", + "checkedAt": "2026-08-08T05:30:17.879Z" + }, + { + "module": "system", + "scenario": null, + "name": "角色全量保存权限", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/permissions" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d001bade-782a-4c17-a9d8-f50330d0e43c, 7d9d8476-55a1-41d9-9d48-725bae5f77c7", + "traceId": "82d8d1efb82e45adbf89daa5dc5d031f", + "evidence": "", + "checkedAt": "2026-08-08T05:30:17.914Z" + }, + { + "module": "system", + "scenario": null, + "name": "回查平台角色列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/roles" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9fc1b2bf-563f-406d-bafc-36a468599c4c, f880d1ba-b0f1-46b6-8413-2714f6c725e9", + "traceId": "b0d57a43e8ba4b8fa1d7e99d389b22d4", + "evidence": "", + "checkedAt": "2026-08-08T05:30:17.949Z" + }, + { + "module": "system", + "scenario": null, + "name": "角色权限 ID 正确回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/roles" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9fc1b2bf-563f-406d-bafc-36a468599c4c, f880d1ba-b0f1-46b6-8413-2714f6c725e9", + "traceId": "b0d57a43e8ba4b8fa1d7e99d389b22d4", + "evidence": "permissionIds=2085961774280593410", + "checkedAt": "2026-08-08T05:30:17.949Z" + }, + { + "module": "system", + "scenario": null, + "name": "停用自定义角色", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/2085961774804881409/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9b7ccaed-762f-4369-8e06-00230d85dec9, 30f9feec-1012-47f6-b714-483e88b1331a", + "traceId": "4402cd762d0b4511b491969d22d7efee", + "evidence": "", + "checkedAt": "2026-08-08T05:30:17.976Z" + }, + { + "module": "system", + "scenario": null, + "name": "角色状态回显 DISABLED", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/2085961774804881409/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9b7ccaed-762f-4369-8e06-00230d85dec9, 30f9feec-1012-47f6-b714-483e88b1331a", + "traceId": "4402cd762d0b4511b491969d22d7efee", + "evidence": "status=DISABLED", + "checkedAt": "2026-08-08T05:30:17.976Z" + }, + { + "module": "system", + "scenario": null, + "name": "启用自定义角色", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/2085961774804881409/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ad26839b-b12d-4377-a16a-f8583ab29e85, 62381fa9-d332-47f0-8928-4988b4f9fded", + "traceId": "5b98e5bb965b4849b69c6b979b46024a", + "evidence": "", + "checkedAt": "2026-08-08T05:30:18.008Z" + }, + { + "module": "system", + "scenario": null, + "name": "角色状态回显 ACTIVE", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/2085961774804881409/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ad26839b-b12d-4377-a16a-f8583ab29e85, 62381fa9-d332-47f0-8928-4988b4f9fded", + "traceId": "5b98e5bb965b4849b69c6b979b46024a", + "evidence": "status=ACTIVE", + "checkedAt": "2026-08-08T05:30:18.008Z" + }, + { + "module": "system", + "scenario": null, + "name": "查询内部用户可选平台角色", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/users/options" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "fdfc79e7-f24f-4992-84a1-53d0109e9089, 94c7d453-760f-4bd5-a4c6-7a3d393a2be5", + "traceId": "d9487921e2f84192a15a578ef438fd96", + "evidence": "", + "checkedAt": "2026-08-08T05:30:18.033Z" + }, + { + "module": "system", + "scenario": null, + "name": "用户选项包含平台与测试角色", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/users/options" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "fdfc79e7-f24f-4992-84a1-53d0109e9089, 94c7d453-760f-4bd5-a4c6-7a3d393a2be5", + "traceId": "d9487921e2f84192a15a578ef438fd96", + "evidence": "tenants=1, roles=13", + "checkedAt": "2026-08-08T05:30:18.033Z" + }, + { + "module": "system", + "scenario": null, + "name": "检查测试联系电话可用性", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/tenants/contact-phone-availability?contactPhone=16167018033" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5542d603-6708-421e-ac2b-68aa5cecc094, 0aa61a9d-2731-4937-8883-e3afe18dad26", + "traceId": "b8d89cd4bd044c68b0f6a1537a4de169", + "evidence": "attempt=1", + "checkedAt": "2026-08-08T05:30:18.068Z" + }, + { + "module": "system", + "scenario": null, + "name": "创建平台内部用户", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/users" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "dcde7a73-5080-48fd-8b30-8ddc2cf3412d, 1139f310-7f9d-4338-95c3-be59d8dcc84b", + "traceId": "e54751a7c62441a7b1f66cea36bf247f", + "evidence": "", + "checkedAt": "2026-08-08T05:30:18.424Z" + }, + { + "module": "system", + "scenario": null, + "name": "内部用户账号、平台范围和角色正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/iam/users" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "dcde7a73-5080-48fd-8b30-8ddc2cf3412d, 1139f310-7f9d-4338-95c3-be59d8dcc84b", + "traceId": "e54751a7c62441a7b1f66cea36bf247f", + "evidence": "membershipId=2085961775853457412", + "checkedAt": "2026-08-08T05:30:18.424Z" + }, + { + "module": "system", + "scenario": null, + "name": "按账号查询平台内部用户", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/users?page=1&size=20&keyword=admin_accept_808053015762" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3cc1eecd-35b7-4daf-81b5-d947c3b3c95d, bad266dc-bd8b-4a6f-bef4-533684fd07d0", + "traceId": "e36b57fd1cae48838084d38e24a7e359", + "evidence": "", + "checkedAt": "2026-08-08T05:30:18.465Z" + }, + { + "module": "system", + "scenario": null, + "name": "用户列表包含新账号且字段完整", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/users?page=1&size=20&keyword=admin_accept_808053015762" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3cc1eecd-35b7-4daf-81b5-d947c3b3c95d, bad266dc-bd8b-4a6f-bef4-533684fd07d0", + "traceId": "e36b57fd1cae48838084d38e24a7e359", + "evidence": "records=1, missing=none, lastLoginAt=omitted", + "checkedAt": "2026-08-08T05:30:18.465Z" + }, + { + "module": "system", + "scenario": null, + "name": "编辑平台内部用户", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/users/2085961775853457412" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a898a3e5-9868-45c0-9d02-347a9c669aa0, 4ad513af-500f-49c9-ab5c-00d057cbc4a1", + "traceId": "1a962a3000b8493cae2da9a0a051f44a", + "evidence": "", + "checkedAt": "2026-08-08T05:30:18.594Z" + }, + { + "module": "system", + "scenario": null, + "name": "用户编辑正确回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/users/2085961775853457412" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a898a3e5-9868-45c0-9d02-347a9c669aa0, 4ad513af-500f-49c9-ab5c-00d057cbc4a1", + "traceId": "1a962a3000b8493cae2da9a0a051f44a", + "evidence": "membershipId=2085961775853457412", + "checkedAt": "2026-08-08T05:30:18.594Z" + }, + { + "module": "system", + "scenario": null, + "name": "新建内部用户可使用初始密码登录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/auth/login" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "530802b5-a71a-4a41-9673-14b33f00e855, 75d49a2e-98f5-448b-8965-c350709ef77f", + "traceId": "39dc465794de4e758e5cb2b86b14ccad", + "evidence": "username=admin_accept_808053015762", + "checkedAt": "2026-08-08T05:30:18.936Z" + }, + { + "module": "system", + "scenario": null, + "name": "重置平台内部用户密码", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/users/2085961775853457412/password" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "686bbe34-7c34-487a-9222-33a96741841d, a3147c9d-3cc0-4dd6-87bb-a0536fdf8b30", + "traceId": "c02e9f2d1bc04e43a5b885b631ebad8f", + "evidence": "", + "checkedAt": "2026-08-08T05:30:19.334Z" + }, + { + "module": "system", + "scenario": null, + "name": "内部用户使用重置密码登录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/auth/login" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7103954c-26dd-4610-a858-6045b595d694, 93caeee1-c49c-41ce-8690-6bfe3e66f5c8", + "traceId": "b76c746ca5014abd9460a4ca0ccb00bb", + "evidence": "username=admin_accept_808053015762", + "checkedAt": "2026-08-08T05:30:19.667Z" + }, + { + "module": "system", + "scenario": null, + "name": "停用平台内部用户", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/users/2085961775853457412/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "258a84d3-1279-4901-b568-7eff21a47145, 84148970-47d1-4a78-b3f1-36348f4b12e3", + "traceId": "6a540985cf204856a6ce6eedf8f1dabf", + "evidence": "", + "checkedAt": "2026-08-08T05:30:19.788Z" + }, + { + "module": "system", + "scenario": null, + "name": "内部用户停用状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/users/2085961775853457412/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "258a84d3-1279-4901-b568-7eff21a47145, 84148970-47d1-4a78-b3f1-36348f4b12e3", + "traceId": "6a540985cf204856a6ce6eedf8f1dabf", + "evidence": "status=DISABLED", + "checkedAt": "2026-08-08T05:30:19.788Z" + }, + { + "module": "system", + "scenario": null, + "name": "停用用户禁止登录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/auth/login" + }, + "http": 200, + "code": "A0403", + "message": "账号已禁用", + "requestId": "4bc498bf-eb0d-44b8-9b3d-389263bd35e6", + "traceId": "ce7d9f972ac24e55b3ef4a988a038a81", + "evidence": "HTTP=200, code=A0403", + "checkedAt": "2026-08-08T05:30:19.811Z" + }, + { + "module": "system", + "scenario": null, + "name": "清空测试角色权限", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/permissions" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a1c54da9-d05d-4b9b-8c67-83152a58fece, 009b9c62-e906-4011-b8ce-e41c5927ceed", + "traceId": "c77ea2c88a26440994563c06ac82687d", + "evidence": "", + "checkedAt": "2026-08-08T05:30:19.920Z" + }, + { + "module": "system", + "scenario": "system-role-protection", + "name": "已分配成员的角色禁止删除", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "DELETE", + "path": "/api/platform/v1/iam/roles/2085961774804881409" + }, + "http": 200, + "code": "A0409", + "message": "角色已分配给成员,不能删除", + "requestId": "e59cb779-a01c-45dc-b6bb-28ffd825576d", + "traceId": "380bcb8f1abc46a0b494ee67f4a3ce75", + "evidence": "HTTP=200, code=A0409", + "checkedAt": "2026-08-08T05:30:19.954Z" + }, + { + "module": "system", + "scenario": null, + "name": "清理时停用测试角色", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/2085961774804881409/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e781050a-2df2-4bd1-9ee4-43ca523b2ac3, ba768da0-7678-4083-89f9-86a024b5743a", + "traceId": "c077931f60b14f2d8266c6aa80693786", + "evidence": "", + "checkedAt": "2026-08-08T05:30:20.059Z" + }, + { + "module": "system", + "scenario": null, + "name": "保留测试角色处于停用状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/iam/roles/2085961774804881409/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e781050a-2df2-4bd1-9ee4-43ca523b2ac3, ba768da0-7678-4083-89f9-86a024b5743a", + "traceId": "c077931f60b14f2d8266c6aa80693786", + "evidence": "status=DISABLED", + "checkedAt": "2026-08-08T05:30:20.060Z" + }, + { + "module": "system", + "scenario": null, + "name": "删除临时权限资源", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "DELETE", + "path": "/api/platform/v1/iam/permissions/2085961774280593410" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5579ed96-f676-4cc6-be55-a3474a77110b, 1db6470d-3978-4816-8589-fe3bafb049a3", + "traceId": "83c41c7a75144bbebc593399cdb2da9c", + "evidence": "", + "checkedAt": "2026-08-08T05:30:20.086Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "查询平台仓库列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=20" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c47d5b4f-68b9-430a-adbe-a4374c0802d7, e166c69b-20b4-47c1-8e87-7bd3e83bf20d", + "traceId": "fd24d87db75349b692c47efba8287c50", + "evidence": "", + "checkedAt": "2026-08-08T05:30:20.140Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "仓库列表分页结构正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=20" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c47d5b4f-68b9-430a-adbe-a4374c0802d7, e166c69b-20b4-47c1-8e87-7bd3e83bf20d", + "traceId": "fd24d87db75349b692c47efba8287c50", + "evidence": "total=272", + "checkedAt": "2026-08-08T05:30:20.140Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "创建平台公共仓库", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/warehouse-admin" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1c311ab9-16b9-4c98-94cb-99303be49d96, 22c57b84-0684-4953-b787-ea142156eac0", + "traceId": "f021b4e78f2d41e98f7fcdaa7837a930", + "evidence": "", + "checkedAt": "2026-08-08T05:30:20.182Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "仓库创建返回字符串兼容 ID", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/warehouse-admin" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1c311ab9-16b9-4c98-94cb-99303be49d96, 22c57b84-0684-4953-b787-ea142156eac0", + "traceId": "f021b4e78f2d41e98f7fcdaa7837a930", + "evidence": "warehouseId=2085961784562335745", + "checkedAt": "2026-08-08T05:30:20.182Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "查询平台仓库详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin/2085961784562335745?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b31ab352-7c10-4d04-a8de-79596a1142e3, 5c29cf5a-f7d9-48bc-9605-90322626ceeb", + "traceId": "7de2123a86c74fafa0aaf0b85be4a8fd", + "evidence": "", + "checkedAt": "2026-08-08T05:30:20.219Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "仓库详情、地址和能力正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin/2085961784562335745?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b31ab352-7c10-4d04-a8de-79596a1142e3, 5c29cf5a-f7d9-48bc-9605-90322626ceeb", + "traceId": "7de2123a86c74fafa0aaf0b85be4a8fd", + "evidence": "addresses=1, capabilities=1", + "checkedAt": "2026-08-08T05:30:20.219Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "编辑平台仓库", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/warehouse-admin/2085961784562335745?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c1f23d38-aa36-44d0-be15-b3f95aa638d6, 649eb021-9699-48ba-b4c9-220f78453f82", + "traceId": "99faac5e7be641fa81c162aab39c763d", + "evidence": "", + "checkedAt": "2026-08-08T05:30:20.260Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "回查编辑后的平台仓库", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin/2085961784562335745?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8706b0f4-222c-4364-a8c4-84049c01f57e, e68cf791-ab3d-4d8b-9043-1dcc342edb0a", + "traceId": "70baa27b0f5f4152a42ee3e44643fab3", + "evidence": "", + "checkedAt": "2026-08-08T05:30:20.296Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "仓库编辑已持久化", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin/2085961784562335745?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8706b0f4-222c-4364-a8c4-84049c01f57e, e68cf791-ab3d-4d8b-9043-1dcc342edb0a", + "traceId": "70baa27b0f5f4152a42ee3e44643fab3", + "evidence": "warehouseId=2085961784562335745", + "checkedAt": "2026-08-08T05:30:20.296Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "创建仓库库位", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/locations?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3cb6ae13-90ea-40d7-ac0d-c3072af196d2, fe70b510-776f-4dd4-83f1-1433989cc69f", + "traceId": "136cac64a4324a37a1b7526a423aa1df", + "evidence": "", + "checkedAt": "2026-08-08T05:30:20.326Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "查询库位详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations/2085961785191481346?tenantId=0&warehouseId=2085961784562335745" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "18e665ef-4bbb-4b35-8ba1-fb04e6b9484e, 64e4b15c-2f94-4aa1-9309-5b79a354d08e", + "traceId": "3838ea8231bc498e8bae31ae97382aff", + "evidence": "", + "checkedAt": "2026-08-08T05:30:20.358Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "库位详情关联正确仓库", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations/2085961785191481346?tenantId=0&warehouseId=2085961784562335745" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "18e665ef-4bbb-4b35-8ba1-fb04e6b9484e, 64e4b15c-2f94-4aa1-9309-5b79a354d08e", + "traceId": "3838ea8231bc498e8bae31ae97382aff", + "evidence": "locationId=2085961785191481346", + "checkedAt": "2026-08-08T05:30:20.358Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "编辑库位", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/locations/2085961785191481346?tenantId=0&warehouseId=2085961784562335745" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a6de8207-d71f-421c-b1c4-5356579760af, 22dd180f-4f29-4ed8-b87c-7e62548dc53f", + "traceId": "988237f8935441a5b0e8a9457d9d5c9d", + "evidence": "", + "checkedAt": "2026-08-08T05:30:20.401Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "回查编辑后的库位", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations/2085961785191481346?tenantId=0&warehouseId=2085961784562335745" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "df690e06-520d-467f-98a8-2289d529ce66, 99295fe1-e561-4f9a-b238-919d67cc0273", + "traceId": "2d0f6cc683314074bfb972257d9c0b37", + "evidence": "", + "checkedAt": "2026-08-08T05:30:20.436Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "库位编辑与版本递增正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations/2085961785191481346?tenantId=0&warehouseId=2085961784562335745" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "df690e06-520d-467f-98a8-2289d529ce66, 99295fe1-e561-4f9a-b238-919d67cc0273", + "traceId": "2d0f6cc683314074bfb972257d9c0b37", + "evidence": "version=1", + "checkedAt": "2026-08-08T05:30:20.436Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "停用库位", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PATCH", + "path": "/api/platform/v1/locations/2085961785191481346/status?tenantId=0&warehouseId=2085961784562335745" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d054ec51-3dea-4d74-926b-fba1ba2fc9f4, 55b09dcb-d5fd-4d4c-bb36-4259ff03e5cc", + "traceId": "637c6f9256374f96adaa1a7fd9f148f2", + "evidence": "", + "checkedAt": "2026-08-08T05:30:20.472Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "删除未占用测试库位", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "DELETE", + "path": "/api/platform/v1/locations/2085961785191481346?tenantId=0&warehouseId=2085961784562335745&version=2" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "cd169797-f9be-4daf-b973-bc6017a5a93e, 06396495-6421-47db-b860-02972e24782a", + "traceId": "979f67bf215349b6ba368c0c0af5f506", + "evidence": "", + "checkedAt": "2026-08-08T05:30:20.506Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "创建仓库托盘", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/pallets?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "de816340-7b01-47f5-8ca9-1e4f1fc61128, 5144150c-5326-4f44-94b5-c5dc8467f209", + "traceId": "9bc86d0c90f74a16b64e34261b8945f6", + "evidence": "", + "checkedAt": "2026-08-08T05:30:20.533Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "查询托盘详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets/2085961786063896577?tenantId=0&warehouseId=2085961784562335745" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "58bf2099-7296-49c7-804c-d2c6008e5cf8, 3dca9396-b9c0-4183-a09d-d4f98227d139", + "traceId": "a71fad82a78a4b7ab080d6b02c5fd31c", + "evidence": "", + "checkedAt": "2026-08-08T05:30:20.559Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "托盘详情关联正确仓库", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets/2085961786063896577?tenantId=0&warehouseId=2085961784562335745" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "58bf2099-7296-49c7-804c-d2c6008e5cf8, 3dca9396-b9c0-4183-a09d-d4f98227d139", + "traceId": "a71fad82a78a4b7ab080d6b02c5fd31c", + "evidence": "palletId=2085961786063896577", + "checkedAt": "2026-08-08T05:30:20.559Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "编辑托盘", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/pallets/2085961786063896577?tenantId=0&warehouseId=2085961784562335745" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ff1e488e-68e6-480a-ba64-59a1e4c2f156, ef9de673-2db0-4883-920b-3f073b6283d3", + "traceId": "dd8385eaf0c54a8bbcec58a2ec8896dc", + "evidence": "", + "checkedAt": "2026-08-08T05:30:20.597Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "回查编辑后的托盘", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets/2085961786063896577?tenantId=0&warehouseId=2085961784562335745" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "97485074-ca58-4573-b48b-b6d100b4cea3, 0ff27850-ddf8-4b5c-a1a1-4db2f07e06ee", + "traceId": "9dc49834e81b422b96a40c60b27191c5", + "evidence": "", + "checkedAt": "2026-08-08T05:30:20.621Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "托盘编辑已持久化", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets/2085961786063896577?tenantId=0&warehouseId=2085961784562335745" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "97485074-ca58-4573-b48b-b6d100b4cea3, 0ff27850-ddf8-4b5c-a1a1-4db2f07e06ee", + "traceId": "9dc49834e81b422b96a40c60b27191c5", + "evidence": "palletId=2085961786063896577", + "checkedAt": "2026-08-08T05:30:20.621Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "删除未使用测试托盘", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "DELETE", + "path": "/api/platform/v1/pallets/2085961786063896577?tenantId=0&warehouseId=2085961784562335745" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c65ac3c5-449e-4a03-b174-8141a7a9bc98, b5b02937-c26a-4eb0-9f4e-df1ade9597b7", + "traceId": "00f7182bcf69464f83353ec0a3774a9a", + "evidence": "", + "checkedAt": "2026-08-08T05:30:20.661Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "创建快递公司", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/express-companies?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f0ae0695-a82e-4534-97b3-964a1fbf8eba, 36e2d5d7-c8d6-41d4-876b-115cae178c73", + "traceId": "309e73b75fda4e56926e93a5ecb4ac99", + "evidence": "", + "checkedAt": "2026-08-08T05:30:20.691Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "查询快递公司详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies/2085961786722402305?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7bccf2eb-028f-40f5-8b22-a0bfe466e6b3, 3a02b6cd-4625-4042-9de3-e6ef986be42b", + "traceId": "1b0192e5703645949417cb3d16a2e3ea", + "evidence": "", + "checkedAt": "2026-08-08T05:30:20.710Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "快递公司详情正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies/2085961786722402305?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7bccf2eb-028f-40f5-8b22-a0bfe466e6b3, 3a02b6cd-4625-4042-9de3-e6ef986be42b", + "traceId": "1b0192e5703645949417cb3d16a2e3ea", + "evidence": "expressId=2085961786722402305", + "checkedAt": "2026-08-08T05:30:20.710Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "编辑快递公司", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/express-companies/2085961786722402305?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9e688c20-8933-4e1e-a9d8-79ed1b95ff8e, cb5eb1de-76b3-4bb8-aded-c784daaf7b53", + "traceId": "54075ea916344a16afd73fc18501910f", + "evidence": "", + "checkedAt": "2026-08-08T05:30:20.740Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "停用快递公司", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PATCH", + "path": "/api/platform/v1/express-companies/2085961786722402305/status?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7fd8e789-0bd9-4e7f-949d-171a20739c7f, 4f61bffa-e5fe-4419-b67f-c22505c59738", + "traceId": "8d3d16bb6695470eb627826ae6a96839", + "evidence": "", + "checkedAt": "2026-08-08T05:30:20.802Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "筛选快递公司列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies?page=1&size=20&keyword=EX808053015762" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3ee03251-e0b5-42db-946f-c7e8cb68ae57, d5e51559-270c-4887-9afe-12239c523c2a", + "traceId": "ac06501e87bb4c77b3d7a9f43e1d6843", + "evidence": "", + "checkedAt": "2026-08-08T05:30:20.827Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "快递公司列表回显停用状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies?page=1&size=20&keyword=EX808053015762" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3ee03251-e0b5-42db-946f-c7e8cb68ae57, d5e51559-270c-4887-9afe-12239c523c2a", + "traceId": "ac06501e87bb4c77b3d7a9f43e1d6843", + "evidence": "records=1", + "checkedAt": "2026-08-08T05:30:20.827Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "创建往来单位", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/partners?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b0d2b347-6fa9-445c-b4e4-ba1bb2e1d398, 2115595f-e420-4c65-ba9a-0e7b4996057f", + "traceId": "c25f71eaff7e4559bdec53c7dbeeed27", + "evidence": "", + "checkedAt": "2026-08-08T05:30:20.862Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "查询往来单位详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners/2085961787439628289?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2b1c63e4-2976-461d-8827-e0e926add83e, a6bde1af-5dc0-4965-9440-665554805b0c", + "traceId": "a620f5a6034944d9ad87c1fbe9737d40", + "evidence": "", + "checkedAt": "2026-08-08T05:30:20.887Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "往来单位详情正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners/2085961787439628289?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2b1c63e4-2976-461d-8827-e0e926add83e, a6bde1af-5dc0-4965-9440-665554805b0c", + "traceId": "a620f5a6034944d9ad87c1fbe9737d40", + "evidence": "partnerId=2085961787439628289", + "checkedAt": "2026-08-08T05:30:20.887Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "编辑往来单位", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/partners/2085961787439628289?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "cf9e8b16-92d4-4204-a918-0f69d756addf, 6b1a39d3-8b1e-4238-95c4-56bf25686fae", + "traceId": "4c4ae1d1099d4b34b3bf67351ddbcd96", + "evidence": "", + "checkedAt": "2026-08-08T05:30:20.916Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "停用往来单位", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PATCH", + "path": "/api/platform/v1/partners/2085961787439628289/status?tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "fed9a9e3-c154-4f88-bbb8-49a6c35ff0c6, 2f65c333-86de-4231-8e3a-1f712cf7c153", + "traceId": "fc1e2909380a434fa1319b00c2367c11", + "evidence": "", + "checkedAt": "2026-08-08T05:30:20.959Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "筛选往来单位列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners?page=1&size=20&keyword=PT808053015762" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "704ab3c2-1f3f-440d-a6d3-59af5815b297, 1a629dd5-f46d-45dc-b5de-1bac1d46058c", + "traceId": "9ff01316184f495a9e3e91385c6af9e1", + "evidence": "", + "checkedAt": "2026-08-08T05:30:20.985Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "往来单位列表回显编辑与停用状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners?page=1&size=20&keyword=PT808053015762" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "704ab3c2-1f3f-440d-a6d3-59af5815b297, 1a629dd5-f46d-45dc-b5de-1bac1d46058c", + "traceId": "9ff01316184f495a9e3e91385c6af9e1", + "evidence": "records=1", + "checkedAt": "2026-08-08T05:30:20.985Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "下载仓库导入模板", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin/import-template" + }, + "http": 200, + "code": null, + "message": "3852 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "b7a3ed65-a795-4c23-8273-e7635cff32fe, 7bc09c05-29cc-4e1e-ad8c-590fdb180786", + "traceId": "b097ccd4d6674434b2d69c553898bbe2", + "evidence": "bytes=3852, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "checkedAt": "2026-08-08T05:30:21.051Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "下载快递公司导入模板", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies/import-template" + }, + "http": 200, + "code": null, + "message": "3691 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "a72f48bf-4648-46cc-85ea-5155173e3672, 41a1a1df-b867-437a-a730-695b5f4e5312", + "traceId": "e5619c106eda4825bb7185608d84d4fb", + "evidence": "bytes=3691, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "checkedAt": "2026-08-08T05:30:21.086Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "下载往来单位导入模板", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners/import-template" + }, + "http": 200, + "code": null, + "message": "3829 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "6c8b7205-39cd-40b0-9854-7dc97ea86c35, 180261bc-1fdd-475c-9a08-ad9e86473c03", + "traceId": "bd4dd2a219c2429d8292f65908e1204e", + "evidence": "bytes=3829, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "checkedAt": "2026-08-08T05:30:21.134Z" + }, + { + "module": "master-data", + "scenario": null, + "name": "停用测试仓库", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PATCH", + "path": "/api/platform/v1/warehouse-admin/2085961784562335745/status?tenantId=0&status=INACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "fe8736a7-6f3c-488a-900c-e84cb7775467, 35407994-fe13-4753-93dd-064a8e7b28dd", + "traceId": "db970d98f73646feb0523f3ee2efc347", + "evidence": "", + "checkedAt": "2026-08-08T05:30:21.173Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 测试账号登录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/auth/login" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0cd8fbe7-e76d-4154-9a9f-16b3e8ceb7be, bfb43556-ee2d-49a2-bb38-a268e0a28724", + "traceId": "58fb7ea5bef349608f4579242a47df67", + "evidence": "username=merchant_admin", + "checkedAt": "2026-08-08T05:30:21.597Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询当前企业资料", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/iam/tenant/profile" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6ebcc60b-e7f7-4c88-8b3a-3ae69a54cbe1, 98add0cf-f257-4961-b60b-8cbe75062952", + "traceId": "c9080b28bdef4b3580bff6944771a896", + "evidence": "", + "checkedAt": "2026-08-08T05:30:21.634Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 测试企业已审核且客户 ID 有效", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/iam/tenant/profile" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6ebcc60b-e7f7-4c88-8b3a-3ae69a54cbe1, 98add0cf-f257-4961-b60b-8cbe75062952", + "traceId": "c9080b28bdef4b3580bff6944771a896", + "evidence": "tenantId=10001, status=ACTIVE", + "checkedAt": "2026-08-08T05:30:21.634Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询客户固定箱型", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "494db7ae-34f4-4111-89df-1bda3e324de0, f609cb3d-3d6d-4a04-8617-4c4a26f70cca", + "traceId": "74c522ecd31e434184b5affe6fc5aa37", + "evidence": "tenantId=10001", + "checkedAt": "2026-08-08T05:30:21.656Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "固定四箱型顺序、内径及每边加2cm正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "494db7ae-34f4-4111-89df-1bda3e324de0, f609cb3d-3d6d-4a04-8617-4c4a26f70cca", + "traceId": "74c522ecd31e434184b5affe6fc5aa37", + "evidence": "types=SMALL,MEDIUM,LARGE,EXTRA_LARGE", + "checkedAt": "2026-08-08T05:30:21.656Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询国内收货仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=DOMESTIC" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "aa711610-fd30-4992-963c-a025420b8c74, 7e8f84e6-0bf9-4d56-afeb-f3a2f01e6600", + "traceId": "dc87c393b5ac493abfb626d78b8ff0e3", + "evidence": "", + "checkedAt": "2026-08-08T05:30:21.682Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在可用国内收货仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=DOMESTIC" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "aa711610-fd30-4992-963c-a025420b8c74, 7e8f84e6-0bf9-4d56-afeb-f3a2f01e6600", + "traceId": "dc87c393b5ac493abfb626d78b8ff0e3", + "evidence": "count=2", + "checkedAt": "2026-08-08T05:30:21.682Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询 FBA 目的仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=FBA" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c77d3bbe-be39-4a19-9e83-a6592a87274b, 427f3ca9-2949-4b75-8d64-7d6b389ae4f2", + "traceId": "15d9a334c97644e08a89568b958398dd", + "evidence": "", + "checkedAt": "2026-08-08T05:30:21.738Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在可用 FBA 目的仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=FBA" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c77d3bbe-be39-4a19-9e83-a6592a87274b, 427f3ca9-2949-4b75-8d64-7d6b389ae4f2", + "traceId": "15d9a334c97644e08a89568b958398dd", + "evidence": "count=200", + "checkedAt": "2026-08-08T05:30:21.738Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询可用计费渠道", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/first-leg/pricing/channels?originWarehouseId=193000000000200001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "06bb6565-a9bd-479c-bce5-eeda8a7e39eb, e96b0fef-7330-46ae-a0bc-8b6c6c4eb3d3", + "traceId": "7854f15635294e14b3a083198d6acf6f", + "evidence": "", + "checkedAt": "2026-08-08T05:30:21.780Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在带计价税制的可用渠道", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/first-leg/pricing/channels?originWarehouseId=193000000000200001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "06bb6565-a9bd-479c-bce5-eeda8a7e39eb, e96b0fef-7330-46ae-a0bc-8b6c6c4eb3d3", + "traceId": "7854f15635294e14b3a083198d6acf6f", + "evidence": "count=15", + "checkedAt": "2026-08-08T05:30:21.780Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询发货客户候选", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/partners/candidates?type=SHIPPER" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0d847a8d-ad6e-4379-a055-85ee9af7863f, d823c3cd-479c-444b-8f28-7993d4a9d859", + "traceId": "36f51d0f82e84ab093ef617b3b8a2552", + "evidence": "", + "checkedAt": "2026-08-08T05:30:21.805Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 上传产品图片", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/files/product-images" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "334053ab-64b5-4ecd-b516-5238f842d171, 7559d396-9e74-40c0-8f68-9a66e9419942", + "traceId": "f238d38919e64990a501d508dd78d67a", + "evidence": "contentType=image/png", + "checkedAt": "2026-08-08T05:30:21.836Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "产品图片上传返回字符串文件 ID", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/files/product-images" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "334053ab-64b5-4ecd-b516-5238f842d171, 7559d396-9e74-40c0-8f68-9a66e9419942", + "traceId": "f238d38919e64990a501d508dd78d67a", + "evidence": "fileIdType=string, contentType=image/png", + "checkedAt": "2026-08-08T05:30:21.836Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 可下载本轮产品图片", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/files/product-images/2085961791524372481" + }, + "http": 200, + "code": null, + "message": null, + "requestId": "8d2a6041-1151-4fee-9ab3-464c45b4a6f8, 20d096f9-65ad-478f-a1b0-4501e3ceb74b", + "traceId": "afd8475ac0084ceb92517a02e88203f6", + "evidence": "bytes=68, contentType=image/png", + "checkedAt": "2026-08-08T05:30:21.867Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 创建四箱型隔离订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "13e0f6d8-d372-40bd-981f-61f34775ad4f, da8e25df-7038-4ad9-bbad-9856521f109d", + "traceId": "eb6d72cfdeb748fe94bed58787d832eb", + "evidence": "marker=ADMIN-API-20260808053015762", + "checkedAt": "2026-08-08T05:30:21.937Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 创建订单幂等重放", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "57e9a6e0-e1ab-4bf6-8d24-2ac6562c6482, 23421da5-8f36-4024-b5f0-6ec6a84a677a", + "traceId": "6f5ed646c40d4c37bf246b962c6006a7", + "evidence": "", + "checkedAt": "2026-08-08T05:30:21.966Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 创建幂等结果一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "57e9a6e0-e1ab-4bf6-8d24-2ac6562c6482, 23421da5-8f36-4024-b5f0-6ec6a84a677a", + "traceId": "6f5ed646c40d4c37bf246b962c6006a7", + "evidence": "orderId=2085961791918637057, replayedId=2085961791918637057", + "checkedAt": "2026-08-08T05:30:21.966Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询隔离订单草稿", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085961791918637057" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0f47733f-401e-4218-a5ec-095502a4c55b, 62c868ad-feeb-4183-b7b9-84715383c8d7", + "traceId": "20acfddfa49c4cc5bd8e4c793713bc87", + "evidence": "", + "checkedAt": "2026-08-08T05:30:21.993Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 草稿身份、marker 和状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085961791918637057" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0f47733f-401e-4218-a5ec-095502a4c55b, 62c868ad-feeb-4183-b7b9-84715383c8d7", + "traceId": "20acfddfa49c4cc5bd8e4c793713bc87", + "evidence": "orderNo=FL2085961791918637057, status=DRAFT", + "checkedAt": "2026-08-08T05:30:21.993Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "四箱型产品字段及图片契约完整回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085961791918637057" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0f47733f-401e-4218-a5ec-095502a4c55b, 62c868ad-feeb-4183-b7b9-84715383c8d7", + "traceId": "20acfddfa49c4cc5bd8e4c793713bc87", + "evidence": "cargoes=4, imageFileId=2085961791524372481", + "checkedAt": "2026-08-08T05:30:21.993Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 提交隔离订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg/2085961791918637057/submit" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5f3b7ff1-9880-4169-bb74-8579866304eb, d01de982-724f-4448-a7b4-cda6fe170f39", + "traceId": "eba90c8d7a7540fa84bf8b63b66b543d", + "evidence": "orderId=2085961791918637057", + "checkedAt": "2026-08-08T05:30:22.050Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 回查已提交订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085961791918637057" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "dc927875-56ba-4f2b-818d-8cb3d50ca560, 23c188ee-fe9d-40fe-ae1a-757ff80d6b3b", + "traceId": "43bf182debde47d4acb9a87be3b4c834", + "evidence": "", + "checkedAt": "2026-08-08T05:30:22.073Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 订单已进入待审核状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085961791918637057" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "dc927875-56ba-4f2b-818d-8cb3d50ca560, 23c188ee-fe9d-40fe-ae1a-757ff80d6b3b", + "traceId": "43bf182debde47d4acb9a87be3b4c834", + "evidence": "status=SUBMITTED", + "checkedAt": "2026-08-08T05:30:22.074Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询统一订单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders?page=1&size=100&tenantId=10001&orderNo=FL2085961791918637057" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "dcdba336-b7ce-4d73-9dc9-28b2165d8ce1, 7e5e1df0-8288-4d5f-ac0b-5e569ccf0df0", + "traceId": "921cf0736e6e4f3689498d6444fb3990", + "evidence": "", + "checkedAt": "2026-08-08T05:30:22.104Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 统一订单列表只核对本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders?page=1&size=100&tenantId=10001&orderNo=FL2085961791918637057" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "dcdba336-b7ce-4d73-9dc9-28b2165d8ce1, 7e5e1df0-8288-4d5f-ac0b-5e569ccf0df0", + "traceId": "921cf0736e6e4f3689498d6444fb3990", + "evidence": "orderId=2085961791918637057, found=true", + "checkedAt": "2026-08-08T05:30:22.104Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询统一订单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085961791918637057?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c2c7c3c5-c47e-47be-907a-077d5945b312, 01ec04a1-1736-4d90-9de7-a25203173510", + "traceId": "c13d8923ba024ba59ef9f329f8e59a12", + "evidence": "", + "checkedAt": "2026-08-08T05:30:22.134Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 统一订单详情身份与待审核状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085961791918637057?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c2c7c3c5-c47e-47be-907a-077d5945b312, 01ec04a1-1736-4d90-9de7-a25203173510", + "traceId": "c13d8923ba024ba59ef9f329f8e59a12", + "evidence": "mainStatus=PENDING_REVIEW, timeline=2", + "checkedAt": "2026-08-08T05:30:22.134Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询头程订单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg?tenantId=10001&keyword=FL2085961791918637057&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "12fabc09-cfac-4551-9e5f-453258ac8b4f, 811a4db9-2675-46ae-a895-56ba95ea1fc5", + "traceId": "405bf31e05d5434b9edc3425f6225385", + "evidence": "", + "checkedAt": "2026-08-08T05:30:22.164Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 头程订单列表只核对本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg?tenantId=10001&keyword=FL2085961791918637057&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "12fabc09-cfac-4551-9e5f-453258ac8b4f, 811a4db9-2675-46ae-a895-56ba95ea1fc5", + "traceId": "405bf31e05d5434b9edc3425f6225385", + "evidence": "orderId=2085961791918637057, found=true", + "checkedAt": "2026-08-08T05:30:22.164Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询头程订单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085961791918637057?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c9cb1d11-e05f-4c89-be38-52b1a1d7f4cb, 3d8e4a70-1d31-4b33-bd07-a4f7c14e1642", + "traceId": "d292e68f930441df80a0764b718ca5e3", + "evidence": "", + "checkedAt": "2026-08-08T05:30:22.196Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 头程订单详情聚合结构完整", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085961791918637057?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c9cb1d11-e05f-4c89-be38-52b1a1d7f4cb, 3d8e4a70-1d31-4b33-bd07-a4f7c14e1642", + "traceId": "d292e68f930441df80a0764b718ca5e3", + "evidence": "cargoes=4, history=2", + "checkedAt": "2026-08-08T05:30:22.196Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "四箱型产品字段及图片契约完整回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085961791918637057?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c9cb1d11-e05f-4c89-be38-52b1a1d7f4cb, 3d8e4a70-1d31-4b33-bd07-a4f7c14e1642", + "traceId": "d292e68f930441df80a0764b718ca5e3", + "evidence": "cargoes=4, imageFileId=2085961791524372481", + "checkedAt": "2026-08-08T05:30:22.196Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 为本轮订单添加内部备注", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085961791918637057/internal-notes?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e7cb6f7f-4b0f-4921-bff5-e11ed979237b, 387fffee-1cd4-455c-851b-dfec4b5f4c9b", + "traceId": "084ef90cef3741ef8db694923d4097a2", + "evidence": "", + "checkedAt": "2026-08-08T05:30:22.230Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 审核通过本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085961791918637057/approve?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "16d4c139-cd0d-4c9d-ad8c-97be3ba2b2f3, 428fe34c-cd17-4499-a3b8-6a252bc6933d", + "traceId": "f6e9d6ca3cf548d3952ff1ed183281b2", + "evidence": "orderId=2085961791918637057", + "checkedAt": "2026-08-08T05:30:22.263Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "审核后生成隔离入库单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085961791918637057?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "eac952cb-6d16-4a43-9ac3-ae6107180107, f8831750-3052-4f5f-a1e1-d0dd4a3dd239", + "traceId": "907bad9616484cde8ac3c1d9a0edb72d", + "evidence": "inboundId=2085961795368431617", + "checkedAt": "2026-08-08T05:30:23.359Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询本轮入库单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085961795368431617?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "14bd1605-62b3-4b2b-bdf3-a67e33245c94, 63dd9207-e32d-4901-9893-4f5066c3e62c", + "traceId": "f1a4d73e271845ae90aa08da3feff6cd", + "evidence": "inboundId=2085961795368431617", + "checkedAt": "2026-08-08T05:30:23.383Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "隔离入库单 marker 来源与可测量状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085961795368431617?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "14bd1605-62b3-4b2b-bdf3-a67e33245c94, 63dd9207-e32d-4901-9893-4f5066c3e62c", + "traceId": "f1a4d73e271845ae90aa08da3feff6cd", + "evidence": "markerFound=true, status=WAIT_MEASURE", + "checkedAt": "2026-08-08T05:30:23.383Z" + }, + { + "module": "orders", + "scenario": null, + "name": "入库单详情包含托盘库位、文件、备注和状态历史", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085961795368431617?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "14bd1605-62b3-4b2b-bdf3-a67e33245c94, 63dd9207-e32d-4901-9893-4f5066c3e62c", + "traceId": "f1a4d73e271845ae90aa08da3feff6cd", + "evidence": "inboundId=2085961795368431617, history=1", + "checkedAt": "2026-08-08T05:30:23.383Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询入库单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds?tenantId=10001&inboundCode=RK-2085961791918637057&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "18e5d1f7-c0a3-4de8-b2fd-87aa7aa2f83c, 748180c7-d9d5-4827-a771-c2d922f5c26d", + "traceId": "e61bc9dcb1824eac941e0704c49ca71e", + "evidence": "", + "checkedAt": "2026-08-08T05:30:23.413Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 入库单列表只核对本轮入库单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds?tenantId=10001&inboundCode=RK-2085961791918637057&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "18e5d1f7-c0a3-4de8-b2fd-87aa7aa2f83c, 748180c7-d9d5-4827-a771-c2d922f5c26d", + "traceId": "e61bc9dcb1824eac941e0704c49ca71e", + "evidence": "inboundId=2085961795368431617, total=1", + "checkedAt": "2026-08-08T05:30:23.413Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询本轮订单履约任务", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/by-order/2085961791918637057?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "60d2f936-7a8e-4680-861d-ef81d21e1300, 444333cf-aabf-41dc-a511-9de81bcee685", + "traceId": "8c04423223e24b28a15b443e8d935046", + "evidence": "新订单应生成可查询的履约任务", + "checkedAt": "2026-08-08T05:30:23.440Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "履约任务与本轮订单和客户一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/by-order/2085961791918637057?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "60d2f936-7a8e-4680-861d-ef81d21e1300, 444333cf-aabf-41dc-a511-9de81bcee685", + "traceId": "8c04423223e24b28a15b443e8d935046", + "evidence": "taskId=2085961795364237314, status=PENDING_ASSIGNMENT", + "checkedAt": "2026-08-08T05:30:23.440Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询本轮履约任务分配历史", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/2085961795364237314/assignment-history?tenantId=10001&page=1&size=20" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f6f2961d-edc8-4b63-b31d-f3dade59db2f, 81b7f5fe-6185-46c9-ab69-f75f705127dc", + "traceId": "14c29a3e1de0445aa831b3933e689047", + "evidence": "", + "checkedAt": "2026-08-08T05:30:23.473Z" + }, + { + "module": "orders", + "scenario": null, + "name": "履约分配历史分页结构正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/2085961795364237314/assignment-history?tenantId=10001&page=1&size=20" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f6f2961d-edc8-4b63-b31d-f3dade59db2f, 81b7f5fe-6185-46c9-ab69-f75f705127dc", + "traceId": "14c29a3e1de0445aa831b3933e689047", + "evidence": "taskId=2085961795364237314, total=0", + "checkedAt": "2026-08-08T05:30:23.473Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 受理本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085961791918637057/accept?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "4f961bcb-81ca-402e-8fb3-5a2430ac7f7f, 3b120eaf-7495-468a-944a-52df60369c94", + "traceId": "48122281411f4ae1af52317e6027f2f6", + "evidence": "", + "checkedAt": "2026-08-08T05:30:23.512Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 启动本轮订单履约", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085961791918637057/start?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "bf06bd39-cb15-4d5b-b3bc-76d3c270e24e, f864d89d-5bf1-40dc-a33b-1109f0c7b9ca", + "traceId": "6e0e7ca29272407486de957faa21d4b9", + "evidence": "", + "checkedAt": "2026-08-08T05:30:23.541Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 回查本轮订单履约状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085961791918637057?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0ae32891-0681-47f8-be69-6445439c2797, 75202c29-a421-4457-b935-c7fd9abcc68c", + "traceId": "78ce66ff235d4762aeeca5725b68742d", + "evidence": "", + "checkedAt": "2026-08-08T05:30:23.566Z" + }, + { + "module": "orders", + "scenario": null, + "name": "本轮订单已进入处理中且保留状态历史", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085961791918637057?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0ae32891-0681-47f8-be69-6445439c2797, 75202c29-a421-4457-b935-c7fd9abcc68c", + "traceId": "78ce66ff235d4762aeeca5725b68742d", + "evidence": "status=PROCESSING, history=5", + "checkedAt": "2026-08-08T05:30:23.567Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "查询发布前船期价格版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6a590585-6e95-410a-88a9-0a2747ab609d, 01cf603b-75fb-4c2c-94df-e1dcef35a68f", + "traceId": "b65d8d9f5beb41d994b628cee4512246", + "evidence": "", + "checkedAt": "2026-08-08T05:30:23.600Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "发布前最多一份生效版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6a590585-6e95-410a-88a9-0a2747ab609d, 01cf603b-75fb-4c2c-94df-e1dcef35a68f", + "traceId": "b65d8d9f5beb41d994b628cee4512246", + "evidence": "versions=13, active=1", + "checkedAt": "2026-08-08T05:30:23.601Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "船期价格测试文件已隔离", + "passed": true, + "deploymentBlocker": false, + "request": null, + "http": null, + "code": null, + "message": null, + "requestId": null, + "traceId": null, + "evidence": "fileName=ADMIN-API-20260808053015762-2026.08.03柏悦价格表 船期2026.08.12.xlsx, bytes=1343413, sha256=3170fd3aa8795cd816ca9600f87a6a2a06b15d0cf6042d4592f33d4b30c7b8ab", + "checkedAt": "2026-08-08T05:30:23.606Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "上传并解析船期价格表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c0bd1aea-8dc4-4023-b6d5-c11bd3282224, b38cf769-9b79-43a6-abfc-397db02def70", + "traceId": "51600c3e1848426fad35f8ccb6341516", + "evidence": "fileName=ADMIN-API-20260808053015762-2026.08.03柏悦价格表 船期2026.08.12.xlsx, bytes=1343413, sha256=3170fd3aa8795cd816ca9600f87a6a2a06b15d0cf6042d4592f33d4b30c7b8ab", + "checkedAt": "2026-08-08T05:30:25.508Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "上传返回隔离的待确认版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c0bd1aea-8dc4-4023-b6d5-c11bd3282224, b38cf769-9b79-43a6-abfc-397db02def70", + "traceId": "51600c3e1848426fad35f8ccb6341516", + "evidence": "versionId=2085961800552591362, status=PENDING_CONFIRMATION, fileName=ADMIN-API-20260808053015762-2026.08.03柏悦价格表 船期2026.08.12.xlsx, shaMatched=true", + "checkedAt": "2026-08-08T05:30:25.509Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "解析出15个固定渠道且编码唯一", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c0bd1aea-8dc4-4023-b6d5-c11bd3282224, b38cf769-9b79-43a6-abfc-397db02def70", + "traceId": "51600c3e1848426fad35f8ccb6341516", + "evidence": "channelCount=15, unique=15, missing=none", + "checkedAt": "2026-08-08T05:30:25.509Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "解析价格行完整且可追溯到 Excel", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c0bd1aea-8dc4-4023-b6d5-c11bd3282224, b38cf769-9b79-43a6-abfc-397db02def70", + "traceId": "51600c3e1848426fad35f8ccb6341516", + "evidence": "rateCount=2157, declared=2157, valid=true", + "checkedAt": "2026-08-08T05:30:25.511Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "解析阻断仅包含可确认的仓库映射问题", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c0bd1aea-8dc4-4023-b6d5-c11bd3282224, b38cf769-9b79-43a6-abfc-397db02def70", + "traceId": "51600c3e1848426fad35f8ccb6341516", + "evidence": "blocking=0, unexpected=none, infrastructure=none", + "checkedAt": "2026-08-08T05:30:25.512Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "上传后回查价格版本列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8cf6c91f-f401-480d-94ac-d3161fbd508f, 17012cf4-419f-4367-b0bc-eade10f82e93", + "traceId": "31f283da5b914360947361a276dbda89", + "evidence": "", + "checkedAt": "2026-08-08T05:30:25.541Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "上传只生成待确认版本且不替换当前生效版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8cf6c91f-f401-480d-94ac-d3161fbd508f, 17012cf4-419f-4367-b0bc-eade10f82e93", + "traceId": "31f283da5b914360947361a276dbda89", + "evidence": "pending=PENDING_CONFIRMATION, activeBefore=2085957708019183617, activeAfterUpload=2085957708019183617", + "checkedAt": "2026-08-08T05:30:25.542Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "查询待确认版本渠道和价格预览", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books/2085961800552591362" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d83b82c2-3e6d-42fb-b87a-734884eee133, 26e7e5d7-b673-4020-9307-ed06bbd60993", + "traceId": "bd6ceb5055594fc78fbbbc66ac9885a3", + "evidence": "", + "checkedAt": "2026-08-08T05:30:25.620Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "详情与上传解析结果一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books/2085961800552591362" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d83b82c2-3e6d-42fb-b87a-734884eee133, 26e7e5d7-b673-4020-9307-ed06bbd60993", + "traceId": "bd6ceb5055594fc78fbbbc66ac9885a3", + "evidence": "versionId=2085961800552591362, channels=15, rates=2157, issues=2", + "checkedAt": "2026-08-08T05:30:25.620Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "下载原始 XLSX 且内容散列一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books/2085961800552591362/source" + }, + "http": 200, + "code": null, + "message": "1343413 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "81613772-1351-4cd5-a278-79aaba7ce831, 67906c11-3948-4e8c-a278-3701d43a0859, 03144049-8bc4-4cda-9512-81837b66f76b", + "traceId": "f0fb1667b8c7445b98281db23d1a15b2, e463fa094537410cacdd1f9edb5d7d7c", + "evidence": "bytes=1343413, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, zipMagic=true, sha256=3170fd3aa8795cd816ca9600f87a6a2a06b15d0cf6042d4592f33d4b30c7b8ab", + "checkedAt": "2026-08-08T05:30:25.703Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "查询启用的平台公共国内仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=200&status=ACTIVE&warehouseType=DOMESTIC" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c555921c-334d-44e4-8607-e0be30fbb467, 3c8a8f4e-ec5e-4809-985e-715de60aefbd", + "traceId": "d0ce8204ec54473ea16b4ff04e363c9b", + "evidence": "", + "checkedAt": "2026-08-08T05:30:25.730Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "查询启用的平台公共海外仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=200&status=ACTIVE&warehouseType=OVERSEAS" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "49e46ee5-40ed-41fd-958c-c9f2e6c602ee, b4b0445b-3358-4e17-a52a-104b01a72673", + "traceId": "85c3cea5db254b008d34009bba03fcee", + "evidence": "", + "checkedAt": "2026-08-08T05:30:25.756Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "国内起运仓和目的海外仓均精确映射", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=200&status=ACTIVE&warehouseType=OVERSEAS" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "49e46ee5-40ed-41fd-958c-c9f2e6c602ee, b4b0445b-3358-4e17-a52a-104b01a72673", + "traceId": "85c3cea5db254b008d34009bba03fcee", + "evidence": "origins=CN-DONGGUAN-01->193000000000200002,CN-YIWU-01->193000000000200001, overseas=纽约仓->193000000000200004,洛杉矶仓->193000000000200003, missing=none", + "checkedAt": "2026-08-08T05:30:25.759Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "确认仓库映射并立即生效", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books/2085961800552591362/publish" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3913530d-ec50-4820-81bd-842da69ef02b, 9940d693-ec81-4ccf-8424-dc21c27cff71", + "traceId": "d48b34c7fb604420a98fcaae8d72a43b", + "evidence": "versionId=2085961800552591362, originMappings=2, overseasMappings=2", + "checkedAt": "2026-08-08T05:30:27.719Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "发布后价格版本为 ACTIVE 且无阻断", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books/2085961800552591362/publish" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "3913530d-ec50-4820-81bd-842da69ef02b, 9940d693-ec81-4ccf-8424-dc21c27cff71", + "traceId": "d48b34c7fb604420a98fcaae8d72a43b", + "evidence": "status=ACTIVE, blocking=0, publishedAt=2026-08-08T13:30:26.267, channels=15, rates=2157", + "checkedAt": "2026-08-08T05:30:27.720Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "发布后回查当前生效和历史版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2479c89f-daa1-4004-9494-5771eecd5200, a124854b-fc25-4d10-9f5b-61c717cf76e6", + "traceId": "7fee16d1121c4f25bfcb0eca5135eb8b", + "evidence": "", + "checkedAt": "2026-08-08T05:30:27.752Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "始终只有一份当前生效版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2479c89f-daa1-4004-9494-5771eecd5200, a124854b-fc25-4d10-9f5b-61c717cf76e6", + "traceId": "7fee16d1121c4f25bfcb0eca5135eb8b", + "evidence": "active=2085961800552591362", + "checkedAt": "2026-08-08T05:30:27.753Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "上一生效版本已保留为历史版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2479c89f-daa1-4004-9494-5771eecd5200, a124854b-fc25-4d10-9f5b-61c717cf76e6", + "traceId": "7fee16d1121c4f25bfcb0eca5135eb8b", + "evidence": "previous=2085957708019183617, superseded=true", + "checkedAt": "2026-08-08T05:30:27.753Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "查询当前生效价格版本详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books/2085961800552591362" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5f97239e-14af-4ed3-82d3-2777fc4337bf, a1bf6deb-cfc8-4c73-81c6-21d9e5bb4cda", + "traceId": "41db3802358345959380dff7c829a1d2", + "evidence": "", + "checkedAt": "2026-08-08T05:30:27.837Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "当前生效版本预览数据完整", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books/2085961800552591362" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5f97239e-14af-4ed3-82d3-2777fc4337bf, a1bf6deb-cfc8-4c73-81c6-21d9e5bb4cda", + "traceId": "41db3802358345959380dff7c829a1d2", + "evidence": "status=ACTIVE, channels=15, rates=2157", + "checkedAt": "2026-08-08T05:30:27.837Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "已生效版本禁止重复发布", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books/2085961800552591362/publish" + }, + "http": 200, + "code": "A0409", + "message": "只有待确认上传记录可以确认并生效", + "requestId": "4ad563a8-4923-4b38-8026-f61cd0d65353", + "traceId": "a13d8c0342f04ff0aa11ddf087096e06", + "evidence": "HTTP=200, code=A0409", + "checkedAt": "2026-08-08T05:30:27.868Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "重复发布被拒绝后回查版本状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7bf11351-cd7a-4dbe-a978-7a05b51eb999, e1b850c4-98e0-4156-97cc-edfecabf7637", + "traceId": "1d0fe3d65ff748a7868f6d59821429e9", + "evidence": "", + "checkedAt": "2026-08-08T05:30:27.896Z" + }, + { + "module": "pricing", + "scenario": "price-book-lifecycle", + "name": "重复发布未改变唯一生效版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7bf11351-cd7a-4dbe-a978-7a05b51eb999, e1b850c4-98e0-4156-97cc-edfecabf7637", + "traceId": "1d0fe3d65ff748a7868f6d59821429e9", + "evidence": "active=2085961800552591362", + "checkedAt": "2026-08-08T05:30:27.897Z" + }, + { + "module": "downloads", + "scenario": null, + "name": "创建客户列表导出任务", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/export-tasks" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7f2c8105-7d31-494e-b986-5b09451bd225, 9651e8d0-f4bc-46f0-8b35-8156a27fd328", + "traceId": "f972e674d312454f9a194afc92bc93bc", + "evidence": "", + "checkedAt": "2026-08-08T05:30:27.926Z" + }, + { + "module": "downloads", + "scenario": null, + "name": "导出任务创建字段正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/export-tasks" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7f2c8105-7d31-494e-b986-5b09451bd225, 9651e8d0-f4bc-46f0-8b35-8156a27fd328", + "traceId": "f972e674d312454f9a194afc92bc93bc", + "evidence": "taskId=2085961817059295234, status=PENDING", + "checkedAt": "2026-08-08T05:30:27.926Z" + }, + { + "module": "downloads", + "scenario": null, + "name": "查询下载中心任务列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=20&exportType=CUSTOMER_LIST" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "37e59faf-f51a-43f8-810d-0be624386a6e, 7c555565-b205-4fc9-9002-1daa1bea56e5", + "traceId": "40592bd112e5402bb3ccb8d195f3e8f3", + "evidence": "", + "checkedAt": "2026-08-08T05:30:27.962Z" + }, + { + "module": "downloads", + "scenario": null, + "name": "下载中心列表包含新任务", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=20&exportType=CUSTOMER_LIST" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "37e59faf-f51a-43f8-810d-0be624386a6e, 7c555565-b205-4fc9-9002-1daa1bea56e5", + "traceId": "40592bd112e5402bb3ccb8d195f3e8f3", + "evidence": "records=9", + "checkedAt": "2026-08-08T05:30:27.962Z" + }, + { + "module": "downloads", + "scenario": null, + "name": "轮询导出任务直到终态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks/2085961817059295234" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7f13483a-cf98-43f6-aa82-547468560429, 1f0aa5df-4c25-4cfb-8e2c-99d3f03009e9", + "traceId": "32c5329def024c0cb5c61a7b8c9fe505", + "evidence": "status=SUCCEEDED, processedRows=0", + "checkedAt": "2026-08-08T05:30:32.064Z" + }, + { + "module": "downloads", + "scenario": null, + "name": "查询导出任务详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks/2085961817059295234" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b5465dbe-14ba-4f5f-9313-a78963882954, 8efa6cde-97fe-4c1b-a1d1-33710fb53967", + "traceId": "619340590bfd4552a7470711ba1d40f4", + "evidence": "", + "checkedAt": "2026-08-08T05:30:32.100Z" + }, + { + "module": "downloads", + "scenario": null, + "name": "导出详情行数和文件元数据正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks/2085961817059295234" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b5465dbe-14ba-4f5f-9313-a78963882954, 8efa6cde-97fe-4c1b-a1d1-33710fb53967", + "traceId": "619340590bfd4552a7470711ba1d40f4", + "evidence": "processedRows=0, sizeBytes=4067", + "checkedAt": "2026-08-08T05:30:32.100Z" + }, + { + "module": "downloads", + "scenario": null, + "name": "下载并校验客户列表 XLSX", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks/2085961817059295234/download" + }, + "http": 200, + "code": null, + "message": "4067 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "7d811df0-728b-4686-9c85-2d480da45a77, 2d79e279-4b20-4ded-8a0b-f0cf3119f043", + "traceId": "1908d85b5c1541cd84d8e92b9434f364", + "evidence": "bytes=4067, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "checkedAt": "2026-08-08T05:30:32.132Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "仅选择带本轮测试标记的可编辑入库单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085961795368431617?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "000f3486-9356-42b4-b945-530ea61e9a75, ccd3dd8c-a477-4360-ba00-765c3bf54e24", + "traceId": "bb69738d1663411c9e8ea31d266695f7", + "evidence": "tenantId=10001, inboundId=2085961795368431617, status=WAIT_MEASURE", + "checkedAt": "2026-08-08T05:30:32.161Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "读取 OCR 测试前重量工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085961795368431617/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "49ab2ea5-f209-44da-8e71-014ded32280a, da4afcd0-0141-426d-a0e8-94acbd0f0e01", + "traceId": "2d2dac77e3174dab907b6918d17b093f", + "evidence": "inboundId=2085961795368431617", + "checkedAt": "2026-08-08T05:30:32.204Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "测试入库单身份与基线可追踪", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085961795368431617/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "49ab2ea5-f209-44da-8e71-014ded32280a, da4afcd0-0141-426d-a0e8-94acbd0f0e01", + "traceId": "2d2dac77e3174dab907b6918d17b093f", + "evidence": "existingResults=0, baselineWeight=null", + "checkedAt": "2026-08-08T05:30:32.204Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "未认证请求不能上传称重图片", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085961795368431617" + }, + "http": 401, + "code": "A0401", + "message": "未登录或令牌已失效", + "requestId": "07739279-1240", + "traceId": null, + "evidence": "HTTP=401, code=A0401", + "checkedAt": "2026-08-08T05:30:32.226Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "非图片类型被拒绝且不模拟成功", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085961795368431617" + }, + "http": 200, + "code": "A0400", + "message": "称重图片仅支持JPG、PNG、BMP", + "requestId": "4070bde6-28c6-44d9-83f5-06ad1a7a79c9", + "traceId": "1be8c9efb08849ef942cfedc08437015", + "evidence": "HTTP=200, code=A0400", + "checkedAt": "2026-08-08T05:30:32.248Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "超过5MB图片被拒绝", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085961795368431617" + }, + "http": 200, + "code": "A0400", + "message": "称重图片不能超过5MB", + "requestId": "c84fa565-fec0-4a7e-98a1-9083b71322a8", + "traceId": "3b9c8ea337f34df1a0e9043696ba00e1", + "evidence": "HTTP=200, code=A0400", + "checkedAt": "2026-08-08T05:30:32.588Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "上传称重图片并执行 OCR", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085961795368431617" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "dded84f0-3ea6-4c6a-9daf-9fd4e301f871, 68d164db-e618-4da7-85f6-1771cd9e3bdd", + "traceId": "03bff477303f43f995c606b713f2a7b2", + "evidence": "file=orig_1cf27695-b2c3-44b3-98e3-c0be8b80f79a.JPG, size=3701469", + "checkedAt": "2026-08-08T05:30:34.187Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "上传响应保持文件 ID 字符串契约", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085961795368431617" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "dded84f0-3ea6-4c6a-9daf-9fd4e301f871, 68d164db-e618-4da7-85f6-1771cd9e3bdd", + "traceId": "03bff477303f43f995c606b713f2a7b2", + "evidence": "fileIdType=string, status=RECOGNIZED", + "checkedAt": "2026-08-08T05:30:34.187Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "OCR 上传响应字段完整且置信度受限", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085961795368431617" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "dded84f0-3ea6-4c6a-9daf-9fd4e301f871, 68d164db-e618-4da7-85f6-1771cd9e3bdd", + "traceId": "03bff477303f43f995c606b713f2a7b2", + "evidence": "status=RECOGNIZED, hasWeight=true, confidence=0.50972", + "checkedAt": "2026-08-08T05:30:34.187Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "重试当前称重图片 OCR", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085961795368431617/2085961840018915330/recognize" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "532203a9-29e0-4463-8d0d-6c12e9823521, 9a916a75-8ea0-4273-8788-8875d888fb17", + "traceId": "8f781978c877440a84688b9a2ea5a34c", + "evidence": "fileId=2085961840018915330", + "checkedAt": "2026-08-08T05:30:35.040Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "OCR 重试保持文件身份并返回识别契约", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085961795368431617/2085961840018915330/recognize" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "532203a9-29e0-4463-8d0d-6c12e9823521, 9a916a75-8ea0-4273-8788-8875d888fb17", + "traceId": "8f781978c877440a84688b9a2ea5a34c", + "evidence": "sameFile=true, status=RECOGNIZED", + "checkedAt": "2026-08-08T05:30:35.040Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "登记 OCR 原值", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085961795368431617/weight-results?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5e8d3f15-e965-4b9a-aaf6-90e0c4fa5456, c40679b1-6b27-4402-b6b2-556e3e42758b", + "traceId": "0d22d7e7a12e438aae58d8ab37864b3c", + "evidence": "fileId=2085961840018915330", + "checkedAt": "2026-08-08T05:30:35.069Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "重量结果 ID、文件 ID 和初始版本契约正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085961795368431617/weight-results?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5e8d3f15-e965-4b9a-aaf6-90e0c4fa5456, c40679b1-6b27-4402-b6b2-556e3e42758b", + "traceId": "0d22d7e7a12e438aae58d8ab37864b3c", + "evidence": "resultIdType=string, fileIdType=string, version=0", + "checkedAt": "2026-08-08T05:30:35.069Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "鉴权读取原始称重图片", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/measurements/10001/2085961795368431617/2085961840018915330" + }, + "http": 200, + "code": null, + "message": "3701469 bytes (image/jpeg)", + "requestId": "5db08121-f84f-4204-9820-8ef7bcc2ef49, c9382b2b-4104-475d-93d3-7d48a4d71765", + "traceId": "10bc5fdeb6564c15b7dc45053a377fc1", + "evidence": "contentType=image/jpeg, bytes=3701469", + "checkedAt": "2026-08-08T05:30:35.225Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "缩略图返回受限尺寸 JPEG", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/measurements/10001/2085961795368431617/2085961840018915330/thumbnail" + }, + "http": 200, + "code": null, + "message": "18677 bytes (image/jpeg)", + "requestId": "fe8ab915-33fb-4c16-9239-57333ae1a921, a4294880-17a5-4ff3-8fec-61578365009b", + "traceId": "01800c2ee8474360b130991917bea8b2", + "evidence": "contentType=image/jpeg, bytes=18677, dimensions=240x320", + "checkedAt": "2026-08-08T05:30:35.587Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "登记后回查 OCR 重量结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085961795368431617/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ac033eae-a9f8-477f-bb9f-5d5671469fc0, 8fc063f4-0187-4981-9b3c-05bbebae8017", + "traceId": "735c52392ead4f4a8ee650b54a48d8da", + "evidence": "inboundId=2085961795368431617", + "checkedAt": "2026-08-08T05:30:35.607Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "工作区保留本轮 OCR 原值且未覆盖历史结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085961795368431617/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ac033eae-a9f8-477f-bb9f-5d5671469fc0, 8fc063f4-0187-4981-9b3c-05bbebae8017", + "traceId": "735c52392ead4f4a8ee650b54a48d8da", + "evidence": "resultFound=true, baselineCount=0, currentCount=1", + "checkedAt": "2026-08-08T05:30:35.607Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "旧版本确认返回并发冲突", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085961795368431617/weight-results/2085961847025479681/confirm?tenantId=10001" + }, + "http": 200, + "code": "A0409", + "message": "数据版本已变化,请刷新后重试", + "requestId": "1487de30-edfc-4e4f-94d3-4f5edd82e8ba", + "traceId": "a9ff57d91b054728b83cc77f13b963ba", + "evidence": "HTTP=200, code=A0409", + "checkedAt": "2026-08-08T05:30:35.641Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "确认 OCR 重量并计入实际总毛重", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085961795368431617/weight-results/2085961847025479681/confirm?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "952910ee-e065-46c7-9ae5-d703f1216b9e, 1d00676a-4884-4bc8-98a8-2328f9181359", + "traceId": "d5148af53870429e9971a59fcf6d9348", + "evidence": "usedOriginal=true", + "checkedAt": "2026-08-08T05:30:35.685Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "确认结果状态、版本和最终KG正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085961795368431617/weight-results/2085961847025479681/confirm?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "952910ee-e065-46c7-9ae5-d703f1216b9e, 1d00676a-4884-4bc8-98a8-2328f9181359", + "traceId": "d5148af53870429e9971a59fcf6d9348", + "evidence": "status=CONFIRMED, version=1, finalKg=285.5", + "checkedAt": "2026-08-08T05:30:35.685Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "确认后回查实际总毛重", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085961795368431617/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c38a4f20-ed37-400a-ba20-9a4e7497c4d0, d29974cc-48e5-4b8c-8eb8-d31eda60c873", + "traceId": "75df41ac72344403927fe0238c813d4e", + "evidence": "inboundId=2085961795368431617", + "checkedAt": "2026-08-08T05:30:35.721Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "确认后实际总毛重按服务端结果重算", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085961795368431617/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c38a4f20-ed37-400a-ba20-9a4e7497c4d0, d29974cc-48e5-4b8c-8eb8-d31eda60c873", + "traceId": "75df41ac72344403927fe0238c813d4e", + "evidence": "baseline=null, added=285.5, actual=285.5", + "checkedAt": "2026-08-08T05:30:35.721Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "旧版本删除返回并发冲突", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "DELETE", + "path": "/api/platform/v1/first-leg/inbounds/2085961795368431617/weight-results/2085961847025479681?tenantId=10001&version=0" + }, + "http": 200, + "code": "A0409", + "message": "数据版本已变化,请刷新后重试", + "requestId": "3d48722b-b3c3-4e23-89b5-24834320994e", + "traceId": "eca684cbf543439d9f7a4d282f4f80cd", + "evidence": "HTTP=200, code=A0409", + "checkedAt": "2026-08-08T05:30:35.751Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除本轮已确认图片及重量结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "DELETE", + "path": "/api/platform/v1/first-leg/inbounds/2085961795368431617/weight-results/2085961847025479681?tenantId=10001&version=1" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0776e293-a833-4c5a-b8fd-e94d223d27c8, d16c0053-cdc5-4539-9898-dee343806324", + "traceId": "9268902aa3f34b12b65bae953dbe90fa", + "evidence": "resultId=2085961847025479681, version=1", + "checkedAt": "2026-08-08T05:30:35.798Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除后回查重量工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085961795368431617/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6c6ffec1-b871-4412-82c3-ed604d5e367e, 7c74f371-ce16-4a35-85b3-95b346fe6f42", + "traceId": "1aaf2375f369487faafe2583457d9aed", + "evidence": "inboundId=2085961795368431617", + "checkedAt": "2026-08-08T05:30:35.829Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除后结果消失且总毛重恢复基线", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085961795368431617/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6c6ffec1-b871-4412-82c3-ed604d5e367e, 7c74f371-ce16-4a35-85b3-95b346fe6f42", + "traceId": "1aaf2375f369487faafe2583457d9aed", + "evidence": "resultMissing=true, baseline=null, actual=null", + "checkedAt": "2026-08-08T05:30:35.829Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除结果后原始图片不可再读取", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/measurements/10001/2085961795368431617/2085961840018915330" + }, + "http": 200, + "code": "A0404", + "message": "称重图片不存在", + "requestId": "3786abc3-ae08-4389-8ffd-e044b6dd2bf3", + "traceId": "498dcfa276dc4177b22ad21695a49348", + "evidence": "HTTP=200, code=A0404", + "checkedAt": "2026-08-08T05:30:35.858Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "上传称重图片并执行 OCR", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085961795368431617" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a072bb68-516f-476c-94fc-b258bd72a952, 6921830b-f875-4fa6-8560-aa7af9c6d646", + "traceId": "77f54e3134de4cddbcf2dcd478038d82", + "evidence": "file=orig_1cf27695-b2c3-44b3-98e3-c0be8b80f79a.JPG, size=3701469", + "checkedAt": "2026-08-08T05:30:37.132Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "上传响应保持文件 ID 字符串契约", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085961795368431617" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a072bb68-516f-476c-94fc-b258bd72a952, 6921830b-f875-4fa6-8560-aa7af9c6d646", + "traceId": "77f54e3134de4cddbcf2dcd478038d82", + "evidence": "fileIdType=string, status=RECOGNIZED", + "checkedAt": "2026-08-08T05:30:37.132Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "OCR 上传响应字段完整且置信度受限", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/files/measurements/10001/2085961795368431617" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a072bb68-516f-476c-94fc-b258bd72a952, 6921830b-f875-4fa6-8560-aa7af9c6d646", + "traceId": "77f54e3134de4cddbcf2dcd478038d82", + "evidence": "status=RECOGNIZED, hasWeight=true, confidence=0.50972", + "checkedAt": "2026-08-08T05:30:37.132Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "登记人工录入重量结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085961795368431617/weight-results?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6f15cae6-958c-4fb1-9e0b-8eaa63e2b755, c77de556-1d64-4921-a929-d9c2851e5204", + "traceId": "1806dce0977e40b5a70570149d552fb2", + "evidence": "fileId=2085961852366946305", + "checkedAt": "2026-08-08T05:30:37.160Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "重量结果 ID、文件 ID 和初始版本契约正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085961795368431617/weight-results?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6f15cae6-958c-4fb1-9e0b-8eaa63e2b755, c77de556-1d64-4921-a929-d9c2851e5204", + "traceId": "1806dce0977e40b5a70570149d552fb2", + "evidence": "resultIdType=string, fileIdType=string, version=0", + "checkedAt": "2026-08-08T05:30:37.160Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "零重量确认被拒绝", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085961795368431617/weight-results/2085961855799963650/confirm?tenantId=10001" + }, + "http": 200, + "code": "A0422", + "message": "adjustedWeightValue: must be greater than or equal to 0.001", + "requestId": "7d95f742-f16d-4611-aac6-9a08517f9a82", + "traceId": "7153881d6eb94d878df1222391bc0660", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T05:30:37.194Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "零重量确认被拒绝后回查工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085961795368431617/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ef0abf8c-7415-48d5-b6fc-2b435e3d9c5b, 0bc79ded-d001-4be7-b6f1-bf5c378df6e4", + "traceId": "20893c2169ca47fcbd916bdff4a1390b", + "evidence": "inboundId=2085961795368431617", + "checkedAt": "2026-08-08T05:30:37.227Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "零重量确认被拒绝未改变重量结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085961795368431617/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ef0abf8c-7415-48d5-b6fc-2b435e3d9c5b, 0bc79ded-d001-4be7-b6f1-bf5c378df6e4", + "traceId": "20893c2169ca47fcbd916bdff4a1390b", + "evidence": "version=0, status=NEEDS_MANUAL", + "checkedAt": "2026-08-08T05:30:37.227Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "负重量确认被拒绝", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085961795368431617/weight-results/2085961855799963650/confirm?tenantId=10001" + }, + "http": 200, + "code": "A0422", + "message": "adjustedWeightValue: must be greater than or equal to 0.001", + "requestId": "0c959a42-e055-4a8d-817b-9212cf69e800", + "traceId": "ee785178e3d24adb8f820219ca4ed0bf", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T05:30:37.255Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "负重量确认被拒绝后回查工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085961795368431617/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "831817f5-ea4c-4a7e-91d2-52fd23a461c8, f80c7625-e36a-4ba6-991f-420b29e36bba", + "traceId": "85a54814e44644719a046f5580d67111", + "evidence": "inboundId=2085961795368431617", + "checkedAt": "2026-08-08T05:30:37.288Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "负重量确认被拒绝未改变重量结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085961795368431617/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "831817f5-ea4c-4a7e-91d2-52fd23a461c8, f80c7625-e36a-4ba6-991f-420b29e36bba", + "traceId": "85a54814e44644719a046f5580d67111", + "evidence": "version=0, status=NEEDS_MANUAL", + "checkedAt": "2026-08-08T05:30:37.288Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "LB 0.001换算为零后被拒绝", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085961795368431617/weight-results/2085961855799963650/confirm?tenantId=10001" + }, + "http": 200, + "code": "A0422", + "message": "换算后重量不能小于 0.001 KG", + "requestId": "6656e909-2808-4b68-b02b-95148636040a", + "traceId": "d5e4b23e50e44c69925cc0e68e49e22e", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T05:30:37.319Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "LB 0.001换算为零后被拒绝后回查工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085961795368431617/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5555791d-1fc1-4d0d-b367-69f7a1f3fce4, db280d8f-bf2d-4965-9e0b-769cb063b2c8", + "traceId": "30b5af1048dc4aa7bef0cbab70cd4249", + "evidence": "inboundId=2085961795368431617", + "checkedAt": "2026-08-08T05:30:37.349Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "LB 0.001换算为零后被拒绝未改变重量结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085961795368431617/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5555791d-1fc1-4d0d-b367-69f7a1f3fce4, db280d8f-bf2d-4965-9e0b-769cb063b2c8", + "traceId": "30b5af1048dc4aa7bef0cbab70cd4249", + "evidence": "version=0, status=NEEDS_MANUAL", + "checkedAt": "2026-08-08T05:30:37.349Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "超出15位整数重量被拒绝", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085961795368431617/weight-results/2085961855799963650/confirm?tenantId=10001" + }, + "http": 200, + "code": "A0422", + "message": "adjustedWeightValue: numeric value out of bounds (<15 digits>.<3 digits> expected)", + "requestId": "2ab9ddea-5a84-4ab2-814f-ccea7bbb3b4e", + "traceId": "5941b488c92e4618ab7c1547c5749787", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T05:30:37.380Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "超出15位整数重量被拒绝后回查工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085961795368431617/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "701cf19b-9420-4d29-b037-6aa37f40fb58, 7b3006dd-a202-4ace-96f8-dfd91316673d", + "traceId": "7eeee511a9d44b82ac15342a99373e12", + "evidence": "inboundId=2085961795368431617", + "checkedAt": "2026-08-08T05:30:37.412Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "超出15位整数重量被拒绝未改变重量结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085961795368431617/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "701cf19b-9420-4d29-b037-6aa37f40fb58, 7b3006dd-a202-4ace-96f8-dfd91316673d", + "traceId": "7eeee511a9d44b82ac15342a99373e12", + "evidence": "version=0, status=NEEDS_MANUAL", + "checkedAt": "2026-08-08T05:30:37.413Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "人工改重与确认原子完成", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085961795368431617/weight-results/2085961855799963650/confirm?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d70bde44-7044-4f50-aecb-384152e92537, d9545863-e034-4416-8eb8-051b1c80416e", + "traceId": "a8ad665762674b929cac580851ae5e1c", + "evidence": "adjusted=10.125 LB", + "checkedAt": "2026-08-08T05:30:37.454Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "LB 人工改重保留输入并正确换算最终KG", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085961795368431617/weight-results/2085961855799963650/confirm?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d70bde44-7044-4f50-aecb-384152e92537, d9545863-e034-4416-8eb8-051b1c80416e", + "traceId": "a8ad665762674b929cac580851ae5e1c", + "evidence": "adjusted=10.125 LB, finalKg=4.593, expectedKg=4.593", + "checkedAt": "2026-08-08T05:30:37.454Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除本轮人工改重图片及结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "DELETE", + "path": "/api/platform/v1/first-leg/inbounds/2085961795368431617/weight-results/2085961855799963650?tenantId=10001&version=2" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e4b185c9-6866-40b6-824d-b3010d391354, ac727bd2-3ca5-48af-bb3e-a75f22bcec43", + "traceId": "a41e40c56c2e4d25a87f0ec740eda36a", + "evidence": "resultId=2085961855799963650, version=2", + "checkedAt": "2026-08-08T05:30:37.492Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除后回查重量工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085961795368431617/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "adf7b41d-6eb1-4eca-8776-fa2bfa415841, 4392bf62-52bd-4896-9475-5a567d8480b7", + "traceId": "eb09144a64754186a7b4ddc00c1f68af", + "evidence": "inboundId=2085961795368431617", + "checkedAt": "2026-08-08T05:30:37.521Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除后结果消失且总毛重恢复基线", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085961795368431617/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "adf7b41d-6eb1-4eca-8776-fa2bfa415841, 4392bf62-52bd-4896-9475-5a567d8480b7", + "traceId": "eb09144a64754186a7b4ddc00c1f68af", + "evidence": "resultMissing=true, baseline=null, actual=null", + "checkedAt": "2026-08-08T05:30:37.522Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "删除结果后原始图片不可再读取", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/measurements/10001/2085961795368431617/2085961852366946305" + }, + "http": 200, + "code": "A0404", + "message": "称重图片不存在", + "requestId": "0715a146-de15-4fb9-9f52-7d508dcc76d1", + "traceId": "eb158926f58f4053a162870a45423224", + "evidence": "HTTP=200, code=A0404", + "checkedAt": "2026-08-08T05:30:37.555Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "最终清理后回查重量工作区", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085961795368431617/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9f31659f-1398-49be-a094-3dfe18be86d3, e3ca7480-11a4-4deb-9324-7013785f998e", + "traceId": "519e725eb59c4fd7b8a0b985aea9a13b", + "evidence": "inboundId=2085961795368431617", + "checkedAt": "2026-08-08T05:30:37.584Z" + }, + { + "module": "inbound-weight-ocr", + "scenario": "weight-image-recognition-and-confirmation", + "name": "仅清理本轮结果且订单总毛重恢复运行前基线", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085961795368431617/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9f31659f-1398-49be-a094-3dfe18be86d3, e3ca7480-11a4-4deb-9324-7013785f998e", + "traceId": "519e725eb59c4fd7b8a0b985aea9a13b", + "evidence": "leftovers=0, baseline=null, actual=null", + "checkedAt": "2026-08-08T05:30:37.584Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 测试账号登录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/auth/login" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ae42eadf-b475-4008-90da-4335bf849214, 48c39382-c750-4c5b-9ebd-17055069081b", + "traceId": "9fd80bc514554331b44a4a94717c94aa", + "evidence": "username=merchant_admin", + "checkedAt": "2026-08-08T05:30:37.925Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询当前企业资料", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/iam/tenant/profile" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "67bf32e1-5b92-41af-8394-0b367d9d86ae, 72fed51e-c9df-4485-8d85-cb85365bd051", + "traceId": "ee93124a8a434d039bdc97303044bda7", + "evidence": "", + "checkedAt": "2026-08-08T05:30:37.954Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 测试企业已审核且客户 ID 有效", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/iam/tenant/profile" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "67bf32e1-5b92-41af-8394-0b367d9d86ae, 72fed51e-c9df-4485-8d85-cb85365bd051", + "traceId": "ee93124a8a434d039bdc97303044bda7", + "evidence": "tenantId=10001, status=ACTIVE", + "checkedAt": "2026-08-08T05:30:37.954Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询客户固定箱型", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8cac85de-d963-4722-b496-f88b41a38892, 47af7e1a-97fc-4fa0-8fb7-7ebc91bfb75a", + "traceId": "4b4c7f21ec3440a0b8bd77e8547c18db", + "evidence": "tenantId=10001", + "checkedAt": "2026-08-08T05:30:37.984Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "固定四箱型顺序、内径及每边加2cm正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/customer-dimension-config?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8cac85de-d963-4722-b496-f88b41a38892, 47af7e1a-97fc-4fa0-8fb7-7ebc91bfb75a", + "traceId": "4b4c7f21ec3440a0b8bd77e8547c18db", + "evidence": "types=SMALL,MEDIUM,LARGE,EXTRA_LARGE", + "checkedAt": "2026-08-08T05:30:37.984Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询国内收货仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=DOMESTIC" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6db11f82-af0f-4592-b0c6-0e176b80b702, 47d4f59a-947a-47cb-9dfd-aac80e94b883", + "traceId": "f64d59ebca4e4f2fa46ac5fb5616fb5d", + "evidence": "", + "checkedAt": "2026-08-08T05:30:38.016Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在可用国内收货仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=DOMESTIC" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6db11f82-af0f-4592-b0c6-0e176b80b702, 47d4f59a-947a-47cb-9dfd-aac80e94b883", + "traceId": "f64d59ebca4e4f2fa46ac5fb5616fb5d", + "evidence": "count=2", + "checkedAt": "2026-08-08T05:30:38.016Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询 FBA 目的仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=FBA" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "147d5826-9aec-419c-8751-f66a93012260, 195baa7d-9f43-4e31-a017-d01e35b6e254", + "traceId": "695c647ab0714ad985a9948e4c36d201", + "evidence": "", + "checkedAt": "2026-08-08T05:30:38.073Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在可用 FBA 目的仓", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/warehouses?page=1&size=200&status=ACTIVE&warehouseType=FBA" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "147d5826-9aec-419c-8751-f66a93012260, 195baa7d-9f43-4e31-a017-d01e35b6e254", + "traceId": "695c647ab0714ad985a9948e4c36d201", + "evidence": "count=200", + "checkedAt": "2026-08-08T05:30:38.073Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询可用计费渠道", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/first-leg/pricing/channels?originWarehouseId=193000000000200001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "94a01d79-ecec-43a4-bd30-095c5a9160ad, 4e89ab56-da7a-46f4-959b-220d28d5a8b7", + "traceId": "90b6ac0b2bf44c8cb5b51280b6d795d3", + "evidence": "", + "checkedAt": "2026-08-08T05:30:38.110Z" + }, + { + "module": "orders", + "scenario": null, + "name": "存在带计价税制的可用渠道", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/first-leg/pricing/channels?originWarehouseId=193000000000200001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "94a01d79-ecec-43a4-bd30-095c5a9160ad, 4e89ab56-da7a-46f4-959b-220d28d5a8b7", + "traceId": "90b6ac0b2bf44c8cb5b51280b6d795d3", + "evidence": "count=15", + "checkedAt": "2026-08-08T05:30:38.111Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询发货客户候选", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/partners/candidates?type=SHIPPER" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "09d6b300-723a-49f7-a271-14bc7645074b, 87c7c06a-566a-47fd-9c2d-3646aa25071e", + "traceId": "33eb4963af1d44968691bf29590d0ab0", + "evidence": "", + "checkedAt": "2026-08-08T05:30:38.139Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 上传产品图片", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/files/product-images" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7d6916cc-0057-4e51-8253-b87eeb63b456, c4003dca-d7dd-460b-b738-7f70fca5f022", + "traceId": "ccdefbc174784428a314453369403635", + "evidence": "contentType=image/png", + "checkedAt": "2026-08-08T05:30:38.168Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "产品图片上传返回字符串文件 ID", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/files/product-images" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7d6916cc-0057-4e51-8253-b87eeb63b456, c4003dca-d7dd-460b-b738-7f70fca5f022", + "traceId": "ccdefbc174784428a314453369403635", + "evidence": "fileIdType=string, contentType=image/png", + "checkedAt": "2026-08-08T05:30:38.168Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 可下载本轮产品图片", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/files/product-images/2085961860013162497" + }, + "http": 200, + "code": null, + "message": null, + "requestId": "e294e27c-0850-4924-9370-3c57c8ea2323, 733753c1-7f99-42aa-a045-31f0e376fb2b", + "traceId": "67fbe733849b494983d3b51238c642aa", + "evidence": "bytes=68, contentType=image/png", + "checkedAt": "2026-08-08T05:30:38.199Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Client 创建四箱型隔离订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "22daf0ad-cbbe-4afc-aed4-cd9f8fcf4679, 781adc29-93a4-4f83-9f96-61099fbc2f96", + "traceId": "532b4788ae044fcdaa3d6adb41cf6623", + "evidence": "marker=ADMIN-API-20260808053015762-MOJIA", + "checkedAt": "2026-08-08T05:30:38.259Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 创建订单幂等重放", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1d6b6185-4377-45b4-ace8-58ca6ae1faf8, 2b80b96e-7dd0-4685-bf67-3361f8eb0dd0", + "traceId": "29db631156bd490fb9aa79f228c0fb06", + "evidence": "", + "checkedAt": "2026-08-08T05:30:38.297Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 创建幂等结果一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1d6b6185-4377-45b4-ace8-58ca6ae1faf8, 2b80b96e-7dd0-4685-bf67-3361f8eb0dd0", + "traceId": "29db631156bd490fb9aa79f228c0fb06", + "evidence": "orderId=2085961860365484033, replayedId=2085961860365484033", + "checkedAt": "2026-08-08T05:30:38.297Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 查询隔离订单草稿", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085961860365484033" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c165aa15-5f80-4749-a2c8-9f2ae34faa9a, 5f754322-edd4-4b1a-8e17-a1901f11e490", + "traceId": "ba94ba12e1a94305b9f33bc651f5536d", + "evidence": "", + "checkedAt": "2026-08-08T05:30:38.324Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 草稿身份、marker 和状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085961860365484033" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c165aa15-5f80-4749-a2c8-9f2ae34faa9a, 5f754322-edd4-4b1a-8e17-a1901f11e490", + "traceId": "ba94ba12e1a94305b9f33bc651f5536d", + "evidence": "orderNo=FL2085961860365484033, status=DRAFT", + "checkedAt": "2026-08-08T05:30:38.324Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "四箱型产品字段及图片契约完整回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085961860365484033" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c165aa15-5f80-4749-a2c8-9f2ae34faa9a, 5f754322-edd4-4b1a-8e17-a1901f11e490", + "traceId": "ba94ba12e1a94305b9f33bc651f5536d", + "evidence": "cargoes=4, imageFileId=2085961860013162497", + "checkedAt": "2026-08-08T05:30:38.324Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 提交隔离订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/merchant/v1/orders/first-leg/2085961860365484033/submit" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7fcba00b-5f01-4794-bf38-8f7306ae2c1a, d94f885b-2cc6-4e8f-a77a-f8b22b9b178c", + "traceId": "7dce7950982a42159f481439c414827e", + "evidence": "orderId=2085961860365484033", + "checkedAt": "2026-08-08T05:30:38.385Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 回查已提交订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085961860365484033" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9ab3b175-7ca6-4f76-baef-6480af79a6c4, 066a8a67-5535-4fc6-b18e-c45e189b1ee9", + "traceId": "12cd827b5b7b4572b3ab31a7f7560b97", + "evidence": "", + "checkedAt": "2026-08-08T05:30:38.418Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Client 订单已进入待审核状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/merchant/v1/orders/first-leg/2085961860365484033" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9ab3b175-7ca6-4f76-baef-6480af79a6c4, 066a8a67-5535-4fc6-b18e-c45e189b1ee9", + "traceId": "12cd827b5b7b4572b3ab31a7f7560b97", + "evidence": "status=SUBMITTED", + "checkedAt": "2026-08-08T05:30:38.418Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询统一订单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders?page=1&size=100&tenantId=10001&orderNo=FL2085961860365484033" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d68cdeaf-ebe9-4916-ad2d-5afdac22e6f7, ff1cb91d-93f8-4bd3-84c5-3e2e7cb996bb", + "traceId": "2211b040115d4e778064a76510d23c4d", + "evidence": "", + "checkedAt": "2026-08-08T05:30:38.457Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 统一订单列表只核对本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders?page=1&size=100&tenantId=10001&orderNo=FL2085961860365484033" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d68cdeaf-ebe9-4916-ad2d-5afdac22e6f7, ff1cb91d-93f8-4bd3-84c5-3e2e7cb996bb", + "traceId": "2211b040115d4e778064a76510d23c4d", + "evidence": "orderId=2085961860365484033, found=true", + "checkedAt": "2026-08-08T05:30:38.457Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询统一订单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085961860365484033?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "73ea3f98-58ae-4859-ac90-d9c388c8d6ae, 7fef4bc0-b531-4a82-a19b-05332c9b5273", + "traceId": "dcc392c1acf44e2584589dad2d39a2cf", + "evidence": "", + "checkedAt": "2026-08-08T05:30:38.496Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 统一订单详情身份与待审核状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085961860365484033?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "73ea3f98-58ae-4859-ac90-d9c388c8d6ae, 7fef4bc0-b531-4a82-a19b-05332c9b5273", + "traceId": "dcc392c1acf44e2584589dad2d39a2cf", + "evidence": "mainStatus=PENDING_REVIEW, timeline=2", + "checkedAt": "2026-08-08T05:30:38.496Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询头程订单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg?tenantId=10001&keyword=FL2085961860365484033&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8c140c42-f1e2-439d-a423-bb6e098c0eb3, 3293c42f-a9e8-48c7-9c37-efaf35b01adb", + "traceId": "73cb352f172c4e878d91e78375b0f56a", + "evidence": "", + "checkedAt": "2026-08-08T05:30:38.527Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 头程订单列表只核对本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg?tenantId=10001&keyword=FL2085961860365484033&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8c140c42-f1e2-439d-a423-bb6e098c0eb3, 3293c42f-a9e8-48c7-9c37-efaf35b01adb", + "traceId": "73cb352f172c4e878d91e78375b0f56a", + "evidence": "orderId=2085961860365484033, found=true", + "checkedAt": "2026-08-08T05:30:38.527Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询头程订单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085961860365484033?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7fc2824c-0515-45b2-a808-bfe986286753, b6d29f3e-783e-4bfd-9b44-81305908a1aa", + "traceId": "ae2e0526f85c46719941f6b6e946e4d1", + "evidence": "", + "checkedAt": "2026-08-08T05:30:38.559Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 头程订单详情聚合结构完整", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085961860365484033?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7fc2824c-0515-45b2-a808-bfe986286753, b6d29f3e-783e-4bfd-9b44-81305908a1aa", + "traceId": "ae2e0526f85c46719941f6b6e946e4d1", + "evidence": "cargoes=4, history=2", + "checkedAt": "2026-08-08T05:30:38.559Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "四箱型产品字段及图片契约完整回显", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085961860365484033?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7fc2824c-0515-45b2-a808-bfe986286753, b6d29f3e-783e-4bfd-9b44-81305908a1aa", + "traceId": "ae2e0526f85c46719941f6b6e946e4d1", + "evidence": "cargoes=4, imageFileId=2085961860013162497", + "checkedAt": "2026-08-08T05:30:38.559Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 为本轮订单添加内部备注", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085961860365484033/internal-notes?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9f498b2c-7696-482f-97ef-b7a870ce8154, 2b40d109-13a1-4d27-8480-a995b0584859", + "traceId": "9a7b93033dce4809a9d9e8e3248e3b90", + "evidence": "", + "checkedAt": "2026-08-08T05:30:38.591Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 审核通过本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085961860365484033/approve?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "795edc42-1646-4e9b-a04e-35b36e0e4b58, a3bea6fa-6c54-47b3-9172-b71a6d485c28", + "traceId": "ff89b9baa65d446da782dfe0aa7210cc", + "evidence": "orderId=2085961860365484033", + "checkedAt": "2026-08-08T05:30:38.625Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "审核后生成隔离入库单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/2085961860365484033?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "e0d6c2e3-98ee-4e8a-a75d-df40b7776776, 4b2240e3-a3b3-4ec8-9480-1fd1b59f4c36", + "traceId": "f646deef8622475ab1fcba8fcf638444", + "evidence": "inboundId=2085961870979149826", + "checkedAt": "2026-08-08T05:30:41.811Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询本轮入库单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085961870979149826?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "25448885-bf98-4998-864c-db9396ab751d, 1c5f7806-bee3-49f3-9dd2-c254168798a0", + "traceId": "857ef85e541543aaa3dbe936501bd5f2", + "evidence": "inboundId=2085961870979149826", + "checkedAt": "2026-08-08T05:30:41.847Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "隔离入库单 marker 来源与可测量状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085961870979149826?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "25448885-bf98-4998-864c-db9396ab751d, 1c5f7806-bee3-49f3-9dd2-c254168798a0", + "traceId": "857ef85e541543aaa3dbe936501bd5f2", + "evidence": "markerFound=true, status=WAIT_MEASURE", + "checkedAt": "2026-08-08T05:30:41.847Z" + }, + { + "module": "orders", + "scenario": null, + "name": "入库单详情包含托盘库位、文件、备注和状态历史", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085961870979149826?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "25448885-bf98-4998-864c-db9396ab751d, 1c5f7806-bee3-49f3-9dd2-c254168798a0", + "traceId": "857ef85e541543aaa3dbe936501bd5f2", + "evidence": "inboundId=2085961870979149826, history=1", + "checkedAt": "2026-08-08T05:30:41.847Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询入库单列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds?tenantId=10001&inboundCode=RK-2085961860365484033&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8044440e-d06f-4bd9-9925-aaec1bf23b08, 7008af57-f7a1-4722-9ee4-78f94344c979", + "traceId": "d53e5d35aaf9424ab15d74dcb02aaa18", + "evidence": "", + "checkedAt": "2026-08-08T05:30:41.874Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 入库单列表只核对本轮入库单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds?tenantId=10001&inboundCode=RK-2085961860365484033&page=1&size=100" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "8044440e-d06f-4bd9-9925-aaec1bf23b08, 7008af57-f7a1-4722-9ee4-78f94344c979", + "traceId": "d53e5d35aaf9424ab15d74dcb02aaa18", + "evidence": "inboundId=2085961870979149826, total=1", + "checkedAt": "2026-08-08T05:30:41.874Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "Admin 查询本轮订单履约任务", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/by-order/2085961860365484033?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "840df50e-6919-45d5-b3dc-f89b8dd01c71, cb16bfe5-4364-4e4f-a8ed-8e5e05a10748", + "traceId": "6fe480f9d9d14a60a53aaa94bd8a02ab", + "evidence": "新订单应生成可查询的履约任务", + "checkedAt": "2026-08-08T05:30:41.894Z" + }, + { + "module": "orders", + "scenario": "isolated-order-chain", + "name": "履约任务与本轮订单和客户一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/by-order/2085961860365484033?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "840df50e-6919-45d5-b3dc-f89b8dd01c71, cb16bfe5-4364-4e4f-a8ed-8e5e05a10748", + "traceId": "6fe480f9d9d14a60a53aaa94bd8a02ab", + "evidence": "taskId=2085961870966566914, status=PENDING_ASSIGNMENT", + "checkedAt": "2026-08-08T05:30:41.894Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 查询本轮履约任务分配历史", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/2085961870966566914/assignment-history?tenantId=10001&page=1&size=20" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c17d7873-a8d3-4ca4-8a20-91932f3343a8, f05fe15d-69df-4ef8-96fc-e1434e4432c1", + "traceId": "2255f030afa84d6fb20219d545bcf60d", + "evidence": "", + "checkedAt": "2026-08-08T05:30:41.913Z" + }, + { + "module": "orders", + "scenario": null, + "name": "履约分配历史分页结构正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/tasks/2085961870966566914/assignment-history?tenantId=10001&page=1&size=20" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c17d7873-a8d3-4ca4-8a20-91932f3343a8, f05fe15d-69df-4ef8-96fc-e1434e4432c1", + "traceId": "2255f030afa84d6fb20219d545bcf60d", + "evidence": "taskId=2085961870966566914, total=0", + "checkedAt": "2026-08-08T05:30:41.913Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 受理本轮订单", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085961860365484033/accept?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9108704d-788b-40db-a312-542032a245b3, 4718a833-8385-4b34-a078-3286010f44b7", + "traceId": "bc010dce47c84637aec98e070d9bb355", + "evidence": "", + "checkedAt": "2026-08-08T05:30:41.945Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 启动本轮订单履约", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/orders/first-leg/2085961860365484033/start?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "95391b2a-a5ec-42c0-b4a7-4d2a49e58134, b338e290-9c18-4afd-934a-ea64e88f5c18", + "traceId": "68ec6e533c434846a87e4cd86dcc2d70", + "evidence": "", + "checkedAt": "2026-08-08T05:30:41.979Z" + }, + { + "module": "orders", + "scenario": null, + "name": "Admin 回查本轮订单履约状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085961860365484033?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5a1f60aa-101f-45aa-b080-9ed9ed833142, 31412a2f-78da-4be6-8a82-9822be1548fc", + "traceId": "baaef0b65fe34941ab67af027138c19c", + "evidence": "", + "checkedAt": "2026-08-08T05:30:42.003Z" + }, + { + "module": "orders", + "scenario": null, + "name": "本轮订单已进入处理中且保留状态历史", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/first-leg/2085961860365484033?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5a1f60aa-101f-45aa-b080-9ed9ed833142, 31412a2f-78da-4be6-8a82-9822be1548fc", + "traceId": "baaef0b65fe34941ab67af027138c19c", + "evidence": "status=PROCESSING, history=5", + "checkedAt": "2026-08-08T05:30:42.003Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "查询隔离入库单详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085961870979149826?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "03494625-3ee4-45e5-bfc9-9c2549432853, 560b51bd-e52a-4a37-a370-5a25e292016f", + "traceId": "d9405f8527e44538b3a12ad3596ab555", + "evidence": "inboundId=2085961870979149826, tenantId=10001", + "checkedAt": "2026-08-08T05:30:42.035Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "隔离入库单身份与可测量状态正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085961870979149826?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "03494625-3ee4-45e5-bfc9-9c2549432853, 560b51bd-e52a-4a37-a370-5a25e292016f", + "traceId": "d9405f8527e44538b3a12ad3596ab555", + "evidence": "identity=true, status=WAIT_MEASURE", + "checkedAt": "2026-08-08T05:30:42.035Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "生成箱唛 PDF 并冻结稳定箱码", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/inbounds/2085961870979149826/carton-label-pdf?tenantId=10001" + }, + "http": 200, + "code": null, + "message": "13790 bytes (application/pdf)", + "requestId": "6ffa1282-d3e9-46f3-ba71-53d2f0f50747, 749a50d1-0a2e-4d2b-adcb-ac186272c563, 927abcbf-0cb8-4254-a2f8-e9ebb92bc467", + "traceId": "b73c258fc1ec4cc3bd14366453e22cd9, 41b269cd06cc497d8c41282b373d771f", + "evidence": "contentType=application/pdf, bytes=13790", + "checkedAt": "2026-08-08T05:30:42.155Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "首次打印后回查冻结箱数", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085961870979149826?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5ac64008-1dd0-4034-9960-ad4c9efbed81, 251b3a3c-75da-413d-ba3c-f020d7c01f35", + "traceId": "aab9d88e04c342f5b848e622c3d2882f", + "evidence": "", + "checkedAt": "2026-08-08T05:30:42.188Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "首次打印按订单货物冻结原始总箱数", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085961870979149826?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5ac64008-1dd0-4034-9960-ad4c9efbed81, 251b3a3c-75da-413d-ba3c-f020d7c01f35", + "traceId": "aab9d88e04c342f5b848e622c3d2882f", + "evidence": "inboundCodeStable=true, totalPackageCount=4", + "checkedAt": "2026-08-08T05:30:42.188Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "重复整单打印复用已冻结箱码映射", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/inbounds/2085961870979149826/carton-label-pdf?tenantId=10001" + }, + "http": 200, + "code": null, + "message": "13790 bytes (application/pdf)", + "requestId": "839d09f0-bb5d-481c-b7f2-391673b15e02, 27c0d686-d29e-4260-99b3-49589f2a824a, 0740cec7-b08b-4f8c-8007-a5b3284209df", + "traceId": "e5e7fa4f5e904d0ab96b0becfe4ceea2, fef07b21a38f4d58a93de3e89a0e1311", + "evidence": "boxCode=RK-2085961860365484033#4-1, contentType=application/pdf, bytes=13790", + "checkedAt": "2026-08-08T05:30:42.303Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "指定第1箱补打复用已冻结箱码映射", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/inbounds/2085961870979149826/carton-label-pdf?tenantId=10001&cartonIndex=1" + }, + "http": 200, + "code": null, + "message": "7702 bytes (application/pdf)", + "requestId": "3222c77f-0993-4577-8c1f-0ba034734ea8, 74187114-e7db-47e5-bac6-7fe8d551cbdd, 3d422d97-a3ed-4173-9520-a3ba69810324", + "traceId": "0e377e493406413084211f3a8da65f68, 606ad0d10ce24887be96f292a09c13d7", + "evidence": "boxCode=RK-2085961860365484033#4-1, cartonIndex=1, contentType=application/pdf, bytes=7702", + "checkedAt": "2026-08-08T05:30:42.424Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "模拟墨家首次扫描单箱", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085961870979149826/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b470682e-2b62-4ac4-a18c-dc2031bb0bf7, 5ed300fc-2ca5-47f4-b4ec-a7724a318273", + "traceId": "fa1cb0e8e42d48ccab10571c5cba3042", + "evidence": "boxCode=RK-2085961860365484033#4-1, machineNo=MJ-ADMIN-E2E-01", + "checkedAt": "2026-08-08T05:30:42.478Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "首次扫描新增一条且默认代表1箱", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085961870979149826/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b470682e-2b62-4ac4-a18c-dc2031bb0bf7, 5ed300fc-2ca5-47f4-b4ec-a7724a318273", + "traceId": "fa1cb0e8e42d48ccab10571c5cba3042", + "evidence": "created=true, confirmedPackageCount=1", + "checkedAt": "2026-08-08T05:30:42.478Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "重复打印及指定箱补打后原箱码仍可解析", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085961870979149826/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b470682e-2b62-4ac4-a18c-dc2031bb0bf7, 5ed300fc-2ca5-47f4-b4ec-a7724a318273", + "traceId": "fa1cb0e8e42d48ccab10571c5cba3042", + "evidence": "boxCodeStable=true, resolvedInboundId=2085961870979149826", + "checkedAt": "2026-08-08T05:30:42.478Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "查询箱级测量详情", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085961870979149826/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d5f9e0cf-9f28-4524-91d7-edf12fd7db9d, 221e6526-60bb-4b3d-9f22-8d77ab76a08b", + "traceId": "7c1284c956c24024935c6031abaa3cab", + "evidence": "measurementId=2085961878092689409", + "checkedAt": "2026-08-08T05:30:42.501Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "箱级查询回显箱码、尺寸、图片与设备信息", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085961870979149826/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d5f9e0cf-9f28-4524-91d7-edf12fd7db9d, 221e6526-60bb-4b3d-9f22-8d77ab76a08b", + "traceId": "7c1284c956c24024935c6031abaa3cab", + "evidence": "itemFound=true, imageFileId=2085961878052864002", + "checkedAt": "2026-08-08T05:30:42.501Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "人工确认当前测量代表箱数", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/inbounds/2085961870979149826/measurement/items/2085961878096883714/confirmed-package-count?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "88b3419f-969f-4050-bc47-64e47448f7e6, 5d7c7941-1491-43ad-a2fd-f575c0be383a", + "traceId": "f1661ca623a54c4f978ca476046aab57", + "evidence": "confirmedPackageCount=4", + "checkedAt": "2026-08-08T05:30:42.538Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "人工箱数更新且测量版本递增", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/inbounds/2085961870979149826/measurement/items/2085961878096883714/confirmed-package-count?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "88b3419f-969f-4050-bc47-64e47448f7e6, 5d7c7941-1491-43ad-a2fd-f575c0be383a", + "traceId": "f1661ca623a54c4f978ca476046aab57", + "evidence": "version=2", + "checkedAt": "2026-08-08T05:30:42.539Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "同箱号重新扫描覆盖当前记录", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085961870979149826/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "53ec6ad7-4c3f-46f6-a4b6-2f7c29389fb6, 9d5edda1-bef8-45d5-a430-cb9e7d91fdd5", + "traceId": "3e752a1c0b6b427e83f91a26e5af0f7b", + "evidence": "boxCode=RK-2085961860365484033#4-1, machineNo=MJ-ADMIN-E2E-02", + "checkedAt": "2026-08-08T05:30:42.598Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "覆盖保留同一条记录和人工箱数", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085961870979149826/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "53ec6ad7-4c3f-46f6-a4b6-2f7c29389fb6, 9d5edda1-bef8-45d5-a430-cb9e7d91fdd5", + "traceId": "3e752a1c0b6b427e83f91a26e5af0f7b", + "evidence": "sameItem=true, confirmedPackageCount=4", + "checkedAt": "2026-08-08T05:30:42.598Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "回查覆盖后的尺寸与体积结果", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085961870979149826/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "bd923b7a-bb5d-42d2-94df-caa1dcc4a13f, dea6e7e0-421e-422c-9366-41f8c41d7bf3", + "traceId": "b39182b495cc4861a61c68666bdfee37", + "evidence": "", + "checkedAt": "2026-08-08T05:30:42.663Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "覆盖尺寸、箱数和服务端体积公式正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085961870979149826/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "bd923b7a-bb5d-42d2-94df-caa1dcc4a13f, dea6e7e0-421e-422c-9366-41f8c41d7bf3", + "traceId": "b39182b495cc4861a61c68666bdfee37", + "evidence": "weightedOuter=64x54x54, unitVolume=0.187, totalVolume=0.748, volumeWeight=124.916, girth=204.5", + "checkedAt": "2026-08-08T05:30:42.663Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "保存同一测量批次草稿", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/inbounds/2085961870979149826/measurement/draft?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7d8a70b0-9a34-4fb2-afe0-cfe3330ae736, 22e003aa-5fb6-4ead-8c99-08566e3011d8", + "traceId": "ec903e21f248441397b47ed44195c835", + "evidence": "measurementId=2085961878092689409, items=1", + "checkedAt": "2026-08-08T05:30:42.714Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "草稿沿用批次并递增版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "PUT", + "path": "/api/platform/v1/first-leg/inbounds/2085961870979149826/measurement/draft?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "7d8a70b0-9a34-4fb2-afe0-cfe3330ae736, 22e003aa-5fb6-4ead-8c99-08566e3011d8", + "traceId": "ec903e21f248441397b47ed44195c835", + "evidence": "status=DRAFT, version=4", + "checkedAt": "2026-08-08T05:30:42.714Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "提交测量审核", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085961870979149826/measurement/submit?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d2baa2a1-86ff-428f-b322-63a458889506, 2ad59c45-c39e-4fdc-9f95-24ce527058d6", + "traceId": "4e5ea63c2359463faaeb5f949cfacf5d", + "evidence": "measurementId=2085961878092689409", + "checkedAt": "2026-08-08T05:30:42.758Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "提交后进入待测量审核状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085961870979149826/measurement/submit?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d2baa2a1-86ff-428f-b322-63a458889506, 2ad59c45-c39e-4fdc-9f95-24ce527058d6", + "traceId": "4e5ea63c2359463faaeb5f949cfacf5d", + "evidence": "processStatus=MEASURE_PENDING, reviewStatus=PENDING", + "checkedAt": "2026-08-08T05:30:42.758Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "测量提交后拒绝设备覆盖并返回中文提示", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/first-leg/inbounds/2085961870979149826/measurement/carton-scans?tenantId=10001" + }, + "http": 200, + "code": "A0409", + "message": "测量已提交,设备不能新增或覆盖数据", + "requestId": "e2394116-fe68-43b9-9257-6c649e535d7a", + "traceId": "ee1795ce2bff44ad9d841aeba6ca0a41", + "evidence": "HTTP=200, code=A0409, chineseMessage=true", + "checkedAt": "2026-08-08T05:30:42.792Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "审核前读取最新入库单版本", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085961870979149826?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1a44081b-077b-4eb8-a6dd-84d930bb55a4, 1f8028e0-80da-4d2d-bde8-453b799d08a2", + "traceId": "72e2b8d74d0b401f88afe7871df1ec2f", + "evidence": "", + "checkedAt": "2026-08-08T05:30:42.824Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "审核前状态和版本有效", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/inbounds/2085961870979149826?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "1a44081b-077b-4eb8-a6dd-84d930bb55a4, 1f8028e0-80da-4d2d-bde8-453b799d08a2", + "traceId": "72e2b8d74d0b401f88afe7871df1ec2f", + "evidence": "status=MEASURE_PENDING, version=1", + "checkedAt": "2026-08-08T05:30:42.824Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "Admin 审核通过墨家测量", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "POST", + "path": "/api/platform/v1/inbounds/2085961870979149826/measurements/approve?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c8ec067c-54bc-41ae-9d0f-29391cd057f1, b9c6c992-5156-4c64-85e1-89b56210c170", + "traceId": "fc406baabe6942258b45d7e8e523d7ad", + "evidence": "measurementId=2085961878092689409", + "checkedAt": "2026-08-08T05:30:42.866Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "查询审核后的最终测量状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085961870979149826/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c814ede5-8d98-492a-9f26-2a99c27bdda1, 7aa96525-ac54-4e49-a556-d5e6cd627485", + "traceId": "f03a0308d4df40b7bf945059ab5a1e43", + "evidence": "", + "checkedAt": "2026-08-08T05:30:42.899Z" + }, + { + "module": "inbound-measurement", + "scenario": "mojia-carton-measurement", + "name": "审核后入库与测量状态闭环且结果未变化", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/inbounds/2085961870979149826/measurement?tenantId=10001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c814ede5-8d98-492a-9f26-2a99c27bdda1, 7aa96525-ac54-4e49-a556-d5e6cd627485", + "traceId": "f03a0308d4df40b7bf945059ab5a1e43", + "evidence": "processStatus=INBOUNDED, measurementStatus=APPROVED, packages=4", + "checkedAt": "2026-08-08T05:30:42.899Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "order-service 状态响应使用统一成功体", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "730f5fa5-dac8-4d89-80e8-11936dc00376, 0417117f-8e68-466f-8dc5-cf69aca46f8c", + "traceId": "11aee24831c74fc2ae012215b200eee3", + "evidence": "HTTP=200, code=200", + "checkedAt": "2026-08-08T05:30:42.926Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "order-service 状态字段完整且 readiness 语义明确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "730f5fa5-dac8-4d89-80e8-11936dc00376, 0417117f-8e68-466f-8dc5-cf69aca46f8c", + "traceId": "11aee24831c74fc2ae012215b200eee3", + "evidence": "service=order-service, status=UP, readiness=UP", + "checkedAt": "2026-08-08T05:30:42.926Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "firstleg-service 状态响应使用统一成功体", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "bb5b1ee5-a224-4793-a27f-2fb08c49a626, 9887140f-c828-4d81-8d22-03bfbd7b7ee4", + "traceId": "1012c0c889164436894ec3cf0e537ac3", + "evidence": "HTTP=200, code=200", + "checkedAt": "2026-08-08T05:30:42.962Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "firstleg-service 状态字段完整且 readiness 语义明确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/first-leg/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "bb5b1ee5-a224-4793-a27f-2fb08c49a626, 9887140f-c828-4d81-8d22-03bfbd7b7ee4", + "traceId": "1012c0c889164436894ec3cf0e537ac3", + "evidence": "service=firstleg-service, status=UP, readiness=UP", + "checkedAt": "2026-08-08T05:30:42.962Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "file-service 状态响应使用统一成功体", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "59659668-eff8-4dc1-8a59-4081dbdbf600, e0d7ac31-16a6-4fbf-9e16-282d30d0d1e9", + "traceId": "03bc1e00c30e443e95c298ff80e9c78e", + "evidence": "HTTP=200, code=200", + "checkedAt": "2026-08-08T05:30:42.989Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "file-service 状态字段完整且 readiness 语义明确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "59659668-eff8-4dc1-8a59-4081dbdbf600, e0d7ac31-16a6-4fbf-9e16-282d30d0d1e9", + "traceId": "03bc1e00c30e443e95c298ff80e9c78e", + "evidence": "service=file-service, status=UP, readiness=UP", + "checkedAt": "2026-08-08T05:30:42.989Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "warehouse-service 状态响应使用统一成功体", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouses/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d4200cbf-f054-417f-b82f-fd949c82da7b, 7c6e5d0a-9176-4bb3-9ed9-855c3a8d3a36", + "traceId": "96d19e748c3d495e9a7a98ee7512ca12", + "evidence": "HTTP=200, code=200", + "checkedAt": "2026-08-08T05:30:43.035Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "warehouse-service 状态字段完整且 readiness 语义明确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouses/status" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "d4200cbf-f054-417f-b82f-fd949c82da7b, 7c6e5d0a-9176-4bb3-9ed9-855c3a8d3a36", + "traceId": "96d19e748c3d495e9a7a98ee7512ca12", + "evidence": "service=warehouse-service, status=UP, readiness=UP", + "checkedAt": "2026-08-08T05:30:43.035Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "平台接口未携带令牌返回 401", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/status" + }, + "http": 401, + "code": "A0401", + "message": "未登录或令牌已失效", + "requestId": "96a38fd4-1335", + "traceId": null, + "evidence": "HTTP=401, code=A0401", + "checkedAt": "2026-08-08T05:30:43.061Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "平台接口伪造令牌返回 401", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/status" + }, + "http": 401, + "code": "A0401", + "message": "未登录或令牌已失效", + "requestId": "07739279-1336", + "traceId": null, + "evidence": "HTTP=401, code=A0401", + "checkedAt": "2026-08-08T05:30:43.076Z" + }, + { + "module": "supplemental", + "scenario": null, + "name": "未认证请求不返回业务成功码", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/orders/status" + }, + "http": 401, + "code": "A0401", + "message": "未登录或令牌已失效", + "requestId": "96a38fd4-1337", + "traceId": null, + "evidence": "HTTP=401, code=A0401", + "checkedAt": "2026-08-08T05:30:43.093Z" + }, + { + "module": "supplemental", + "scenario": "master-data-readonly", + "name": "仓库分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=5&status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "54bc5e92-ab19-45ad-a9c1-1310b53854d3, 4d660a2f-55a9-4af7-8901-3a0dd8fff383", + "traceId": "18ee1e19da974da0bac4eee287a3c363", + "evidence": "path=/api/platform/v1/warehouse-admin?page=1&size=5&status=ACTIVE", + "checkedAt": "2026-08-08T05:30:43.137Z" + }, + { + "module": "supplemental", + "scenario": "master-data-readonly", + "name": "仓库分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=5&status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "54bc5e92-ab19-45ad-a9c1-1310b53854d3, 4d660a2f-55a9-4af7-8901-3a0dd8fff383", + "traceId": "18ee1e19da974da0bac4eee287a3c363", + "evidence": "records=5, current=1, size=5", + "checkedAt": "2026-08-08T05:30:43.137Z" + }, + { + "module": "supplemental", + "scenario": "master-data-readonly", + "name": "仓库筛选分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=5&tenantId=0&warehouseType=FBA" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0f346acc-7f0f-495f-98d6-5c753a9677db, 3488eb08-f6c1-472c-acf9-972425f1e8fb", + "traceId": "107df71f1a324edda9eb894eca26ea35", + "evidence": "path=/api/platform/v1/warehouse-admin?page=1&size=5&tenantId=0&warehouseType=FBA", + "checkedAt": "2026-08-08T05:30:43.165Z" + }, + { + "module": "supplemental", + "scenario": "master-data-readonly", + "name": "仓库筛选分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=5&tenantId=0&warehouseType=FBA" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0f346acc-7f0f-495f-98d6-5c753a9677db, 3488eb08-f6c1-472c-acf9-972425f1e8fb", + "traceId": "107df71f1a324edda9eb894eca26ea35", + "evidence": "records=5, current=1, size=5", + "checkedAt": "2026-08-08T05:30:43.165Z" + }, + { + "module": "supplemental", + "scenario": "master-data-readonly", + "name": "仓库非法状态安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=5&status=NOT_A_STATUS" + }, + "http": 200, + "code": "A0422", + "message": "status: must match \"ACTIVE|INACTIVE\"", + "requestId": "f1dbdc5e-549a-4597-bded-1fb43ebefaa4", + "traceId": "483df54bf2bd4d149708378ba4d1bd32", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T05:30:43.193Z" + }, + { + "module": "supplemental", + "scenario": "master-data-readonly", + "name": "仓库客户作用域安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin?page=1&size=5&tenantId=10001" + }, + "http": 200, + "code": "A0400", + "message": "Platform resource scope must be 0 / 平台公共资源作用域必须为0", + "requestId": "10664bbc-5c7b-4c4c-90ae-ef19a32b55ac", + "traceId": "839eb55f5f9d483aa322d609346fe359", + "evidence": "HTTP=200, code=A0400", + "checkedAt": "2026-08-08T05:30:43.213Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "库位分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations?page=1&size=5&tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c8d93078-d9ac-470f-85a3-5745283795f7, 672cd19b-682b-4e5e-91d0-cec88e95e9fe", + "traceId": "5d2561e2609942ebbef6069a8a56b672", + "evidence": "path=/api/platform/v1/locations?page=1&size=5&tenantId=0", + "checkedAt": "2026-08-08T05:30:43.240Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "库位分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations?page=1&size=5&tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "c8d93078-d9ac-470f-85a3-5745283795f7, 672cd19b-682b-4e5e-91d0-cec88e95e9fe", + "traceId": "5d2561e2609942ebbef6069a8a56b672", + "evidence": "records=3, current=1, size=5", + "checkedAt": "2026-08-08T05:30:43.240Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "托盘分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets?page=1&size=5&tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "44f011de-5177-4f73-94fb-10129e5d3471, 0f6c0ac9-5ede-417a-897e-8d1a4ebcfa16", + "traceId": "1f401b058855410bbe1a35a0765daa32", + "evidence": "path=/api/platform/v1/pallets?page=1&size=5&tenantId=0", + "checkedAt": "2026-08-08T05:30:43.271Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "托盘分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets?page=1&size=5&tenantId=0" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "44f011de-5177-4f73-94fb-10129e5d3471, 0f6c0ac9-5ede-417a-897e-8d1a4ebcfa16", + "traceId": "1f401b058855410bbe1a35a0765daa32", + "evidence": "records=3, current=1, size=5", + "checkedAt": "2026-08-08T05:30:43.271Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "库位仓库筛选分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations?page=1&size=5&tenantId=0&warehouseId=193000000000000001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "01dcfdf6-a817-4e05-9cf9-c901afbdaa36, a2a4386d-2943-4171-a34c-aa0743221469", + "traceId": "06a0dbcedcc14f47aeca8642c4f78f75", + "evidence": "path=/api/platform/v1/locations?page=1&size=5&tenantId=0&warehouseId=193000000000000001", + "checkedAt": "2026-08-08T05:30:43.300Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "库位仓库筛选分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations?page=1&size=5&tenantId=0&warehouseId=193000000000000001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "01dcfdf6-a817-4e05-9cf9-c901afbdaa36, a2a4386d-2943-4171-a34c-aa0743221469", + "traceId": "06a0dbcedcc14f47aeca8642c4f78f75", + "evidence": "records=0, current=1, size=5", + "checkedAt": "2026-08-08T05:30:43.300Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "托盘仓库筛选分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets?page=1&size=5&tenantId=0&warehouseId=193000000000000001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "996194da-09d0-42e5-9661-f5c7f7bb840a, d6f2c7eb-8a99-46c8-be1a-04201d0e3fe1", + "traceId": "db2d7b4c6c984589a9fcd963317fb8cc", + "evidence": "path=/api/platform/v1/pallets?page=1&size=5&tenantId=0&warehouseId=193000000000000001", + "checkedAt": "2026-08-08T05:30:43.332Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "托盘仓库筛选分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets?page=1&size=5&tenantId=0&warehouseId=193000000000000001" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "996194da-09d0-42e5-9661-f5c7f7bb840a, d6f2c7eb-8a99-46c8-be1a-04201d0e3fe1", + "traceId": "db2d7b4c6c984589a9fcd963317fb8cc", + "evidence": "records=0, current=1, size=5", + "checkedAt": "2026-08-08T05:30:43.332Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "库位客户作用域安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations?page=1&size=5&tenantId=10001" + }, + "http": 200, + "code": "A0400", + "message": "平台公共资源作用域必须为0", + "requestId": "03f20571-d419-4552-8616-20c9348c58db", + "traceId": "ee7d7b5e04b74fa28a93c06958cc0e3d", + "evidence": "HTTP=200, code=A0400", + "checkedAt": "2026-08-08T05:30:43.361Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "托盘客户作用域安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets?page=1&size=5&tenantId=10001" + }, + "http": 200, + "code": "A0400", + "message": "平台公共资源作用域必须为0", + "requestId": "d763633e-3977-4238-9154-0e02f7e98d7e", + "traceId": "e2572ebafd894bd3a327183337ef77e1", + "evidence": "HTTP=200, code=A0400", + "checkedAt": "2026-08-08T05:30:43.393Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "库位非法状态安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations?page=1&size=5&tenantId=0&status=ALLOCATED" + }, + "http": 200, + "code": "A0422", + "message": "status: must match \"^(AVAILABLE|RESERVED|OCCUPIED|DISABLED)$\"", + "requestId": "461ff60d-fe0d-4819-9505-c9b79e0c8b18", + "traceId": "8b2b6b9cebc24ad684eafc039b16e1e7", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T05:30:43.410Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "库位过期版本/不存在资源不泄露或误修改数据", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/locations/999999999999?tenantId=0&warehouseId=999999999999" + }, + "http": 200, + "code": "A0404", + "message": "库位不存在或超出当前企业仓库数据范围", + "requestId": "c312fa88-f5a8-4ac7-b2a8-2872acf07be8", + "traceId": "4edd73e1aa7544bcb5e07f52591e5768", + "evidence": "HTTP=200, code=A0404", + "checkedAt": "2026-08-08T05:30:43.437Z" + }, + { + "module": "supplemental", + "scenario": "warehouse-resources", + "name": "托盘占用资源保护边界不泄露或误修改数据", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/pallets/999999999999?tenantId=0&warehouseId=999999999999" + }, + "http": 200, + "code": "A0404", + "message": "托盘不存在或不属于当前租户和仓库", + "requestId": "8fd86285-0230-49c0-8542-521919356e68", + "traceId": "0deb720f59be40a89bdcb762263ec9d8", + "evidence": "HTTP=200, code=A0404", + "checkedAt": "2026-08-08T05:30:43.470Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "快递公司分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ecb35e1d-41e2-4019-a454-3b337317d8d9, 058d8192-0353-49ec-92df-b3cf7cca3bdd", + "traceId": "13fb701c871346cc8789742e9621b7be", + "evidence": "path=/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=ACTIVE", + "checkedAt": "2026-08-08T05:30:43.503Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "快递公司分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ecb35e1d-41e2-4019-a454-3b337317d8d9, 058d8192-0353-49ec-92df-b3cf7cca3bdd", + "traceId": "13fb701c871346cc8789742e9621b7be", + "evidence": "records=4, current=1, size=5", + "checkedAt": "2026-08-08T05:30:43.503Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "快递公司停用筛选分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=INACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "86167670-6739-465a-9770-c7de743c7790, 94edce77-9bf4-4459-b50b-c753bed0d189", + "traceId": "405eec01cea044ef8d807338a0b95fb8", + "evidence": "path=/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=INACTIVE", + "checkedAt": "2026-08-08T05:30:43.533Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "快递公司停用筛选分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=INACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "86167670-6739-465a-9770-c7de743c7790, 94edce77-9bf4-4459-b50b-c753bed0d189", + "traceId": "405eec01cea044ef8d807338a0b95fb8", + "evidence": "records=5, current=1, size=5", + "checkedAt": "2026-08-08T05:30:43.533Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "快递公司状态枚举过滤不混入其他状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=INACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "86167670-6739-465a-9770-c7de743c7790, 94edce77-9bf4-4459-b50b-c753bed0d189", + "traceId": "405eec01cea044ef8d807338a0b95fb8", + "evidence": "records=5", + "checkedAt": "2026-08-08T05:30:43.533Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "快递公司无效筛选参数安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies?page=1&size=5&tenantId=0&status=UNKNOWN" + }, + "http": 200, + "code": "A0422", + "message": "status: must match \"^(ACTIVE|INACTIVE)$\"", + "requestId": "b5e33509-25f7-43f5-b3f5-16a9e9e2d3ac", + "traceId": "efcbd00f80374d39abf427b2a79386e9", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T05:30:43.562Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "往来单位分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners?page=1&size=5&tenantId=0&status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "771c3f79-259f-4dac-b0b5-656537e44ffa, 823c20f9-81b4-4476-845c-fbc783e388ef", + "traceId": "5275814ce6cc41bd8c2f5a95a9b58866", + "evidence": "path=/api/platform/v1/partners?page=1&size=5&tenantId=0&status=ACTIVE", + "checkedAt": "2026-08-08T05:30:43.603Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "往来单位分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners?page=1&size=5&tenantId=0&status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "771c3f79-259f-4dac-b0b5-656537e44ffa, 823c20f9-81b4-4476-845c-fbc783e388ef", + "traceId": "5275814ce6cc41bd8c2f5a95a9b58866", + "evidence": "records=5, current=1, size=5", + "checkedAt": "2026-08-08T05:30:43.603Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "往来单位停用筛选分页查询", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners?page=1&size=5&tenantId=0&status=INACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f3fcffcf-27a2-4303-8db4-2ebc020f78d5, 49f81fb3-063d-4a14-b167-0927097beca1", + "traceId": "662bf3231a474c37b4ed17613cf20b2e", + "evidence": "path=/api/platform/v1/partners?page=1&size=5&tenantId=0&status=INACTIVE", + "checkedAt": "2026-08-08T05:30:43.636Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "往来单位停用筛选分页结构与记录数组正确", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners?page=1&size=5&tenantId=0&status=INACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f3fcffcf-27a2-4303-8db4-2ebc020f78d5, 49f81fb3-063d-4a14-b167-0927097beca1", + "traceId": "662bf3231a474c37b4ed17613cf20b2e", + "evidence": "records=5, current=1, size=5", + "checkedAt": "2026-08-08T05:30:43.636Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "往来单位状态枚举过滤不混入其他状态", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners?page=1&size=5&tenantId=0&status=INACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "f3fcffcf-27a2-4303-8db4-2ebc020f78d5, 49f81fb3-063d-4a14-b167-0927097beca1", + "traceId": "662bf3231a474c37b4ed17613cf20b2e", + "evidence": "records=5", + "checkedAt": "2026-08-08T05:30:43.636Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "往来单位无效筛选参数安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners?page=1&size=5&tenantId=0&types=UNKNOWN_TYPE" + }, + "http": 200, + "code": "A0422", + "message": "types[0]: must match \"^(CUSTOMER|SUPPLIER|CARRIER|CUSTOMS_BROKER|SHIPPER|CONSIGNEE)$\"", + "requestId": "6a1b2a77-7e9f-461b-abcf-3d84054e6e99", + "traceId": "c9eb9e40a6964587bbf45c41546f8d69", + "evidence": "HTTP=200, code=A0422", + "checkedAt": "2026-08-08T05:30:43.658Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "仓库导入模板为 XLSX 且不记录二进制", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/warehouse-admin/import-template" + }, + "http": 200, + "code": null, + "message": "3853 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "2dc3f672-a652-4f39-8e2e-e05d3af0674a, 70f356e8-6a20-43df-9f07-e7c4d29c6928", + "traceId": "a2a85e1d9d3048cfb165e3a57bc0fd0e", + "evidence": "HTTP=200, bytes=3853, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "checkedAt": "2026-08-08T05:30:43.713Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "快递公司导入模板为 XLSX 且不记录二进制", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/express-companies/import-template" + }, + "http": 200, + "code": null, + "message": "3692 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "134e7806-c80c-4140-bca1-0bbb6664d72e, f3f5ec39-4e13-4b4c-9a71-309d9466844b", + "traceId": "6e251568372f4570ace02a09161b38f7", + "evidence": "HTTP=200, bytes=3692, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "checkedAt": "2026-08-08T05:30:43.760Z" + }, + { + "module": "supplemental", + "scenario": "shared-master-data", + "name": "往来单位导入模板为 XLSX 且不记录二进制", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/partners/import-template" + }, + "http": 200, + "code": null, + "message": "3830 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "2abdb3ff-0ae8-4631-bd18-c2a65bd7e9f9, 8a1ca828-1345-420d-81a3-baf7494affee", + "traceId": "d093335b7f9744a0b57660e868f7ac88", + "evidence": "HTTP=200, bytes=3830, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "checkedAt": "2026-08-08T05:30:43.792Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "船期价格表 PENDING_CONFIRMATION 状态过滤", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books?status=PENDING_CONFIRMATION" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6aa01c34-d0fc-4a24-956c-9b843da2f0f4, e95818d4-2127-4c60-a447-b6ac1c79dc91", + "traceId": "5fc073c940594bc084a2b3f28ee1cf15", + "evidence": "count=1", + "checkedAt": "2026-08-08T05:30:43.815Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "船期价格表 PENDING_CONFIRMATION 结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books?status=PENDING_CONFIRMATION" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "6aa01c34-d0fc-4a24-956c-9b843da2f0f4, e95818d4-2127-4c60-a447-b6ac1c79dc91", + "traceId": "5fc073c940594bc084a2b3f28ee1cf15", + "evidence": "count=1", + "checkedAt": "2026-08-08T05:30:43.815Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "船期价格表 ACTIVE 状态过滤", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books?status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9b3fd363-3622-42a5-b203-d8a1001879a5, 5421f0a3-6c8f-4fef-a97f-58a3c9c56e24", + "traceId": "cadefe603581463f9b3b13b25ad7f837", + "evidence": "count=1", + "checkedAt": "2026-08-08T05:30:43.843Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "船期价格表 ACTIVE 结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books?status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "9b3fd363-3622-42a5-b203-d8a1001879a5, 5421f0a3-6c8f-4fef-a97f-58a3c9c56e24", + "traceId": "cadefe603581463f9b3b13b25ad7f837", + "evidence": "count=1", + "checkedAt": "2026-08-08T05:30:43.843Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "船期价格表 SUPERSEDED 状态过滤", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books?status=SUPERSEDED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b0a9e6ab-0e65-4c59-a465-a8bde7eb0914, 2bbd6fc0-67a7-4afa-9892-6b706817d823", + "traceId": "9d80376bad9d4c9e8780a81f6bd4fb1f", + "evidence": "count=8", + "checkedAt": "2026-08-08T05:30:43.879Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "船期价格表 SUPERSEDED 结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books?status=SUPERSEDED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b0a9e6ab-0e65-4c59-a465-a8bde7eb0914, 2bbd6fc0-67a7-4afa-9892-6b706817d823", + "traceId": "9d80376bad9d4c9e8780a81f6bd4fb1f", + "evidence": "count=8", + "checkedAt": "2026-08-08T05:30:43.879Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "读取现有生效价格版本用于下载安全检查", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books?status=ACTIVE" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "ea7763e8-0801-45cd-9427-690e85e7f229, ae57d2c1-ef06-4764-99cd-4625d7fd2ca7", + "traceId": "3cffb5517cd441c6898b4cedc64eceb1", + "evidence": "", + "checkedAt": "2026-08-08T05:30:43.908Z" + }, + { + "module": "supplemental", + "scenario": "price-book-readonly", + "name": "现有生效价格源文件下载为 XLSX", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/fba-pricing/carrier-rates/price-books/2085961800552591362/source" + }, + "http": 200, + "code": null, + "message": "1343413 bytes (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)", + "requestId": "af3b3ff4-e691-473a-8ade-d422e92b4648, 8bc4a041-e6bd-4f49-bfb1-84441917515c, 4364aab7-304e-4aa7-a68a-79b375fc8a5a", + "traceId": "ce472cedb3da4572b723790a119a5fb3, be26754cc3df4c4fbbf2b8b3cf73a77a", + "evidence": "versionId=2085961800552591362, bytes=1343413, contentType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "checkedAt": "2026-08-08T05:30:44.030Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 PENDING 状态分页", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=PENDING" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5cdce45d-47b6-49bb-8a91-bd21b8f95e84, 8384e5a4-4c5f-448b-b375-b580ea651bed", + "traceId": "a3d358cd1d8d482eb0038f57804a6d2b", + "evidence": "", + "checkedAt": "2026-08-08T05:30:44.068Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 PENDING 过滤结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=PENDING" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "5cdce45d-47b6-49bb-8a91-bd21b8f95e84, 8384e5a4-4c5f-448b-b375-b580ea651bed", + "traceId": "a3d358cd1d8d482eb0038f57804a6d2b", + "evidence": "records=0", + "checkedAt": "2026-08-08T05:30:44.068Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 RUNNING 状态分页", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=RUNNING" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a57b986d-4dfc-47f3-bc06-688300dc40df, 2b7c6bac-af59-4041-acd6-54c528d22e3a", + "traceId": "21842fe7e263489483aea87d6374fc92", + "evidence": "", + "checkedAt": "2026-08-08T05:30:44.092Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 RUNNING 过滤结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=RUNNING" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a57b986d-4dfc-47f3-bc06-688300dc40df, 2b7c6bac-af59-4041-acd6-54c528d22e3a", + "traceId": "21842fe7e263489483aea87d6374fc92", + "evidence": "records=0", + "checkedAt": "2026-08-08T05:30:44.092Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 SUCCEEDED 状态分页", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=SUCCEEDED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b632e45d-c6eb-4d18-b714-67162e93328c, d523bb3f-deb1-4e62-975a-504e3569d6cd", + "traceId": "460f1dc0671443e0a6d510018893e822", + "evidence": "", + "checkedAt": "2026-08-08T05:30:44.130Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 SUCCEEDED 过滤结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=SUCCEEDED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b632e45d-c6eb-4d18-b714-67162e93328c, d523bb3f-deb1-4e62-975a-504e3569d6cd", + "traceId": "460f1dc0671443e0a6d510018893e822", + "evidence": "records=5", + "checkedAt": "2026-08-08T05:30:44.130Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 FAILED 状态分页", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=FAILED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0157041a-0f06-42ea-96ea-9d2af8429b6f, dfe82742-3af7-4359-92da-cfe98b135098", + "traceId": "a5c2fc16babc4337bb8414f13410e136", + "evidence": "", + "checkedAt": "2026-08-08T05:30:44.162Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 FAILED 过滤结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=FAILED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "0157041a-0f06-42ea-96ea-9d2af8429b6f, dfe82742-3af7-4359-92da-cfe98b135098", + "traceId": "a5c2fc16babc4337bb8414f13410e136", + "evidence": "records=0", + "checkedAt": "2026-08-08T05:30:44.162Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 EXPIRED 状态分页", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=EXPIRED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b050bf0c-c79c-4fa9-93f7-f661ba917da6, c2b23150-723b-4f71-9c11-ed4ad759fd8c", + "traceId": "e73294cb5a4143c8b136a299d8c8ef9a", + "evidence": "", + "checkedAt": "2026-08-08T05:30:44.190Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "下载中心 EXPIRED 过滤结果状态一致", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks?page=1&size=5&status=EXPIRED" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "b050bf0c-c79c-4fa9-93f7-f661ba917da6, c2b23150-723b-4f71-9c11-ed4ad759fd8c", + "traceId": "e73294cb5a4143c8b136a299d8c8ef9a", + "evidence": "records=0", + "checkedAt": "2026-08-08T05:30:44.190Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "不存在下载任务详情安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks/999999999999" + }, + "http": 200, + "code": "A0404", + "message": "导出任务不存在", + "requestId": "4479bccf-3a3c-44c0-8666-0b0cc3de28b9", + "traceId": "6bd6674517154c23886deb9aa1cef86b", + "evidence": "HTTP=200, code=A0404", + "checkedAt": "2026-08-08T05:30:44.220Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "不存在下载任务文件安全失败", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks/999999999999/download" + }, + "http": 200, + "code": "A0404", + "message": "导出任务不存在", + "requestId": "2459891b-b4bf-4a29-9845-914959bf8756", + "traceId": "ae1e25e8af7b4a74bd6127fd80d27651", + "evidence": "HTTP=200, code=A0404", + "checkedAt": "2026-08-08T05:30:44.253Z" + }, + { + "module": "supplemental", + "scenario": "download-readonly", + "name": "未授权下载请求被拒绝", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/files/export-tasks/999999999999/download" + }, + "http": 401, + "code": "A0401", + "message": "未登录或令牌已失效", + "requestId": "07739279-1372", + "traceId": null, + "evidence": "HTTP=401, code=A0401", + "checkedAt": "2026-08-08T05:30:44.280Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "平台用户只读列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/users?page=1&size=5" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "144d43a3-7802-4deb-a21a-d38d12f59713, d66d60b8-bb4c-4613-860c-002039d52f68", + "traceId": "506e63fc1dfb43e1b8529cbbdd8bf039", + "evidence": "", + "checkedAt": "2026-08-08T05:30:44.349Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "平台用户列表结构正确且包含内置保护标识", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/users?page=1&size=5" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "144d43a3-7802-4deb-a21a-d38d12f59713, d66d60b8-bb4c-4613-860c-002039d52f68", + "traceId": "506e63fc1dfb43e1b8529cbbdd8bf039", + "evidence": "records=5, builtInField=protectedAccount", + "checkedAt": "2026-08-08T05:30:44.349Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "平台角色只读列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/roles" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a18537d0-0c09-47c9-b062-5810d49523f0, c7af4869-c96e-4e64-ab79-6cda69107e5e", + "traceId": "fd744360ada64b5195b499d354a43db1", + "evidence": "", + "checkedAt": "2026-08-08T05:30:44.383Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "平台角色列表结构正确且包含内置保护标识", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/roles" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "a18537d0-0c09-47c9-b062-5810d49523f0, c7af4869-c96e-4e64-ab79-6cda69107e5e", + "traceId": "fd744360ada64b5195b499d354a43db1", + "evidence": "records=13, builtInField=roleType", + "checkedAt": "2026-08-08T05:30:44.383Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "菜单权限只读列表", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/permissions" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2cfaa2dc-2e03-4e6c-a421-0631afcdbe57, df7aab1a-00c2-4a39-8ef3-819c2db3e297", + "traceId": "40ba08b7abb94237a96944363be9e794", + "evidence": "", + "checkedAt": "2026-08-08T05:30:44.420Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "菜单权限列表结构正确且包含内置保护标识", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/permissions" + }, + "http": 200, + "code": "200", + "message": "success", + "requestId": "2cfaa2dc-2e03-4e6c-a421-0631afcdbe57, df7aab1a-00c2-4a39-8ef3-819c2db3e297", + "traceId": "40ba08b7abb94237a96944363be9e794", + "evidence": "records=136, builtInField=builtIn", + "checkedAt": "2026-08-08T05:30:44.420Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "角色列表伪造令牌拒绝访问", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/roles" + }, + "http": 401, + "code": "A0401", + "message": "未登录或令牌已失效", + "requestId": "07739279-1376", + "traceId": null, + "evidence": "HTTP=401, code=A0401", + "checkedAt": "2026-08-08T05:30:44.446Z" + }, + { + "module": "supplemental", + "scenario": "iam-readonly", + "name": "菜单权限未携带令牌拒绝访问", + "passed": true, + "deploymentBlocker": false, + "request": { + "method": "GET", + "path": "/api/platform/v1/iam/permissions" + }, + "http": 401, + "code": "A0401", + "message": "未登录或令牌已失效", + "requestId": "96a38fd4-1377", + "traceId": null, + "evidence": "HTTP=401, code=A0401", + "checkedAt": "2026-08-08T05:30:44.461Z" + } + ] +} diff --git a/scripts/admin-test-env-acceptance.mjs b/scripts/admin-test-env-acceptance.mjs index c6b373a53..3232e5643 100644 --- a/scripts/admin-test-env-acceptance.mjs +++ b/scripts/admin-test-env-acceptance.mjs @@ -11,7 +11,7 @@ import process from 'node:process' const DEFAULT_GATEWAY = 'http://8.163.30.128:9000' const DEFAULT_USERNAME = 'platform_admin' const DEFAULT_PASSWORD = 'ChangeMe123!' -const DEFAULT_MODULES = ['customers', 'system', 'master-data', 'orders', 'pricing', 'downloads', 'inbound-weight-ocr', 'inbound-measurement', 'supplemental'] +const DEFAULT_MODULES = ['customers', 'overseas-storage-fees', 'system', 'master-data', 'orders', 'pricing', 'downloads', 'inbound-weight-ocr', 'inbound-measurement', 'supplemental'] const WEIGHT_IMAGE_PATH = 'C:/Users/BY-OY/Desktop/上传图片包/测量图片/测量图片/orig_1cf27695-b2c3-44b3-98e3-c0be8b80f79a.JPG' const CUSTOMER_FIELDS = [ 'id', 'tenantCode', 'tenantName', 'status', 'legalName', 'legalRepresentative', @@ -391,6 +391,45 @@ class AcceptanceRun { } } + async prepareInboundMeasurementFixture() { + const originalMarker = this.marker + const fixtureMarker = `${originalMarker}-MOJIA` + const createdKeys = ['orders', 'ocrInbound', 'testInbound'] + const contextKeys = ['inboundWeightOcr', 'ocrInbound', 'testInbound', 'createdInbound'] + const createdSnapshot = new Map(createdKeys.map((key) => [key, { + present: Object.hasOwn(this.createdResources, key), value: this.createdResources[key], + }])) + const contextSnapshot = new Map(contextKeys.map((key) => [key, { + present: Object.hasOwn(this.context, key), value: this.context[key], + }])) + + this.marker = fixtureMarker + const extension = await import(new URL('./admin-test-env-modules/orders.mjs', import.meta.url)) + await this.executeModule('orders-inbound-measurement-fixture', () => extension.run(this)) + const fixture = this.createdResources.orders + this.createdResources.orchestrationFixtures = { + ...(this.createdResources.orchestrationFixtures || {}), + inboundMeasurement: fixture ? { + marker: fixtureMarker, + tenantId: fixture.tenantId, + orderId: fixture.orderId, + inboundId: fixture.inboundId, + } : { marker: fixtureMarker, failed: true }, + } + + return () => { + this.marker = originalMarker + for (const [key, snapshot] of createdSnapshot) { + if (snapshot.present) this.createdResources[key] = snapshot.value + else delete this.createdResources[key] + } + for (const [key, snapshot] of contextSnapshot) { + if (snapshot.present) this.context[key] = snapshot.value + else delete this.context[key] + } + } + } + async run() { const loginResponse = await this.request('POST', '/api/auth/login', { username: this.options.username, password: this.options.password }, '') const login = this.apiSuccess('authentication', '平台管理员登录', loginResponse) @@ -398,7 +437,19 @@ class AcceptanceRun { else { this.token = login.accessToken const handlers = { customers: () => this.runCustomers() } - for (const module of this.options.modules) { + for (let moduleIndex = 0; moduleIndex < this.options.modules.length; moduleIndex += 1) { + const module = this.options.modules[moduleIndex] + let restoreFixture = null + const ocrIndex = this.options.modules.indexOf('inbound-weight-ocr') + if (module === 'inbound-measurement' && ocrIndex >= 0 && ocrIndex < moduleIndex) { + try { + restoreFixture = await this.prepareInboundMeasurementFixture() + } catch (error) { + const reason = error instanceof Error ? error.message : String(error) + this.addStep('orders-inbound-measurement-fixture', '创建独立测量入库单', null, false, reason, + { scenario: 'inbound-resource-isolation' }) + } + } let handler = handlers[module] if (!handler) { try { @@ -409,10 +460,15 @@ class AcceptanceRun { const reason = error instanceof Error ? error.message : String(error) this.addStep(module, '模块注册检查', null, false, `无法加载模块: ${reason}`) this.modules.push({ name: module, success: false, passed: 0, failed: 1, fatal: reason }) + if (restoreFixture) restoreFixture() continue } } - await this.executeModule(module, handler) + try { + await this.executeModule(module, handler) + } finally { + if (restoreFixture) restoreFixture() + } } } const failed = this.steps.filter((step) => !step.passed).length diff --git a/scripts/admin-test-env-modules/overseas-storage-fees.mjs b/scripts/admin-test-env-modules/overseas-storage-fees.mjs new file mode 100644 index 000000000..529cba3c0 --- /dev/null +++ b/scripts/admin-test-env-modules/overseas-storage-fees.mjs @@ -0,0 +1,164 @@ +const MODULE = 'overseas-storage-fees' +const SCENARIO = 'customer-overseas-storage-fee-lifecycle' +const OPTIONS = { scenario: SCENARIO, deploymentBlocker: true } + +const DEFAULT_TIERS = [ + { feeType: 'STORAGE', billingUnit: 'CBM', startDay: 1, endDay: 7, unitPrice: 0 }, + { feeType: 'STORAGE', billingUnit: 'CBM', startDay: 8, endDay: 30, unitPrice: 0.8 }, + { feeType: 'STORAGE', billingUnit: 'CBM', startDay: 31, endDay: 60, unitPrice: 1 }, + { feeType: 'STORAGE', billingUnit: 'CBM', startDay: 61, endDay: 90, unitPrice: 1.5 }, + { feeType: 'STORAGE', billingUnit: 'CBM', startDay: 91, endDay: null, unitPrice: 2 }, + { feeType: 'RETURN_STORAGE', billingUnit: 'PALLET', startDay: 1, endDay: 30, unitPrice: 1.5 }, + { feeType: 'RETURN_STORAGE', billingUnit: 'PALLET', startDay: 31, endDay: 60, unitPrice: 2 }, + { feeType: 'RETURN_STORAGE', billingUnit: 'PALLET', startDay: 61, endDay: 90, unitPrice: 3 }, + { feeType: 'RETURN_STORAGE', billingUnit: 'PALLET', startDay: 91, endDay: null, unitPrice: 4 }, +] + +function id(value) { return value == null ? '' : String(value) } +function codeOf(response) { return response?.body?.code == null ? 'missing' : String(response.body.code) } +function businessFailure(response) { + return [400, 401, 403, 404, 409].includes(response?.http) + || (response?.http === 200 && codeOf(response) !== '200') +} +function missingRoute(response) { + return response?.http === 404 || response?.http === 405 + || /Not Found|No handler|No static resource/i.test(String(response?.raw || response?.body?.message || '')) +} +function close(a, b) { return Number(a) === Number(b) } +function tiersOf(view) { return Array.isArray(view?.tiers) ? view.tiers : [] } +function requestTiers(view) { + return tiersOf(view).map((tier) => ({ + feeType: tier.feeType, billingUnit: tier.billingUnit, + startDay: Number(tier.startDay), endDay: tier.endDay == null ? null : Number(tier.endDay), + unitPrice: Number(tier.unitPrice), + })) +} +function tierSnapshot(view) { + return tiersOf(view).map((tier) => [tier.feeType, tier.billingUnit, tier.startDay, tier.endDay, String(tier.unitPrice)]) +} +function defaultShape(view) { + const tiers = tiersOf(view) + const storage = tiers.filter((tier) => tier.feeType === 'STORAGE' && tier.billingUnit === 'CBM') + const returns = tiers.filter((tier) => tier.feeType === 'RETURN_STORAGE' && tier.billingUnit === 'PALLET') + const matches = (actual, expected) => actual.length === expected.length && expected.every((item) => actual.some((tier) => ( + Number(tier.startDay) === item.startDay && (tier.endDay == null ? null : Number(tier.endDay)) === item.endDay + && close(tier.unitPrice, item.unitPrice) + ))) + return tiers.length === 9 && storage.length === 5 && returns.length === 4 + && matches(storage, DEFAULT_TIERS.filter((tier) => tier.feeType === 'STORAGE')) + && matches(returns, DEFAULT_TIERS.filter((tier) => tier.feeType === 'RETURN_STORAGE')) + && storage.some((tier) => close(tier.unitPrice, 0)) + && storage.some((tier) => tier.endDay == null && Number(tier.startDay) === 91) + && returns.some((tier) => tier.endDay == null && Number(tier.startDay) === 91) +} + +async function createFixtureCustomer(context) { + const suffix = context.marker.replace(/\D/g, '').slice(-12) + const phone = await context.findAvailablePhone(MODULE) + const payload = { + tenantName: `海外仓费用验收-${suffix}`, legalName: `海外仓费用验收有限公司-${suffix}`, + legalRepresentative: '费用验收法人', contactName: '费用验收联系人', contactPhone: phone, + contactEmail: `storage-fee-${suffix}@example.com`, servicePackage: '海外仓费用验收套餐', + contactWechat: `fee_${suffix}`, salesOwnerName: '费用验收销售', paymentTermDays: 30, + enterpriseType: 'LIMITED_COMPANY', establishedDate: '2020-01-02', registeredCapital: 1000000, + registeredCapitalCurrency: 'CNY', registeredAddress: '深圳市南山区海外仓费用验收地址', internalRemark: context.marker, + } + const response = await context.request('POST', '/api/platform/v1/iam/tenants', payload) + const data = context.apiSuccess(MODULE, '创建海外仓费用隔离客户', response, '', OPTIONS) + const customer = data?.tenant || data?.customer || data + const tenantId = id(customer?.id || data?.tenantId) + context.assert(MODULE, '海外仓费用隔离客户创建并带 marker', response, + Boolean(tenantId) && String(customer?.internalRemark || '').includes(context.marker), `tenantId=${tenantId || 'missing'}`, OPTIONS) + if (!tenantId) return null + context.createdResources.overseasStorageFeeCustomer = { tenantId, marker: context.marker, ownedByModule: true } + return tenantId +} + +export async function run(context) { + const start = context.steps.length + // Always create a module-owned customer. The customers module may archive its + // own fixture, and this lifecycle must never depend on that or on history. + const tenantId = await createFixtureCustomer(context) + const ownedCustomer = Boolean(tenantId) + if (!tenantId) { + context.addStep(MODULE, '取得本轮客户 ID', null, false, '未找到可隔离客户,禁止使用历史客户', OPTIONS) + return + } + + const path = `/api/platform/v1/iam/tenants/${encodeURIComponent(tenantId)}/overseas-storage-fees` + const getResponse = await context.request('GET', path) + const view = context.apiSuccess(MODULE, '查询客户海外仓费用配置', getResponse, `tenantId=${tenantId}`, OPTIONS) + if (!view) { + if (ownedCustomer) { + const archiveResponse = await context.request('POST', `/api/platform/v1/iam/tenants/${encodeURIComponent(tenantId)}/archive`) + const archived = context.apiSuccess(MODULE, '费用配置契约不可用时清理隔离客户', archiveResponse, `tenantId=${tenantId}`, OPTIONS) + context.assert(MODULE, '隔离客户清理后停用', archiveResponse, archived?.status === 'DISABLED', `status=${archived?.status ?? 'missing'}`, OPTIONS) + } + return + } + const activePath = `/api/platform/v1/iam/tenants/${encodeURIComponent(tenantId)}/overseas-storage-fees` + const initial = { + id: id(view.id), customerId: id(view.customerId), customerName: view.customerName, + currency: view.currency, tiers: requestTiers(view), version: Number(view.version), snapshot: tierSnapshot(view), + } + context.assert(MODULE, '客户费用配置身份、默认 USD 与9档结构正确', getResponse, + initial.id && initial.customerId === tenantId && initial.currency === 'USD' && defaultShape(view), + `ruleId=${initial.id || 'missing'}, customerId=${initial.customerId}, currency=${initial.currency}, tiers=${tiersOf(view).length}`, OPTIONS) + + const wrongCustomerResponse = await context.request('PUT', activePath, { + customerId: `${BigInt(tenantId) + 1n}`, customerName: initial.customerName, currency: initial.currency, + tiers: initial.tiers, version: initial.version, + }) + context.addStep(MODULE, '请求体客户 ID 与路径不一致时安全失败', wrongCustomerResponse, + businessFailure(wrongCustomerResponse), `HTTP=${wrongCustomerResponse.http}, code=${codeOf(wrongCustomerResponse)}`, OPTIONS) + + const editedTiers = initial.tiers.map((tier, index) => ({ ...tier, unitPrice: Number((tier.unitPrice + 0.125 + index / 1000).toFixed(3)) })) + const updatePayload = { + customerId: tenantId, customerName: `${initial.customerName}-${context.marker.slice(-8)}`, + currency: 'EUR', tiers: editedTiers, version: initial.version, + } + const updateResponse = await context.request('PUT', activePath, updatePayload) + context.apiSuccess(MODULE, '整组修改客户海外仓费用', updateResponse, `tenantId=${tenantId}, tiers=9`, OPTIONS) + const afterUpdateResponse = await context.request('GET', activePath) + const afterUpdate = context.apiSuccess(MODULE, '回查整组修改后的客户费用', afterUpdateResponse, '', OPTIONS) + const editedCorrect = afterUpdate?.currency === 'EUR' && afterUpdate?.customerName === updatePayload.customerName + && Number(afterUpdate?.version) === initial.version + 1 && tierSnapshot(afterUpdate).every((row, index) => row.join('|') === tierSnapshot({ tiers: editedTiers })[index].join('|')) + context.assert(MODULE, '修改后币种、价格、9档及版本整体回显', afterUpdateResponse, editedCorrect, + `currency=${afterUpdate?.currency}, version=${afterUpdate?.version}, tiers=${tiersOf(afterUpdate).length}`, OPTIONS) + + const staleResponse = await context.request('PUT', activePath, { ...updatePayload, customerName: `${updatePayload.customerName}-STALE`, version: initial.version }) + const staleRejected = staleResponse.http === 200 && ['A0409', '409'].includes(codeOf(staleResponse)) + context.addStep(MODULE, '旧 version 整组保存返回并发冲突', staleResponse, staleRejected, + `HTTP=${staleResponse.http}, code=${codeOf(staleResponse)}`, OPTIONS) + const afterConflictResponse = await context.request('GET', activePath) + const afterConflict = context.apiSuccess(MODULE, '冲突后回查费用配置', afterConflictResponse, '', OPTIONS) + context.assert(MODULE, '冲突未造成部分更新', afterConflictResponse, + afterConflict?.customerName === updatePayload.customerName && afterConflict?.currency === 'EUR' + && tierSnapshot(afterConflict).every((row, index) => row.join('|') === tierSnapshot({ tiers: editedTiers })[index].join('|')), + `version=${afterConflict?.version}, unchanged=${afterConflict?.customerName === updatePayload.customerName}`, OPTIONS) + + const restorePayload = { + customerId: tenantId, customerName: initial.customerName, currency: initial.currency, + tiers: initial.tiers, version: Number(afterConflict?.version), + } + const restoreResponse = await context.request('PUT', activePath, restorePayload) + context.apiSuccess(MODULE, '恢复本轮客户费用原始配置', restoreResponse, 'restore=initial', OPTIONS) + const finalResponse = await context.request('GET', activePath) + const final = context.apiSuccess(MODULE, '回查恢复后的客户费用', finalResponse, '', OPTIONS) + context.assert(MODULE, '恢复后9档、USD、免费档和无上限档一致', finalResponse, + final?.customerName === initial.customerName && final?.currency === 'USD' && defaultShape(final) + && Number(final?.version) === Number(afterConflict?.version) + 1, + `currency=${final?.currency}, version=${final?.version}, tiers=${tiersOf(final).length}`, OPTIONS) + + const invalidCustomerResponse = await context.request('GET', '/api/platform/v1/iam/tenants/999999999999999999/overseas-storage-fees') + context.addStep(MODULE, '错误客户 ID 查询安全失败', invalidCustomerResponse, businessFailure(invalidCustomerResponse), + `HTTP=${invalidCustomerResponse.http}, code=${codeOf(invalidCustomerResponse)}`, OPTIONS) + + if (ownedCustomer) { + const archiveResponse = await context.request('POST', `/api/platform/v1/iam/tenants/${encodeURIComponent(tenantId)}/archive`) + const archived = context.apiSuccess(MODULE, '清理费用隔离客户', archiveResponse, `tenantId=${tenantId}`, OPTIONS) + context.assert(MODULE, '费用隔离客户清理后停用', archiveResponse, archived?.status === 'DISABLED', `status=${archived?.status ?? 'missing'}`, OPTIONS) + } + const steps = context.steps.slice(start) + context.scenarios.push({ name: SCENARIO, module: MODULE, success: steps.every((step) => step.passed), deploymentBlocked: steps.some((step) => step.deploymentBlocker), passed: steps.filter((step) => step.passed).length, failed: steps.filter((step) => !step.passed).length }) +} diff --git a/warehouse/src/main/java/com/baiyue/warehouse/controller/InternalOverseasStorageFeeController.java b/warehouse/src/main/java/com/baiyue/warehouse/controller/InternalOverseasStorageFeeController.java new file mode 100644 index 000000000..427dc3cb1 --- /dev/null +++ b/warehouse/src/main/java/com/baiyue/warehouse/controller/InternalOverseasStorageFeeController.java @@ -0,0 +1,37 @@ +package com.baiyue.warehouse.controller; + +import com.baiyue.common.core.api.ApiResponse; +import com.baiyue.common.core.api.ResultCode; +import com.baiyue.common.core.exception.BizException; +import com.baiyue.warehouse.dto.OverseasStorageFeeDtos; +import com.baiyue.warehouse.service.OverseasStorageFeeService; +import jakarta.annotation.PostConstruct; +import jakarta.annotation.Resource; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; +import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; + +@RestController +@RequestMapping("/internal/warehouse/v1/customer-overseas-storage-fees") +public class InternalOverseasStorageFeeController { + @Resource private OverseasStorageFeeService service; + @Value("${baiyue.security.internal-service-token}") private String internalToken; + private byte[] expected; + @PostConstruct void init() { expected = internalToken.getBytes(StandardCharsets.UTF_8); } + @PostMapping("/defaults") + public ApiResponse defaults( + @RequestHeader(value="X-Internal-Service-Token", required=false) String token, + @RequestBody OverseasStorageFeeDtos.DefaultInitializationRequest request) { + verify(token); return ApiResponse.success(service.initializeDefaults(request)); + } + @DeleteMapping("/defaults") + public ApiResponse compensate(@RequestHeader(value="X-Internal-Service-Token", required=false) String token, + @RequestBody OverseasStorageFeeDtos.CompensationRequest request) { + verify(token); service.compensateDefaults(request); return ApiResponse.success(null); + } + private void verify(String token) { + if (!MessageDigest.isEqual(expected, token == null ? new byte[0] : token.getBytes(StandardCharsets.UTF_8))) + throw new BizException(ResultCode.FORBIDDEN, "无效的内部服务凭据"); + } +} diff --git a/warehouse/src/main/java/com/baiyue/warehouse/controller/PlatformCustomerOverseasStorageFeeController.java b/warehouse/src/main/java/com/baiyue/warehouse/controller/PlatformCustomerOverseasStorageFeeController.java new file mode 100644 index 000000000..2c68a392e --- /dev/null +++ b/warehouse/src/main/java/com/baiyue/warehouse/controller/PlatformCustomerOverseasStorageFeeController.java @@ -0,0 +1,38 @@ +package com.baiyue.warehouse.controller; + +import com.baiyue.common.core.api.ApiResponse; +import com.baiyue.warehouse.dto.OverseasStorageFeeDtos; +import com.baiyue.warehouse.service.OverseasStorageFeeService; +import com.baiyue.common.security.AuthenticatedUser; +import jakarta.annotation.Resource; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.security.core.annotation.AuthenticationPrincipal; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("/api/platform/v1/iam/tenants/{tenantId}/overseas-storage-fees") +public class PlatformCustomerOverseasStorageFeeController { + @Resource private OverseasStorageFeeService service; + @GetMapping + @PreAuthorize("hasAuthority('platform:customer:view')") + public ApiResponse get(@AuthenticationPrincipal AuthenticatedUser user, + @PathVariable long tenantId) { return ApiResponse.success(service.detailByTenant(tenantId)); } + @PutMapping + @PreAuthorize("hasAuthority('platform:customer:edit')") + public ApiResponse put(@AuthenticationPrincipal AuthenticatedUser user, @PathVariable long tenantId, + @Valid @RequestBody OverseasStorageFeeDtos.UpdateRequest request) { + if (request.customerId() != tenantId) { + throw new com.baiyue.common.core.exception.BizException( + com.baiyue.common.core.api.ResultCode.VALIDATION_FAILED, "客户ID与路径不一致"); + } + if (request.tiers() == null || request.tiers().size() != 9 + || request.tiers().stream().filter(t -> "STORAGE".equals(t.feeType())).count() != 5 + || request.tiers().stream().filter(t -> "RETURN_STORAGE".equals(t.feeType())).count() != 4) { + throw new com.baiyue.common.core.exception.BizException( + com.baiyue.common.core.api.ResultCode.VALIDATION_FAILED, "客户费用必须包含仓租5档和退货仓储费4档"); + } + OverseasStorageFeeDtos.View view = service.detailByTenant(tenantId); + service.update(view.id(), request); return ApiResponse.success(null); + } +} diff --git a/warehouse/src/main/java/com/baiyue/warehouse/dto/OverseasStorageFeeDtos.java b/warehouse/src/main/java/com/baiyue/warehouse/dto/OverseasStorageFeeDtos.java index 7bf0688d0..a9243e68e 100644 --- a/warehouse/src/main/java/com/baiyue/warehouse/dto/OverseasStorageFeeDtos.java +++ b/warehouse/src/main/java/com/baiyue/warehouse/dto/OverseasStorageFeeDtos.java @@ -41,11 +41,16 @@ public final class OverseasStorageFeeDtos { @Schema(name = "OverseasStorageFeeTierRequest", description = "仓储费阶梯") public record TierRequest( + @NotBlank @Pattern(regexp = "^[A-Z_]+$") String feeType, + @NotBlank @Pattern(regexp = "^[A-Z]+$") String billingUnit, @NotNull @Min(1) @Max(36500) Integer startDay, - @NotNull @Min(1) @Max(36500) Integer endDay, - @NotNull @DecimalMin(value = "0", inclusive = false) @Digits(integer = 12, fraction = 6) + @Min(1) @Max(36500) Integer endDay, + @NotNull @DecimalMin(value = "0", inclusive = true) @Digits(integer = 12, fraction = 6) BigDecimal unitPrice ) { + public TierRequest(Integer startDay, Integer endDay, BigDecimal unitPrice) { + this("STORAGE", "CBM", startDay, endDay, unitPrice); + } } @Schema(name = "OverseasStorageFeeCreateRequest", description = "新增海外仓阶梯费用") @@ -68,7 +73,11 @@ public final class OverseasStorageFeeDtos { } @Schema(name = "OverseasStorageFeeTierView", description = "仓储费阶梯明细") - public record TierView(Long id, Integer startDay, Integer endDay, BigDecimal unitPrice, Integer sortNo) { + public record TierView(Long id, Integer startDay, Integer endDay, BigDecimal unitPrice, Integer sortNo, + String feeType, String billingUnit) { + public TierView(Long id, Integer startDay, Integer endDay, BigDecimal unitPrice, Integer sortNo) { + this(id, startDay, endDay, unitPrice, sortNo, "STORAGE", "CBM"); + } } @Schema(name = "OverseasStorageFeeView", description = "海外仓阶梯费用详情") @@ -83,4 +92,9 @@ public final class OverseasStorageFeeDtos { LocalDateTime updatedAt ) { } + + public record DefaultInitializationRequest(@NotNull @Positive Long tenantId, @NotBlank String initializationKey, + Long operatorId, String customerName) {} + public record DefaultInitializationResponse(String configId, boolean createdByThisInitialization) {} + public record CompensationRequest(@NotNull @Positive Long tenantId, @NotBlank String initializationKey) {} } diff --git a/warehouse/src/main/java/com/baiyue/warehouse/entity/OverseasStorageFeeRuleEntity.java b/warehouse/src/main/java/com/baiyue/warehouse/entity/OverseasStorageFeeRuleEntity.java index 9dde3a88b..0ea30debb 100644 --- a/warehouse/src/main/java/com/baiyue/warehouse/entity/OverseasStorageFeeRuleEntity.java +++ b/warehouse/src/main/java/com/baiyue/warehouse/entity/OverseasStorageFeeRuleEntity.java @@ -17,4 +17,5 @@ public class OverseasStorageFeeRuleEntity extends BaseEntity { private Long tenantId; private String customerName; private String currency; + private String initializationKey; } diff --git a/warehouse/src/main/java/com/baiyue/warehouse/entity/OverseasStorageFeeTierEntity.java b/warehouse/src/main/java/com/baiyue/warehouse/entity/OverseasStorageFeeTierEntity.java index e8a163796..991f9aaad 100644 --- a/warehouse/src/main/java/com/baiyue/warehouse/entity/OverseasStorageFeeTierEntity.java +++ b/warehouse/src/main/java/com/baiyue/warehouse/entity/OverseasStorageFeeTierEntity.java @@ -20,6 +20,8 @@ public class OverseasStorageFeeTierEntity extends BaseEntity { private Long ruleId; private Integer startDay; private Integer endDay; + private String feeType; + private String billingUnit; private BigDecimal unitPrice; private Integer sortNo; } diff --git a/warehouse/src/main/java/com/baiyue/warehouse/repository/OverseasStorageFeeRepository.java b/warehouse/src/main/java/com/baiyue/warehouse/repository/OverseasStorageFeeRepository.java index 95dab9de0..78553f01d 100644 --- a/warehouse/src/main/java/com/baiyue/warehouse/repository/OverseasStorageFeeRepository.java +++ b/warehouse/src/main/java/com/baiyue/warehouse/repository/OverseasStorageFeeRepository.java @@ -38,6 +38,11 @@ public class OverseasStorageFeeRepository { public OverseasStorageFeeRuleEntity find(long id) { return ruleMapper.selectById(id); } + public OverseasStorageFeeRuleEntity findByTenantAndKey(long tenantId, String key) { + return ruleMapper.selectOne(new LambdaQueryWrapper() + .eq(OverseasStorageFeeRuleEntity::getTenantId, tenantId) + .eq(OverseasStorageFeeRuleEntity::getInitializationKey, key)); + } public boolean existsCustomer(long customerId, Long excludedId) { return ruleMapper.selectCount(new LambdaQueryWrapper() diff --git a/warehouse/src/main/java/com/baiyue/warehouse/service/OverseasStorageFeeService.java b/warehouse/src/main/java/com/baiyue/warehouse/service/OverseasStorageFeeService.java index 23f1e3b92..b77adb8c5 100644 --- a/warehouse/src/main/java/com/baiyue/warehouse/service/OverseasStorageFeeService.java +++ b/warehouse/src/main/java/com/baiyue/warehouse/service/OverseasStorageFeeService.java @@ -18,6 +18,7 @@ import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.stream.Collectors; +import java.math.BigDecimal; /** 海外仓阶梯费用管理服务。 */ @Service @@ -40,6 +41,35 @@ public class OverseasStorageFeeService { return view(rule, repository.findTiers(List.of(id))); } + public OverseasStorageFeeDtos.View detailByTenant(long tenantId) { + OverseasStorageFeeRuleEntity rule = repository.page(new OverseasStorageFeeDtos.PageQuery(1, 1, tenantId, null)) + .records().stream().findFirst().orElseThrow(() -> new BizException(ResultCode.NOT_FOUND, "海外仓费用不存在")); + return detail(rule.getId()); + } + + @Transactional + public OverseasStorageFeeDtos.DefaultInitializationResponse initializeDefaults( + OverseasStorageFeeDtos.DefaultInitializationRequest request) { + OverseasStorageFeeRuleEntity existing = repository.findByTenantAndKey(request.tenantId(), request.initializationKey()); + if (existing != null && !Boolean.TRUE.equals(existing.getDeleted())) { + return new OverseasStorageFeeDtos.DefaultInitializationResponse(String.valueOf(existing.getId()), false); + } + OverseasStorageFeeRuleEntity rule = new OverseasStorageFeeRuleEntity(); + rule.setInitializationKey(request.initializationKey()); + copy(rule, request.tenantId(), request.customerName() == null ? "" : request.customerName(), "USD"); + repository.insertRule(rule); + repository.insertTiers(tierEntities(rule.getId(), request.tenantId(), defaultTiers())); + return new OverseasStorageFeeDtos.DefaultInitializationResponse(String.valueOf(rule.getId()), true); + } + + @Transactional + public void compensateDefaults(OverseasStorageFeeDtos.CompensationRequest request) { + OverseasStorageFeeRuleEntity rule = repository.findByTenantAndKey(request.tenantId(), request.initializationKey()); + if (rule == null || rule.getVersion() != 0 || !isDefault(rule)) return; + repository.deleteTiers(rule.getId()); + repository.deleteRule(rule.getId(), 0); + } + @Transactional @BusinessAudit(event = "OVERSEAS_STORAGE_FEE_CREATE", resourceType = "OVERSEAS_STORAGE_FEE", description = "新增海外仓阶梯费用", captureBefore = false) @@ -110,19 +140,31 @@ public class OverseasStorageFeeService { throw new BizException(ResultCode.VALIDATION_FAILED, "阶梯费用明细必须为1至100组"); } if (source.stream().anyMatch(tier -> tier == null || tier.startDay() == null - || tier.endDay() == null || tier.unitPrice() == null - || tier.unitPrice().signum() <= 0)) { - throw new BizException(ResultCode.VALIDATION_FAILED, "阶梯天数和仓储费标准必须为有效正数"); + || tier.unitPrice() == null || tier.unitPrice().signum() < 0)) { + throw new BizException(ResultCode.VALIDATION_FAILED, "阶梯天数和仓储费标准必须有效"); + } + if (source.stream().anyMatch(t -> !("STORAGE".equals(t.feeType()) && "CBM".equals(t.billingUnit())) + && !("RETURN_STORAGE".equals(t.feeType()) && "PALLET".equals(t.billingUnit())))) { + throw new BizException(ResultCode.VALIDATION_FAILED, "费用类型和计费单位不匹配"); } List tiers = new ArrayList<>(source); - tiers.sort(Comparator.comparingInt(OverseasStorageFeeDtos.TierRequest::startDay)); - int expectedStart = 1; - for (OverseasStorageFeeDtos.TierRequest tier : tiers) { - if (tier.startDay() != expectedStart || tier.endDay() < tier.startDay()) { - throw new BizException(ResultCode.VALIDATION_FAILED, - "阶梯必须从第1天开始,且区间连续、不能重叠或倒置"); + tiers.sort(Comparator.comparing(OverseasStorageFeeDtos.TierRequest::feeType) + .thenComparingInt(OverseasStorageFeeDtos.TierRequest::startDay)); + for (String feeType : List.of("STORAGE", "RETURN_STORAGE")) { + List group = tiers.stream().filter(t -> feeType.equals(t.feeType())).toList(); + if (source.size() == 9 && (("STORAGE".equals(feeType) && group.size() != 5) + || ("RETURN_STORAGE".equals(feeType) && group.size() != 4))) + throw new BizException(ResultCode.VALIDATION_FAILED, "仓租必须5档,退货仓储费必须4档"); + int expectedStart = 1; + for (int i = 0; i < group.size(); i++) { + OverseasStorageFeeDtos.TierRequest tier = group.get(i); + if (tier.startDay() != expectedStart || (tier.endDay() != null && tier.endDay() < tier.startDay())) + throw new BizException(ResultCode.VALIDATION_FAILED, "阶梯必须从第1天开始且连续"); + if (tier.endDay() == null && i != group.size() - 1) + throw new BizException(ResultCode.VALIDATION_FAILED, "无上限阶梯必须为最后一档"); + if (tier.endDay() == null) break; + expectedStart = tier.endDay() + 1; } - expectedStart = tier.endDay() + 1; } return List.copyOf(tiers); } @@ -144,6 +186,8 @@ public class OverseasStorageFeeService { tier.setRuleId(ruleId); tier.setStartDay(request.startDay()); tier.setEndDay(request.endDay()); + tier.setFeeType(request.feeType()); + tier.setBillingUnit(request.billingUnit()); tier.setUnitPrice(request.unitPrice()); tier.setSortNo(index + 1); result.add(tier); @@ -155,7 +199,35 @@ public class OverseasStorageFeeService { List tiers) { return new OverseasStorageFeeDtos.View(rule.getId(), rule.getTenantId(), rule.getCustomerName(), rule.getCurrency(), tiers.stream().map(tier -> new OverseasStorageFeeDtos.TierView( - tier.getId(), tier.getStartDay(), tier.getEndDay(), tier.getUnitPrice(), tier.getSortNo())) + tier.getId(), tier.getStartDay(), tier.getEndDay(), tier.getUnitPrice(), tier.getSortNo(), + tier.getFeeType(), tier.getBillingUnit())) .toList(), rule.getVersion(), rule.getCreatedAt(), rule.getUpdatedAt()); } + + private static List defaultTiers() { + return List.of( + new OverseasStorageFeeDtos.TierRequest("STORAGE", "CBM", 1, 7, BigDecimal.ZERO), + new OverseasStorageFeeDtos.TierRequest("STORAGE", "CBM", 8, 30, new BigDecimal("0.8")), + new OverseasStorageFeeDtos.TierRequest("STORAGE", "CBM", 31, 60, BigDecimal.ONE), + new OverseasStorageFeeDtos.TierRequest("STORAGE", "CBM", 61, 90, new BigDecimal("1.5")), + new OverseasStorageFeeDtos.TierRequest("STORAGE", "CBM", 91, null, new BigDecimal("2")), + new OverseasStorageFeeDtos.TierRequest("RETURN_STORAGE", "PALLET", 1, 30, new BigDecimal("1.5")), + new OverseasStorageFeeDtos.TierRequest("RETURN_STORAGE", "PALLET", 31, 60, new BigDecimal("2")), + new OverseasStorageFeeDtos.TierRequest("RETURN_STORAGE", "PALLET", 61, 90, new BigDecimal("3")), + new OverseasStorageFeeDtos.TierRequest("RETURN_STORAGE", "PALLET", 91, null, new BigDecimal("4"))); + } + + private boolean isDefault(OverseasStorageFeeRuleEntity rule) { + if (!"USD".equals(rule.getCurrency())) return false; + List actual = repository.findTiers(List.of(rule.getId())); + List expected = defaultTiers(); + if (actual.size() != expected.size()) return false; + for (int i = 0; i < expected.size(); i++) { + var e = expected.get(i); var a = actual.get(i); + if (!e.feeType().equals(a.getFeeType()) || !e.billingUnit().equals(a.getBillingUnit()) + || !e.startDay().equals(a.getStartDay()) || !java.util.Objects.equals(e.endDay(), a.getEndDay()) + || e.unitPrice().compareTo(a.getUnitPrice()) != 0) return false; + } + return true; + } } diff --git a/warehouse/src/main/resources/db/phase1-warehouse-schema-migration.sql b/warehouse/src/main/resources/db/phase1-warehouse-schema-migration.sql index f0f06aad5..ee0cb5905 100644 --- a/warehouse/src/main/resources/db/phase1-warehouse-schema-migration.sql +++ b/warehouse/src/main/resources/db/phase1-warehouse-schema-migration.sql @@ -48,6 +48,22 @@ CALL add_column_if_missing('wh_warehouse', 'updated_by', 'BIGINT UNSIGNED NULL') CALL add_column_if_missing('wh_warehouse', 'updated_at', 'DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)'); CALL add_column_if_missing('wh_warehouse', 'deleted', 'TINYINT(1) NOT NULL DEFAULT 0'); CALL add_column_if_missing('wh_warehouse', 'version', 'INT NOT NULL DEFAULT 0'); +CALL add_column_if_missing('wh_overseas_storage_fee_rule', 'initialization_key', 'VARCHAR(191) NULL'); +CALL add_column_if_missing('wh_overseas_storage_fee_tier', 'fee_type', 'VARCHAR(32) NOT NULL DEFAULT ''STORAGE'''); +CALL add_column_if_missing('wh_overseas_storage_fee_tier', 'billing_unit', 'VARCHAR(16) NOT NULL DEFAULT ''CBM'''); + +-- 海外仓费用旧表兼容:允许免费档和“第 N 天以上”,并同步检查约束。 +ALTER TABLE wh_overseas_storage_fee_tier + MODIFY COLUMN end_day SMALLINT UNSIGNED NULL COMMENT '结束天,含边界;NULL表示以上', + MODIFY COLUMN unit_price DECIMAL(18,6) NOT NULL COMMENT '仓储费标准,可为0'; +ALTER TABLE wh_overseas_storage_fee_tier + DROP CHECK chk_overseas_fee_tier_days, + DROP CHECK chk_overseas_fee_tier_price, + ADD CONSTRAINT chk_overseas_fee_tier_days CHECK (start_day >= 1 AND (end_day IS NULL OR end_day >= start_day)), + ADD CONSTRAINT chk_overseas_fee_tier_price CHECK (unit_price >= 0); +ALTER TABLE wh_overseas_storage_fee_tier + DROP INDEX uk_overseas_fee_tier_start, + ADD UNIQUE KEY uk_overseas_fee_tier_start (rule_id, fee_type, active_start_day); CALL add_column_if_missing('wh_warehouse_address', 'tenant_id', 'BIGINT UNSIGNED NOT NULL DEFAULT 0 AFTER id'); CALL add_column_if_missing('wh_warehouse_address', 'warehouse_id', 'BIGINT UNSIGNED NOT NULL DEFAULT 0 AFTER tenant_id'); diff --git a/warehouse/src/main/resources/db/warehouse.sql b/warehouse/src/main/resources/db/warehouse.sql index 942f4f542..4ba2a6fd6 100644 --- a/warehouse/src/main/resources/db/warehouse.sql +++ b/warehouse/src/main/resources/db/warehouse.sql @@ -75,3 +75,27 @@ CREATE TABLE IF NOT EXISTS wh_service_capability ( ) ENGINE=InnoDB COMMENT='仓库服务能力表:声明仓库可提供的收货、仓储、拣包、退货等能力及截单时间'; -- 不使用跨服务数据库外键;仓库聚合内的归属由服务代码通过 tenant_id 与 warehouse_id 共同校验。 + +CREATE TABLE IF NOT EXISTS wh_overseas_storage_fee_rule ( + id BIGINT UNSIGNED NOT NULL, tenant_id BIGINT UNSIGNED NOT NULL, customer_name VARCHAR(128) NOT NULL, + currency CHAR(3) NOT NULL DEFAULT 'USD', initialization_key VARCHAR(191) NULL, + created_by BIGINT UNSIGNED NULL, created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + updated_by BIGINT UNSIGNED NULL, updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3), + deleted TINYINT(1) NOT NULL DEFAULT 0, version INT NOT NULL DEFAULT 0, + active_customer_id BIGINT UNSIGNED GENERATED ALWAYS AS (CASE WHEN deleted=0 THEN tenant_id ELSE NULL END) STORED, + PRIMARY KEY(id), UNIQUE KEY uk_overseas_fee_active_customer(active_customer_id), KEY idx_overseas_fee_page(deleted,updated_at,id) +) ENGINE=InnoDB COMMENT='客户海外仓费用规则'; + +CREATE TABLE IF NOT EXISTS wh_overseas_storage_fee_tier ( + id BIGINT UNSIGNED NOT NULL, tenant_id BIGINT UNSIGNED NOT NULL, rule_id BIGINT UNSIGNED NOT NULL, + start_day SMALLINT UNSIGNED NOT NULL, end_day SMALLINT UNSIGNED NULL, + fee_type VARCHAR(32) NOT NULL DEFAULT 'STORAGE', billing_unit VARCHAR(16) NOT NULL DEFAULT 'CBM', + unit_price DECIMAL(18,6) NOT NULL, sort_no SMALLINT UNSIGNED NOT NULL, + created_by BIGINT UNSIGNED NULL, created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + updated_by BIGINT UNSIGNED NULL, updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3), + deleted TINYINT(1) NOT NULL DEFAULT 0, version INT NOT NULL DEFAULT 0, + active_start_day SMALLINT UNSIGNED GENERATED ALWAYS AS (CASE WHEN deleted=0 THEN start_day ELSE NULL END) STORED, + PRIMARY KEY(id), UNIQUE KEY uk_overseas_fee_tier_start(rule_id,fee_type,active_start_day), KEY idx_overseas_fee_tier_rule(tenant_id,rule_id,deleted,sort_no,id), + CONSTRAINT chk_overseas_fee_tier_days CHECK (start_day>=1 AND (end_day IS NULL OR end_day>=start_day)), + CONSTRAINT chk_overseas_fee_tier_price CHECK (unit_price>=0) +) ENGINE=InnoDB COMMENT='客户海外仓费用阶梯'; diff --git a/warehouse/src/test/java/com/baiyue/warehouse/service/OverseasStorageFeeServiceTest.java b/warehouse/src/test/java/com/baiyue/warehouse/service/OverseasStorageFeeServiceTest.java index e9cd06aef..7c12b695d 100644 --- a/warehouse/src/test/java/com/baiyue/warehouse/service/OverseasStorageFeeServiceTest.java +++ b/warehouse/src/test/java/com/baiyue/warehouse/service/OverseasStorageFeeServiceTest.java @@ -94,6 +94,19 @@ class OverseasStorageFeeServiceTest { verify(repository, never()).updateRule(any()); } + @Test + void initializesNineDefaultTiersIdempotently() { + doAnswer(invocation -> { OverseasStorageFeeRuleEntity rule = invocation.getArgument(0); rule.setId(77L); return null; }) + .when(repository).insertRule(any()); + var request = new OverseasStorageFeeDtos.DefaultInitializationRequest(10001L, "fee:10001", 1L, "客户"); + var first = service.initializeDefaults(request); + assertThat(first.createdByThisInitialization()).isTrue(); + verify(repository).insertTiers(org.mockito.ArgumentMatchers.argThat(list -> list.size() == 9)); + when(repository.findByTenantAndKey(10001L, "fee:10001")).thenReturn(rule()); + var second = service.initializeDefaults(request); + assertThat(second.createdByThisInitialization()).isFalse(); + } + private static OverseasStorageFeeDtos.TierRequest tier(int start, int end, String price) { return new OverseasStorageFeeDtos.TierRequest(start, end, new BigDecimal(price)); }