docs: 添加设计决策注释说明有意为之的行为变更

- performHealthChecks: 如果没有选择任何 provider types 则不进行检查
- _checkProviderHealth: 不检查 per-provider checkHealth 标志,统一由 providerTypes 控制
- interval 验证: 后端不设最大值,允许通过 API 设置超长间隔
This commit is contained in:
Wenaixi 2026-03-31 22:37:27 +08:00
parent bacf2baf40
commit 714aee54bd
2 changed files with 16 additions and 3 deletions

View file

@ -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) {
// 确定健康检查使用的模型名称

View file

@ -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) {