适配 M002 V3 前端任务流与同卡复核

This commit is contained in:
andy
2026-07-12 00:33:15 +08:00
parent fd027f124c
commit 155db63028
17 changed files with 1593 additions and 85 deletions

View File

@@ -7,6 +7,8 @@ import { getJson, sendJson } from '@/services/httpClient'
import type {
ReservationManualReviewConversionRequest,
ReservationManualReviewConversionResult,
ReservationManualReviewResolutionRequest,
ReservationManualReviewResolutionResult,
ReservationOperaOperationResult,
ReservationOperaSimulationRequest,
ReservationOrderDetailResult,
@@ -91,6 +93,20 @@ export async function convertReservationManualReviewTask(
)
}
export async function resolveReservationManualReviewTask(
taskId: string,
request: ReservationManualReviewResolutionRequest,
): Promise<ReservationManualReviewResolutionResult> {
if (useReservationFixtures) {
return fixtureManualReviewResolution(taskId, request)
}
return sendJson<ReservationManualReviewResolutionResult>(
`/api/reservation/tasks/${encodeURIComponent(taskId)}/manual-review-resolutions`,
'POST',
request,
)
}
export async function executeReservationOperaOperation(
taskId: string,
operationId: string,
@@ -180,6 +196,40 @@ function fixtureTaskMutation(
}))
}
function fixtureManualReviewResolution(
taskId: string,
request: ReservationManualReviewResolutionRequest,
): Promise<ReservationManualReviewResolutionResult> {
return fixtureTaskDetail(taskId).then((detail) => {
const confirmedPayload = Object.fromEntries(
request.field_overrides.map((item) => [fieldPointerToFixturePath(item.field_pointer), item.value]),
)
return {
task_id: detail.task_id,
order_id: detail.order_id,
task_status: 'READY',
review_status: 'RESOLVED',
review_resolution: {
confirmed_order_id: request.confirmed_order_id ?? detail.order_id,
reason: request.reason ?? null,
field_overrides: request.field_overrides,
},
confirmed_payload: {
...(detail.confirmed_payload ?? {}),
...confirmedPayload,
},
opera_operations: detail.opera_operations,
}
})
}
function fieldPointerToFixturePath(fieldPointer: string): string {
if (fieldPointer === '/extracted_fields/room_items/0/pms_room_type_code') {
return 'extracted_fields.pms_room_type_code'
}
return fieldPointer.replace(/^\//, '').replace(/\//g, '.')
}
async function fixtureOperaOperation(
taskId: string,
operationId: string,