fix: preserve manually disabled image models

This commit is contained in:
134 2026-08-26 13:43:58 +08:00
parent e5dc650443
commit d005b3477a
3 changed files with 3 additions and 23 deletions

View File

@ -65,8 +65,6 @@ export async function POST(request: Request) {
description: preset.description,
supportsVision: preset.supportsVision,
supportsImageGen: preset.supportsImageGen,
isEnabled: true,
isHidden: false,
sortOrder: preset.sortOrder,
capabilities: preset.capabilities || null,
defaultParams: preset.defaultParams || null,
@ -94,6 +92,8 @@ export async function POST(request: Request) {
providerId,
modelId: preset.modelId,
...values,
isEnabled: true,
isHidden: false,
isDefault: false,
isSubModel: false,
parentModelId: null,

View File

@ -76,8 +76,6 @@ export async function POST(request: Request) {
description: preset.description,
supportsVision: preset.supportsVision,
supportsImageGen: preset.supportsImageGen,
isEnabled: true,
isHidden: false,
sortOrder: preset.sortOrder,
capabilities: preset.capabilities || null,
defaultParams: preset.defaultParams || null,

View File

@ -23,15 +23,6 @@ const AUTO_DISABLE_FAILURE_THRESHOLD = 3;
const AUTO_DISABLE_COOLDOWN_MS = 2 * 60 * 60 * 1000;
const OBSERVATION_RECOVERY_SUCCESS_THRESHOLD = 3;
const RECENT_EVENT_LIMIT = 80;
const RECOVERABLE_FAILURE_EVENT_TYPES = new Set<AiModelHealthEventType>([
"timeout",
"quota",
"unavailable",
"invalid_model",
"download_error",
"error",
]);
function normalizeText(value: unknown) {
return String(value || "").trim();
}
@ -458,16 +449,7 @@ export async function reviveAiModelsFromCooldown(params?: { modelId?: string })
return false;
}
if (model.healthStatus === "auto_disabled") {
return true;
}
return (
model.healthStatus === "degraded" &&
Boolean(model.healthLastFailureAt) &&
(model.healthConsecutiveFailures || 0) > 0 &&
RECOVERABLE_FAILURE_EVENT_TYPES.has(model.healthLastEventType as AiModelHealthEventType)
);
return model.healthStatus === "auto_disabled";
});
if (dueModels.length === 0) {