feat: 被动轮询间隔改为 3 秒 + 新增 B2 记录条数显示
- 数据轮询独立于设备状态刷新:refreshLatestData 每 3 秒,refreshAll 每 5 秒 - 「当前测试数据」标题旁显示新记录条数 (x 条新记录) - 仅 B2(灵敏度测试) 新记录计数,页面加载/自动化开始时复位 - pollProgress 同步更新计数器,自动化与被动模式无冲突
This commit is contained in:
@@ -78,6 +78,8 @@ async function startAuto() {
|
|||||||
autoFailed = 0;
|
autoFailed = 0;
|
||||||
autoRemaining = count;
|
autoRemaining = count;
|
||||||
lastDoneCount = 0;
|
lastDoneCount = 0;
|
||||||
|
newB2Count = 0;
|
||||||
|
updateRecordCount();
|
||||||
autoStartTime = new Date().toISOString();
|
autoStartTime = new Date().toISOString();
|
||||||
|
|
||||||
const now = new Date();
|
const now = new Date();
|
||||||
@@ -218,7 +220,13 @@ async function pollProgress() {
|
|||||||
const stats = data.stats;
|
const stats = data.stats;
|
||||||
|
|
||||||
// ── 先渲染数据(放在所有 return 之前,避免完成时跳过渲染)──
|
// ── 先渲染数据(放在所有 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.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.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); }
|
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 loadDeviceTypeNames();
|
||||||
await loadTestMode();
|
await loadTestMode();
|
||||||
refreshDeviceStatus();
|
refreshDeviceStatus();
|
||||||
|
newB2Count = 0;
|
||||||
|
updateRecordCount();
|
||||||
try {
|
try {
|
||||||
const resp = await fetch(`/api/automation/${DNT_ID}/progress`);
|
const resp = await fetch(`/api/automation/${DNT_ID}/progress`);
|
||||||
const data = await resp.json();
|
const data = await resp.json();
|
||||||
@@ -426,6 +436,12 @@ async function refreshDeviceStatus() {
|
|||||||
|
|
||||||
let lastLatestId = 0; // 最新测试数据 ID,用于判断是否有新数据
|
let lastLatestId = 0; // 最新测试数据 ID,用于判断是否有新数据
|
||||||
let lastWaveId = 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() {
|
async function refreshLatestData() {
|
||||||
// 自动化运行中由 pollProgress 负责渲染,避免冲突
|
// 自动化运行中由 pollProgress 负责渲染,避免冲突
|
||||||
@@ -436,6 +452,11 @@ async function refreshLatestData() {
|
|||||||
if (data.latest && data.latest.id !== lastLatestId) {
|
if (data.latest && data.latest.id !== lastLatestId) {
|
||||||
lastLatestId = data.latest.id;
|
lastLatestId = data.latest.id;
|
||||||
renderLatest(data.latest);
|
renderLatest(data.latest);
|
||||||
|
// 仅 B2(灵敏度测试) 记录计数
|
||||||
|
if (data.latest.data_source === "B2") {
|
||||||
|
newB2Count++;
|
||||||
|
updateRecordCount();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (data.latest_wave && data.latest_wave.id !== lastWaveId) {
|
if (data.latest_wave && data.latest_wave.id !== lastWaveId) {
|
||||||
lastWaveId = data.latest_wave.id;
|
lastWaveId = data.latest_wave.id;
|
||||||
@@ -444,12 +465,14 @@ async function refreshLatestData() {
|
|||||||
} catch (e) { /* 静默失败 */ }
|
} catch (e) { /* 静默失败 */ }
|
||||||
}
|
}
|
||||||
|
|
||||||
// 每 5 秒刷新设备状态 + 测试模式 + 型号名称缓存 + 最新测试数据
|
// 最新测试数据每 3 秒轮询
|
||||||
|
setInterval(refreshLatestData, 3000);
|
||||||
|
|
||||||
|
// 每 5 秒刷新设备状态 + 测试模式 + 型号名称缓存(工装页修改后能及时同步)
|
||||||
async function refreshAll() {
|
async function refreshAll() {
|
||||||
await loadDeviceTypeNames();
|
await loadDeviceTypeNames();
|
||||||
await loadTestMode();
|
await loadTestMode();
|
||||||
refreshDeviceStatus();
|
refreshDeviceStatus();
|
||||||
refreshLatestData(); // 不 await,避免阻塞
|
|
||||||
}
|
}
|
||||||
setInterval(refreshAll, 5000);
|
setInterval(refreshAll, 5000);
|
||||||
|
|
||||||
|
|||||||
@@ -89,7 +89,7 @@
|
|||||||
|
|
||||||
<!-- 右侧:测试信息显示区 -->
|
<!-- 右侧:测试信息显示区 -->
|
||||||
<div class="test-info">
|
<div class="test-info">
|
||||||
<h3>当前测试数据</h3>
|
<h3>当前测试数据 <span id="new-record-count" style="font-size:12px;color:#888;font-weight:normal;margin-left:8px;"></span></h3>
|
||||||
<div id="latest-result">
|
<div id="latest-result">
|
||||||
<p class="placeholder">等待设备上报...</p>
|
<p class="placeholder">等待设备上报...</p>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user