import type { AiModel } from "@/lib/db/schema"; export type ModelFrontendAvailabilityStatus = | "available" | "maintenance" | "testing"; export type ModelFrontendAvailability = { availabilityStatus: ModelFrontendAvailabilityStatus; availabilityLabel: string | null; selectable: boolean; disabledReason: string | null; }; type AvailabilityModel = Pick< AiModel, | "isEnabled" | "healthStatus" | "healthAutoDisabledAt" | "healthObservationStartedAt" >; export function getAiModelFrontendAvailability( model: AvailabilityModel ): ModelFrontendAvailability { const healthStatus = model.healthStatus || "healthy"; if ( healthStatus === "auto_disabled" || (model.isEnabled === false && Boolean(model.healthAutoDisabledAt)) ) { return { availabilityStatus: "maintenance", availabilityLabel: "维护中", selectable: false, disabledReason: "模型维护中,请稍后再试", }; } if (healthStatus === "degraded" && model.healthObservationStartedAt) { return { availabilityStatus: "testing", availabilityLabel: "测试中", selectable: true, disabledReason: null, }; } return { availabilityStatus: "available", availabilityLabel: null, selectable: true, disabledReason: null, }; }