Files
auto-virtual-tryon-frontend/src/lib/adapters/reviews.ts

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,
};
}