From 21c92ff2141ed546b8c8dc4967f4aff0ad61488d Mon Sep 17 00:00:00 2001 From: Wenaixi Date: Mon, 30 Mar 2026 23:20:07 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=AE=9A=E6=97=B6?= =?UTF-8?q?=E5=81=A5=E5=BA=B7=E6=A3=80=E6=9F=A5=E4=B8=A4=E4=B8=AAbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. startupRun配置现在会在启动时立即运行健康检查 2. 修复快捷按钮重复绑定事件监听器的问题 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus --- src/services/api-server.js | 12 ++++++++++++ static/app/config-manager.js | 4 +++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/services/api-server.js b/src/services/api-server.js index bf3e66f..6ad8921 100644 --- a/src/services/api-server.js +++ b/src/services/api-server.js @@ -366,6 +366,18 @@ async function startServer() { if (scheduledConfig?.enabled) { const interval = scheduledConfig.interval || CONFIG.CRON_NEAR_MINUTES * 60 * 1000; + // 启动时运行健康检查 + if (scheduledConfig.startupRun !== false) { + logger.info('[ScheduledHealthCheck] Running scheduled health check on startup...'); + setTimeout(async () => { + try { + await poolManager.performScheduledHealthChecks(); + } catch (error) { + logger.error('[ScheduledHealthCheck] Startup run error:', error); + } + }, 100); // 延迟100ms确保服务已完全就绪 + } + // 设置定时任务 setInterval(async () => { try { diff --git a/static/app/config-manager.js b/static/app/config-manager.js index e4b08ab..712cdc0 100644 --- a/static/app/config-manager.js +++ b/static/app/config-manager.js @@ -251,9 +251,11 @@ async function loadConfiguration() { if (scheduledHealthCheckIntervalEl) scheduledHealthCheckIntervalEl.value = 600000; } - // 定时健康检查间隔快捷按钮 + // 定时健康检查间隔快捷按钮(防止重复绑定) const intervalQuickBtns = document.querySelectorAll('#scheduledHealthCheckInterval + .quick-select-btns button'); intervalQuickBtns.forEach(btn => { + if (btn.dataset.listenerAttached) return; // 防止重复绑定 + btn.dataset.listenerAttached = 'true'; btn.addEventListener('click', (e) => { e.preventDefault(); const value = parseInt(btn.getAttribute('data-value'));