From 0dfb928375dd0c20079e87851882994d8b796c02 Mon Sep 17 00:00:00 2001 From: wangfq Date: Fri, 12 Jun 2026 11:10:09 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=A2=AB=E5=8A=A8=E8=BD=AE=E8=AF=A2?= =?UTF-8?q?=E9=97=B4=E9=9A=94=E6=94=B9=E4=B8=BA=203=20=E7=A7=92=20+=20?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=20B2=20=E8=AE=B0=E5=BD=95=E6=9D=A1=E6=95=B0?= =?UTF-8?q?=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 数据轮询独立于设备状态刷新:refreshLatestData 每 3 秒,refreshAll 每 5 秒 - 「当前测试数据」标题旁显示新记录条数 (x 条新记录) - 仅 B2(灵敏度测试) 新记录计数,页面加载/自动化开始时复位 - pollProgress 同步更新计数器,自动化与被动模式无冲突 --- edc-web/app/static/js/test_op.js | 29 ++++++++++++++++++++++++++--- edc-web/app/templates/test_op.html | 2 +- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/edc-web/app/static/js/test_op.js b/edc-web/app/static/js/test_op.js index 354d842..82d3f3b 100644 --- a/edc-web/app/static/js/test_op.js +++ b/edc-web/app/static/js/test_op.js @@ -78,6 +78,8 @@ async function startAuto() { autoFailed = 0; autoRemaining = count; lastDoneCount = 0; + newB2Count = 0; + updateRecordCount(); autoStartTime = new Date().toISOString(); const now = new Date(); @@ -218,7 +220,13 @@ async function pollProgress() { const stats = data.stats; // ── 先渲染数据(放在所有 return 之前,避免完成时跳过渲染)── - try { if (data.latest) { renderLatest(data.latest); lastLatestId = data.latest.id; } } catch (e) { console.error("renderLatest:", e); } + try { if (data.latest) { + if (data.latest.id !== lastLatestId) { + lastLatestId = data.latest.id; + if (data.latest.data_source === "B2") { newB2Count++; updateRecordCount(); } + } + 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); lastWaveId = data.latest_wave.id; } } catch (e) { console.error("renderLatestWave:", e); } try { if (data.records && data.records.length) renderRecords(data.records); } catch (e) { console.error("renderRecords:", e); } @@ -386,6 +394,8 @@ async function loadInitialData() { await loadDeviceTypeNames(); await loadTestMode(); refreshDeviceStatus(); + newB2Count = 0; + updateRecordCount(); try { const resp = await fetch(`/api/automation/${DNT_ID}/progress`); const data = await resp.json(); @@ -426,6 +436,12 @@ async function refreshDeviceStatus() { let lastLatestId = 0; // 最新测试数据 ID,用于判断是否有新数据 let lastWaveId = 0; // 最新波动数据 ID +let newB2Count = 0; // 本轮新收到的 B2(灵敏度测试) 记录条数 + +function updateRecordCount() { + const el = document.getElementById("new-record-count"); + if (el) el.textContent = newB2Count > 0 ? `(${newB2Count} 条新记录)` : ""; +} async function refreshLatestData() { // 自动化运行中由 pollProgress 负责渲染,避免冲突 @@ -436,6 +452,11 @@ async function refreshLatestData() { if (data.latest && data.latest.id !== lastLatestId) { lastLatestId = data.latest.id; renderLatest(data.latest); + // 仅 B2(灵敏度测试) 记录计数 + if (data.latest.data_source === "B2") { + newB2Count++; + updateRecordCount(); + } } if (data.latest_wave && data.latest_wave.id !== lastWaveId) { lastWaveId = data.latest_wave.id; @@ -444,12 +465,14 @@ async function refreshLatestData() { } catch (e) { /* 静默失败 */ } } -// 每 5 秒刷新设备状态 + 测试模式 + 型号名称缓存 + 最新测试数据 +// 最新测试数据每 3 秒轮询 +setInterval(refreshLatestData, 3000); + +// 每 5 秒刷新设备状态 + 测试模式 + 型号名称缓存(工装页修改后能及时同步) async function refreshAll() { await loadDeviceTypeNames(); await loadTestMode(); refreshDeviceStatus(); - refreshLatestData(); // 不 await,避免阻塞 } setInterval(refreshAll, 5000); diff --git a/edc-web/app/templates/test_op.html b/edc-web/app/templates/test_op.html index de8605c..45850c9 100644 --- a/edc-web/app/templates/test_op.html +++ b/edc-web/app/templates/test_op.html @@ -89,7 +89,7 @@
-

当前测试数据

+

当前测试数据

等待设备上报...