23 lines
1.2 KiB
TypeScript
23 lines
1.2 KiB
TypeScript
import type { CanvasGenerationBatch, CanvasGenerationBatchStatus } from "@/types/canvas";
|
|
|
|
const TASK_CAPACITY_MESSAGE = /同时排队或运行的任务最多 \d+ 个/;
|
|
|
|
export function isGenerationTaskCapacityError(error: unknown) {
|
|
return error instanceof Error && TASK_CAPACITY_MESSAGE.test(error.message);
|
|
}
|
|
|
|
export function isGenerationCostUncertainError(error: unknown) {
|
|
const message = error instanceof Error ? error.message : String(error || "");
|
|
return /(?:^|\D)524(?:\D|$)|费用状态不确定|扣费状态不确定|可能已经产生费用/i.test(message);
|
|
}
|
|
|
|
export function generationBatchStatus(batch: CanvasGenerationBatch): CanvasGenerationBatchStatus {
|
|
const statuses = batch.items.map((item) => item.status);
|
|
if (statuses.length > 0 && statuses.every((status) => status === "succeeded")) return "completed";
|
|
if (statuses.some((status) => status === "waiting" || status === "submitting" || status === "queued" || status === "running")) {
|
|
return statuses.some((status) => status !== "waiting") ? "running" : "queued";
|
|
}
|
|
if (statuses.some((status) => status === "failed")) return "partial_failed";
|
|
return "cancelled";
|
|
}
|