fix: restore login and GPU display - upTr function brace balance

This commit is contained in:
root 2026-05-20 09:31:25 +08:00
parent 7825471c57
commit 3583413e62

View File

@ -488,8 +488,7 @@ async function sendCardMsg(){const i=document.getElementById('card-chat-input'),
async function sendMsg(){const i=document.getElementById('chat-input'),m=i.value.trim();if(!m)return;i.value='';const ms=document.getElementById('chat-msgs');const ud=document.createElement('div');ud.className='c-msg user';ud.innerHTML='<div class="c-c">'+m.replace(/</g,'&lt;').replace(/>/g,'&gt;')+'</div>';ms.appendChild(ud);ms.scrollTop=ms.scrollHeight;const ld=document.createElement('div');ld.className='c-msg bot loading';ld.innerHTML='<div class="c-c">✦ 思考中...</div>';ms.appendChild(ld);ms.scrollTop=ms.scrollHeight;addToHistory('user',m);try{const u=localStorage.getItem('current_user')||'';const r=await fetch('/api/chat',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({message:m,user:u,history:getChatHistory()})});const d=await r.json();ld.className='c-msg bot';ld.innerHTML='<div class="c-c">'+d.reply.replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/\n/g,'<br>')+'</div>';addToHistory('assistant',d.reply)}catch(e){ld.className='c-msg bot';ld.innerHTML='<div class="c-c"><span style="opacity:.6">连接暂不可用</span></div>'}ms.scrollTop=ms.scrollHeight}
/* ── 训练进度 ── */
async function upTr(){try{const r=await fetch('/training-status.json');if(!r.ok)return;const d=await r.json();if(!d.phase)return;const p=d.display_pct||0;const ds=d.display_step||'—';document.getElementById('train-step').textContent=ds;document.getElementById('train-pct').textContent=p.toFixed(1)+'%';document.getElementById('train-bar').style.width=Math.min(p,100)+'%';if(d.loss&&d.loss!='--'){document.getElementById('train-loss').textContent=d.loss}else if(d.gpu){document.getElementById('train-loss').textContent=d.gpu.mem_used_gb+'/'+d.gpu.mem_total_gb+'GB'}const e=document.getElementById('train-eta');if(e)e.textContent='蒸馏中 · '+ds;const z=document.getElementById('persona-zhu-status');if(z)z.textContent='蒸馏中 · '+p.toFixed(0)+'%';const tag=document.getElementById('status-tag');if(tag)tag.textContent='● '+(d.phase||'运行中');const g=document.getElementById('gpu-info');if(g&&d.gpu){g.textContent='GPU: '+d.gpu.temp_c+'C | '+d.gpu.mem_used_gb+'/'+d.gpu.mem_total_gb+'GB | '+d.gpu.gpu_util_pct+'%'}if(d.phase==='completed'){document.getElementById('train-eta').textContent='蒸馏完成 即将上传COS'}}catch(e){}}atch(e){}}
setInterval(upTr,30000);upTr();
async function upTr(){try{const r=await fetch('/training-status.json');if(!r.ok)return;const d=await r.json();if(!d.phase)return;const p=d.display_pct||0;const ds=d.display_step||'—';document.getElementById('train-step').textContent=ds;document.getElementById('train-pct').textContent=p.toFixed(1)+'%';document.getElementById('train-bar').style.width=Math.min(p,100)+'%';if(d.loss&&d.loss!='--'){document.getElementById('train-loss').textContent=d.loss}else if(d.gpu){document.getElementById('train-loss').textContent=d.gpu.mem_used_gb+'/'+d.gpu.mem_total_gb+'GB'}const e=document.getElementById('train-eta');if(e)e.textContent='蒸馏中 · '+ds;const z=document.getElementById('persona-zhu-status');if(z)z.textContent='蒸馏中 · '+p.toFixed(0)+'%';const tag=document.getElementById('status-tag');if(tag)tag.textContent='● '+(d.phase||'运行中');const g=document.getElementById('gpu-info');if(g&&d.gpu){g.textContent='GPU: '+d.gpu.temp_c+'C | '+d.gpu.mem_used_gb+'/'+d.gpu.mem_total_gb+'GB | '+d.gpu.gpu_util_pct+'%'}if(d.phase==='completed'){document.getElementById('train-eta').textContent='蒸馏完成 即将上传COS'}}catch(e){}},30000);upTr();
/* ── Notion ── */
async function connectNotion(){try{window.location.href='/api/notion/connect?user_key=default'}catch(e){alert('Notion 连接暂时不可用')}}