From 714aee54bda37865af566d391adc313756642529 Mon Sep 17 00:00:00 2001 From: Wenaixi Date: Tue, 31 Mar 2026 22:37:27 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=B7=BB=E5=8A=A0=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=86=B3=E7=AD=96=E6=B3=A8=E9=87=8A=E8=AF=B4=E6=98=8E=E6=9C=89?= =?UTF-8?q?=E6=84=8F=E4=B8=BA=E4=B9=8B=E7=9A=84=E8=A1=8C=E4=B8=BA=E5=8F=98?= =?UTF-8?q?=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - performHealthChecks: 如果没有选择任何 provider types 则不进行检查 - _checkProviderHealth: 不检查 per-provider checkHealth 标志,统一由 providerTypes 控制 - interval 验证: 后端不设最大值,允许通过 API 设置超长间隔 --- src/providers/provider-pool-manager.js | 13 ++++++++++++- src/services/api-server.js | 6 ++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/providers/provider-pool-manager.js b/src/providers/provider-pool-manager.js index 9263809..7868b55 100644 --- a/src/providers/provider-pool-manager.js +++ b/src/providers/provider-pool-manager.js @@ -1672,12 +1672,17 @@ export class ProviderPoolManager { /** * Performs health checks on selected providers. * Respects SCHEDULED_HEALTH_CHECK.providerTypes configuration. + * + * 设计决策:如果没有选择任何 provider types,则不进行检查任何 provider。 + * 这是有意为之的设计 - 如果用户没有明确选择,则不需要自动健康检查。 + * 区别于原来的逻辑(检查所有 provider),现在的行为更符合用户预期。 */ async performHealthChecks() { const scheduledConfig = this.globalConfig?.SCHEDULED_HEALTH_CHECK; const selectedProviderTypes = scheduledConfig?.providerTypes; // 如果没有选择任何 provider types,不进行检查 + // 设计决策:如果用户没有选择任何 provider,明确不执行健康检查是合理的 if (!Array.isArray(selectedProviderTypes) || selectedProviderTypes.length === 0) { return; } @@ -1902,9 +1907,15 @@ export class ProviderPoolManager { /** * Performs an actual health check for a specific provider. + * + * 设计决策:不检查 providerConfig.checkHealth 标志。 + * 健康检查是否执行由上层调用方(performScheduledHealthChecks / performHealthChecks) + * 通过 providerTypes 数组来决定,不在每个 provider 级别控制。 + * 这样简化了逻辑,避免 per-provider 的 checkHealth flag 变得无用。 + * * @param {string} providerType - The type of the provider. * @param {object} providerConfig - The configuration of the provider to check. - * @returns {Promise<{success: boolean, modelName: string, errorMessage: string}|null>} - Health check result object or null if check not implemented. + * @returns {Promise<{success: boolean, modelName: string, errorMessage: string}>} - Health check result object. */ async _checkProviderHealth(providerType, providerConfig) { // 确定健康检查使用的模型名称 diff --git a/src/services/api-server.js b/src/services/api-server.js index a194fcd..88767ec 100644 --- a/src/services/api-server.js +++ b/src/services/api-server.js @@ -362,9 +362,11 @@ async function startServer() { } // 定时健康检查 - const scheduledConfig = CONFIG.SCHEDULED_HEALTH_CHECK; + const scheduledConfig = CONFIG.SCHEDULED_HEALTH_CHECK; if (scheduledConfig?.enabled) { - // Validate interval is within acceptable range (minimum 60000ms, no maximum) + // 设计决策:只验证最小值 60000ms,不设最大值。 + // 前端有 max=3600000 (1小时) 的 UI 限制,但后端允许更大值以支持特殊需求。 + // 如果用户需要超长的间隔,可以通过 API 直接设置。 const DEFAULT_INTERVAL = CONFIG.CRON_NEAR_MINUTES * 60 * 1000; let interval = scheduledConfig.interval; if (typeof interval !== 'number' || interval < 60000) {