19 lines
655 B
TypeScript
19 lines
655 B
TypeScript
import { isProviderBalanceError } from "@/lib/request-error";
|
|
|
|
const IMAGE_FAILOVER_BALANCE_COOLDOWN_MS = 2 * 60 * 60 * 1000;
|
|
|
|
export function isImageFallbackModelBalanceCoolingDown(
|
|
model: {
|
|
healthLastEventType?: unknown;
|
|
healthLastError?: unknown;
|
|
healthLastFailureAt?: unknown;
|
|
} | null | undefined,
|
|
now = Date.now(),
|
|
) {
|
|
if (model?.healthLastEventType !== "quota" || !isProviderBalanceError(model.healthLastError)) {
|
|
return false;
|
|
}
|
|
const failedAt = new Date(String(model.healthLastFailureAt || "")).getTime();
|
|
return Number.isFinite(failedAt) && now - failedAt < IMAGE_FAILOVER_BALANCE_COOLDOWN_MS && now >= failedAt;
|
|
}
|