优化
This commit is contained in:
@@ -11,6 +11,7 @@ import {
|
||||
listPlatformUnifiedOrderFeeDetails,
|
||||
updatePlatformUnifiedOrderDeclaration,
|
||||
updatePlatformUnifiedOrderPlanning,
|
||||
importPlatformLegacyOrders,
|
||||
} from './unifiedOrders'
|
||||
|
||||
vi.mock('@/shared/api/http', () => ({
|
||||
@@ -25,6 +26,19 @@ describe('unified orders API contract', () => {
|
||||
vi.mocked(http.put).mockReset()
|
||||
})
|
||||
|
||||
it('uploads the old-system workbook with a retry-safe key', async () => {
|
||||
vi.mocked(http.post).mockResolvedValue({ data: { total: 1, succeeded: 1, failed: 0, items: [] } })
|
||||
const file = new File(['xlsx'], 'legacy.xlsx', { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' })
|
||||
|
||||
await expect(importPlatformLegacyOrders(file, 'legacy-key')).resolves.toMatchObject({ succeeded: 1 })
|
||||
|
||||
const [path, body, config] = vi.mocked(http.post).mock.calls[0]
|
||||
expect(path).toBe('/platform/v1/orders/first-leg/legacy-import')
|
||||
expect(body).toBeInstanceOf(FormData)
|
||||
expect((body as FormData).get('file')).toBe(file)
|
||||
expect(config).toEqual({ headers: { 'Content-Type': 'multipart/form-data', 'Idempotency-Key': 'legacy-key' } })
|
||||
})
|
||||
|
||||
it('uses the C02 platform orders endpoint and contract filters', async () => {
|
||||
vi.mocked(http.get).mockResolvedValue({ data: { records: [], page: '2', size: '20', total: '0', pages: '0' } })
|
||||
await expect(listPlatformUnifiedOrders({
|
||||
|
||||
@@ -611,6 +611,37 @@ export interface UnifiedOrderRemarksUpdateRequest {
|
||||
customerServiceRemark: string | null
|
||||
}
|
||||
|
||||
export interface LegacyOrderImportItem {
|
||||
excelRow: number
|
||||
success: boolean
|
||||
legacyInboundCode: string | null
|
||||
orderId: number | string | null
|
||||
orderNo: string | null
|
||||
errorMessage: string | null
|
||||
}
|
||||
|
||||
export interface LegacyOrderImportResult {
|
||||
total: number
|
||||
succeeded: number
|
||||
failed: number
|
||||
items: LegacyOrderImportItem[]
|
||||
}
|
||||
|
||||
export function importPlatformLegacyOrders(file: File, idempotencyKey: string) {
|
||||
const form = new FormData()
|
||||
form.append('file', file)
|
||||
return http.post<ApiEnvelope<LegacyOrderImportResult>, ApiEnvelope<LegacyOrderImportResult>>(
|
||||
'/platform/v1/orders/first-leg/legacy-import',
|
||||
form,
|
||||
{ headers: { 'Content-Type': 'multipart/form-data', 'Idempotency-Key': idempotencyKey } },
|
||||
).then(unwrapApiResponse)
|
||||
}
|
||||
|
||||
export function createLegacyOrderImportIdempotencyKey() {
|
||||
const uuid = globalThis.crypto?.randomUUID?.()
|
||||
return uuid ? `legacy-order-import-${uuid}` : `legacy-order-import-${Date.now()}-${Math.random().toString(36).slice(2)}`
|
||||
}
|
||||
|
||||
export interface UnifiedOrderRemarksUpdateResponse {
|
||||
version: number
|
||||
customerRemark: string | null
|
||||
|
||||
Reference in New Issue
Block a user