70 lines
1.9 KiB
TypeScript
70 lines
1.9 KiB
TypeScript
import type {
|
|
PendingReviewResponseDto,
|
|
SubmitReviewResponseDto,
|
|
} from "@/lib/types/backend";
|
|
import {
|
|
getOrderStatusMeta,
|
|
getReviewDecisionMeta,
|
|
getWorkflowStepMeta,
|
|
} from "@/lib/types/status";
|
|
import {
|
|
businessEmptyState,
|
|
READY_STATE,
|
|
type ReviewQueueItemVM,
|
|
type ReviewQueueVM,
|
|
type ReviewSubmissionVM,
|
|
} from "@/lib/types/view-models";
|
|
|
|
function adaptPendingReviewItem(
|
|
review: PendingReviewResponseDto,
|
|
): ReviewQueueItemVM {
|
|
return {
|
|
reviewTaskId: review.review_task_id,
|
|
orderId: review.order_id,
|
|
workflowId: review.workflow_id,
|
|
workflowType: null,
|
|
currentStep: review.current_step,
|
|
currentStepLabel: getWorkflowStepMeta(review.current_step).label,
|
|
createdAt: review.created_at,
|
|
status: "waiting_review",
|
|
statusMeta: getOrderStatusMeta("waiting_review"),
|
|
reviewTaskStatus: review.review_task_status,
|
|
latestRevisionAssetId: review.latest_revision_asset_id,
|
|
currentRevisionAssetId: review.current_revision_asset_id,
|
|
latestRevisionVersion: review.latest_revision_version,
|
|
revisionCount: review.revision_count,
|
|
pendingManualConfirm: review.pending_manual_confirm,
|
|
hasMockAssets: false,
|
|
failureCount: 0,
|
|
};
|
|
}
|
|
|
|
export function adaptPendingReviews(
|
|
reviews: PendingReviewResponseDto[],
|
|
): ReviewQueueVM {
|
|
const items = reviews.map(adaptPendingReviewItem);
|
|
|
|
return {
|
|
items,
|
|
state: items.length
|
|
? READY_STATE
|
|
: businessEmptyState(
|
|
"暂无待审核订单",
|
|
"当前没有等待人工处理的审核任务。",
|
|
),
|
|
};
|
|
}
|
|
|
|
export function adaptReviewSubmission(
|
|
submission: SubmitReviewResponseDto,
|
|
): ReviewSubmissionVM {
|
|
return {
|
|
orderId: submission.order_id,
|
|
workflowId: submission.workflow_id,
|
|
revisionAssetId: submission.revision_asset_id,
|
|
decision: submission.decision,
|
|
decisionMeta: getReviewDecisionMeta(submission.decision),
|
|
status: submission.status,
|
|
};
|
|
}
|