diff --git a/ethend/public/index.html b/ethend/public/index.html index 36d9928..5725bd9 100644 --- a/ethend/public/index.html +++ b/ethend/public/index.html @@ -6109,7 +6109,7 @@ async function renderVMMonitorPanel() { for (var i = 0; i < allCalls.length; i++) { var call = allCalls[i]; - var ts = new Date(call.timestamp / 1e6).toISOString().replace('T', ' ').slice(0, 19); + var d = new Date(call.timestamp / 1e6); var ts = d.getFullYear()+'-'+String(d.getMonth()+1).padStart(2,'0')+'-'+String(d.getDate()).padStart(2,'0')+' '+String(d.getHours()).padStart(2,'0')+':'+String(d.getMinutes()).padStart(2,'0')+':'+String(d.getSeconds()).padStart(2,'0'); var successIcon = call.success ? '✅' : '❌'; var args = {}; try { args = JSON.parse(call.arguments || '{}'); } catch(e) {} @@ -6142,6 +6142,7 @@ async function renderVMMonitorPanel() { } // ========== 全链路追踪面板 ========== +function fmtLocal(ts) { var d = new Date(ts); var p = function(n) { return n < 10 ? '0' + n : '' + n; }; return d.getFullYear() + '-' + p(d.getMonth()+1) + '-' + p(d.getDate()) + ' ' + p(d.getHours()) + ':' + p(d.getMinutes()) + ':' + p(d.getSeconds()); } var traceMode = 'recent'; // 'recent' | 'session' var traceSessionId = ''; var traceStreamSource = null; @@ -6372,7 +6373,7 @@ function pruneTimeline() { } function traceHopHtml(t, prevT) { - var time = new Date(t.timestamp).toISOString().replace('T', ' ').slice(0, 19); + var time = t.timestamp; // already local time from backend var isError = t.status === 'error'; var gapHtml = ''; @@ -6425,7 +6426,7 @@ function llmCallToTrace(call) { var ts = call.time ? new Date(call.time).getTime() : Date.now(); return { id: 'llm-' + ts + '-' + Math.random().toString(36).slice(2, 6), - timestamp: new Date(ts).toISOString(), + timestamp: fmtLocal(ts), ts: ts, service: 'ai-core', hop: 'llm_call',