import type { AiModel, AiProvider } from "@/lib/db/schema"; import { getAiModelFrontendAvailability, type ModelFrontendAvailability, } from "@/lib/ai/model-frontend-availability"; import { modelSupportsReferenceImageInput } from "@/lib/ai/reference-image-capability"; type StyleProAvailabilityEntry = { model: Pick< AiModel, | "displayName" | "modelId" | "supportsVision" | "capabilities" | "defaultParams" | "isEnabled" | "healthStatus" | "healthAutoDisabledAt" | "healthObservationStartedAt" >; provider: Pick; }; export function getStyleProModelAvailability( entry: StyleProAvailabilityEntry ): ModelFrontendAvailability { if (!modelSupportsReferenceImageInput(entry.model, entry.provider)) { return { availabilityStatus: "maintenance", availabilityLabel: "仅文生图", selectable: false, disabledReason: "风格化需要参考图,该模型仅支持文生图", }; } const availability = getAiModelFrontendAvailability(entry.model); if (availability.availabilityStatus === "testing") { return { availabilityStatus: "testing", availabilityLabel: "暂不可用", selectable: false, disabledReason: "模型近期生成异常,恢复健康后会自动开放", }; } return availability; } export function isStyleProModelRunnable(entry: StyleProAvailabilityEntry) { return getStyleProModelAvailability(entry).selectable; }