diff --git a/frontend/src/renderer/src/views/Login.vue b/frontend/src/renderer/src/views/Login.vue index ab290c05..e8f51666 100644 --- a/frontend/src/renderer/src/views/Login.vue +++ b/frontend/src/renderer/src/views/Login.vue @@ -440,9 +440,12 @@ const handleLogin = async () => { isLoading.value = true - // 网络访问测试(最多重试3次,短退避:200/400/800ms,总上限约 1.4s) + // 网络访问测试(打包后端启动较慢时,做短暂重试等待) + const MAX_HEALTH_ATTEMPTS = 6 + const HEALTH_BASE_DELAY_MS = 200 + const HEALTH_MAX_DELAY_MS = 1500 let healthOk = false - for (let attempt = 1; attempt <= 3; attempt++) { + for (let attempt = 1; attempt <= MAX_HEALTH_ATTEMPTS; attempt++) { try { const result = await systemAPI.health() if (result && result.status === 'healthy') { @@ -450,22 +453,22 @@ const handleLogin = async () => { break } else { // 后台返回非 healthy 状态 - if (attempt === 3) { + if (attempt === MAX_HEALTH_ATTEMPTS) { showError('后台服务异常,请稍后重试!') isLoading.value = false return } - const delay = 200 * Math.pow(2, attempt - 1) + const delay = Math.min(HEALTH_MAX_DELAY_MS, HEALTH_BASE_DELAY_MS * Math.pow(2, attempt - 1)) await new Promise(resolve => setTimeout(resolve, delay)) } } catch (error) { // 捕获异常,等待后重试 - if (attempt === 3) { + if (attempt === MAX_HEALTH_ATTEMPTS) { showError('网络访问失败,请检查连接后重试!') isLoading.value = false return } - const delay = 200 * Math.pow(2, attempt - 1) + const delay = Math.min(HEALTH_MAX_DELAY_MS, HEALTH_BASE_DELAY_MS * Math.pow(2, attempt - 1)) await new Promise(resolve => setTimeout(resolve, delay)) } }