feat: 被动轮询间隔改为 3 秒 + 新增 B2 记录条数显示
- 数据轮询独立于设备状态刷新:refreshLatestData 每 3 秒,refreshAll 每 5 秒 - 「当前测试数据」标题旁显示新记录条数 (x 条新记录) - 仅 B2(灵敏度测试) 新记录计数,页面加载/自动化开始时复位 - pollProgress 同步更新计数器,自动化与被动模式无冲突
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
|
||||
<!-- 右侧:测试信息显示区 -->
|
||||
<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">
|
||||
<p class="placeholder">等待设备上报...</p>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user