优化快手 Cloud 主链路状态机

This commit is contained in:
yml
2026-05-28 10:03:23 +08:00
parent 0876e3ff5b
commit 9709643583
14 changed files with 513 additions and 122 deletions
@@ -3,6 +3,12 @@ import QRCode from "qrcode";
import { ElMessageBox } from "element-plus";
import { showError, showSuccess } from "@/lib/feedback";
import {
hasKuaishouCloudRedeemResultStatus,
isClaimInactiveTaskStatus,
isKuaishouCloudCompletedStatus,
isKuaishouCloudRoleConfirmedStatus,
} from "@/domain/task-status";
import { formatAdminDateTime } from "@/utils/admin-time";
import {
confirmKuaishouCloudClaimRole,
@@ -75,7 +81,7 @@ export function useKuaishouCloudClaim(token: () => string) {
const canEnterBindingStep = computed(() => isTicketVerified.value);
const isRoleReady = computed(() => Boolean(roleName.value || roleId.value));
const isRoleConfirmed = computed(
() => String(task.value?.status || "").trim() === "role_confirmed"
() => isKuaishouCloudRoleConfirmedStatus(task.value?.status)
);
const isDispatched = computed(
() => String(flow.value?.dispatch.status || "").trim() === "success"
@@ -83,28 +89,17 @@ export function useKuaishouCloudClaim(token: () => string) {
const isCompleted = computed(
() =>
String(task.value?.status || "").trim() === "completed" ||
isKuaishouCloudCompletedStatus(task.value?.status) ||
String(flow.value?.consume.status || "").trim() === "success"
);
const hasRedeemResult = computed(() => {
const status = String(task.value?.status || "").trim();
return (
isDispatched.value ||
[
"dispatched_pending_return",
"completed",
"manual_review",
"failed",
].includes(status)
);
return isDispatched.value || hasKuaishouCloudRedeemResultStatus(task.value?.status);
});
const canSubmitTicket = computed(
() =>
!["completed", "manual_review", "closed", "expired"].includes(
String(task.value?.status || "").trim()
) && !submitting.value
!isClaimInactiveTaskStatus(task.value?.status) && !submitting.value
);
const currentStep = computed(() => {
@@ -323,12 +318,10 @@ export function useKuaishouCloudClaim(token: () => string) {
}
function resolveNextPollDelay() {
const taskStatus = String(task.value?.status || "").trim();
if (
!flow.value ||
hasRedeemResult.value ||
["closed", "expired", "manual_review", "failed"].includes(taskStatus)
isClaimInactiveTaskStatus(task.value?.status)
) {
return 0;
}