From 86c6046fbc9fc67d2446fb2ddfc826494f1f0cb3 Mon Sep 17 00:00:00 2001 From: wangfq Date: Fri, 5 Jun 2026 14:34:13 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=B5=8B=E8=AF=95=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E9=A1=B5=E4=B8=89=E4=B8=AA=E6=95=B0=E6=8D=AE=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E5=8C=BA=E5=9B=A0=20relay=5Fcode=20=E6=94=B9=E5=8A=A8=E4=B8=8D?= =?UTF-8?q?=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题原因: 1. pollProgress 中所有 render 调用共用一个 try-catch, 一处报错会导致后续所有渲染被跳过(级联失败) 2. 页面加载时没有初始化数据查询——不启动自动化就永远显示 占位符 修复: - 每个 render 调用独立 try-catch,互不影响 - 页面加载时调用 loadInitialData(),自动显示最新测试数据 和波动测试数据 - records 增加 length>0 判断,避免空数组误触发渲染 --- edc-web/app/static/js/test_op.js | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/edc-web/app/static/js/test_op.js b/edc-web/app/static/js/test_op.js index dc6cf3b..7b52d6c 100644 --- a/edc-web/app/static/js/test_op.js +++ b/edc-web/app/static/js/test_op.js @@ -244,17 +244,30 @@ async function pollProgress() { } } - // 显示最新结果 - if (data.latest) renderLatest(data.latest); - if (data.averages) renderAverages(data.averages); - if (data.latest_wave) renderLatestWave(data.latest_wave); - if (data.records) renderRecords(data.records); + // 显示最新结果(独立 try-catch,避免一处报错影响全部) + try { if (data.latest) renderLatest(data.latest); } catch (e) { console.error("renderLatest:", e); } + try { if (data.averages) renderAverages(data.averages); } catch (e) { console.error("renderAverages:", e); } + try { if (data.latest_wave) renderLatestWave(data.latest_wave); } catch (e) { console.error("renderLatestWave:", e); } + try { if (data.records && data.records.length) renderRecords(data.records); } catch (e) { console.error("renderRecords:", e); } } catch (e) { console.error("轮询失败:", e); } } +// ─── 页面加载时获取初始数据 ────────────────────── +async function loadInitialData() { + try { + const resp = await fetch(`/api/automation/${DNT_ID}/progress`); + const data = await resp.json(); + if (data.latest) renderLatest(data.latest); + if (data.latest_wave) renderLatestWave(data.latest_wave); + } catch (e) { + // 初始加载静默失败 + } +} +loadInitialData(); + // ─── UI ──────────────────────────────────────── function setStatus(msg) {