diff --git a/public/index.html b/public/index.html
index 70b49b1..e9064c3 100644
--- a/public/index.html
+++ b/public/index.html
@@ -74,7 +74,7 @@ td{padding:6px 10px;border-bottom:1px solid rgba(26,39,64,.5)}
请求日志
-
+
@@ -152,8 +152,23 @@ function renderMatrix(){
function renderLogs(){
const reqs=DATA.requests||[];
+ // Populate filters
+ const nodes=[...new Set(reqs.map(r=>r.node_name||r.node_id))].sort();
+ const ups=[...new Set(reqs.map(r=>r.upstream))].sort();
+ const fN=$('#fNode'),fU=$('#fUp');
+ const nv=fN.value,uv=fU.value;
+ fN.innerHTML=''+nodes.map(n=>``).join('');
+ fU.innerHTML=''+ups.map(u=>``).join('');
+ // Filter
+ const fR=$('#fRes').value;
+ const filtered=reqs.filter(r=>{
+ if(nv&&(r.node_name||r.node_id)!==nv)return false;
+ if(uv&&r.upstream!==uv)return false;
+ if(fR!==''&&String(r.success?1:0)!==fR)return false;
+ return true;
+ });
let h='| 时间 | 节点 | 供应商 | 模型 | 结果 | 状态 | 输入 | 输出 | 首字 | 总耗时 |
';
- reqs.forEach(r=>{
+ filtered.forEach(r=>{
const t=new Date(r.ts*1000).toLocaleTimeString('zh-CN');
h+='| '+t+' | '+(r.node_name||r.node_id)+' | '+r.upstream+' | '+r.model+' | ';
h+=''+(r.success?'✓':'✗')+' | '+r.status+' | ';