diff --git a/frontend/web/src/components/intelligent_eval/EvalOverview.tsx b/frontend/web/src/components/intelligent_eval/EvalOverview.tsx index aa636ab..902a95b 100644 --- a/frontend/web/src/components/intelligent_eval/EvalOverview.tsx +++ b/frontend/web/src/components/intelligent_eval/EvalOverview.tsx @@ -19,18 +19,18 @@ function PlanView({ ev }: { ev: IntelligentEval }) { if (!plan) return return (
- + {plan.estimated_sessions} {plan.budget?.max_turns_per_session ?? '—'} {plan.budget?.total_max_turns ?? '—'} -
评测维度
+
评测维度
- {(plan.dimensions ?? []).map((d) => {d})} + {(plan.dimensions ?? []).map((d) => {d})} -
虚拟用户
+
虚拟用户
{(plan.virtual_users ?? []).map((u, i) => (
@@ -39,11 +39,11 @@ function PlanView({ ev }: { ev: IntelligentEval }) { ))} -
时间分布
+
时间分布
{(plan.time_distribution ?? []).map((t, i) => (
- {t.time_slot} {t.sessions} 个会话 · {t.scenario} + {t.time_slot} {t.sessions} 个会话 · {t.scenario}
))}
@@ -72,25 +72,103 @@ export default function EvalOverview({ ev, targetName }: EvalOverviewProps) { const sessions = showSessions ? ev.sessions ?? [] : [] return ( - - - - - {targetName} - - {meta.label} - - {ev.time_window_hours} 小时 - {formatDateTime(ev.created_at)} - {formatDateTime(ev.started_at)} - {formatDateTime(ev.completed_at)} - {ev.completed_sessions}/{ev.session_count} - - +
+ + + + + {targetName} + + {meta.label} + + {ev.time_window_hours} 小时 + {formatDateTime(ev.created_at)} + {formatDateTime(ev.started_at)} + {formatDateTime(ev.completed_at)} + {ev.completed_sessions}/{ev.plan?.estimated_sessions ?? ev.session_count} + + + - -
-
+ + {ev.status === 'planning' && ( + ev.plan_feedback ? ( + + ) : ( + + + + OpenClaw 正在规划,产出粗计划后会自动进入待审批… + + + ) + )} + + {(ev.status === 'pending_approval' || ev.status === 'executing' || ev.status === 'completed') && ( + + + + )} + + {showSessions && ( + + )} + > + {sessions.length === 0 && ( +
+ 等待 OpenClaw 按粗计划的时间分布创建会话… +
+ )} + {sessions.map((s) => { + const sMeta = SESSION_STATUS[s.status] + return ( +
+ {personaLabel(s.persona)} + {sMeta.label} + {s.dimension && {s.dimension}} + {s.goal} + {s.turn_count} 轮 + {s.created_at && ( + {shortDateTime(s.created_at)} + )} +
+ ) + })} + {ev.status === 'executing' && ( +
+ 会话由 OpenClaw 按粗计划的时间分布自唤醒创建,本页每 5 秒自动刷新 +
+ )} +
+ )} + + + + + + +
评估目标
-
+
考察意图
-
-
种子集
- {Object.keys(ev.seeds ?? {}).length === 0 ? ( -
- ) : ( -
-                  {JSON.stringify(ev.seeds, null, 2)}
-                
- )} -
-
- - - - - {ev.status === 'planning' && ( - ev.plan_feedback ? ( - - ) : ( - - - - OpenClaw 正在规划,产出粗计划后会自动进入待审批… - - - ) - )} - - {(ev.status === 'pending_approval' || ev.status === 'executing' || ev.status === 'completed') && ( - - - - )} - - {showSessions && ( - + + +
种子集
+ {Object.keys(ev.seeds ?? {}).length === 0 ? ( +
+ ) : ( +
+                {JSON.stringify(ev.seeds, null, 2)}
+              
)} - > - {sessions.length === 0 && ( -
- 等待 OpenClaw 按粗计划的时间分布创建会话… -
- )} - {sessions.map((s) => { - const sMeta = SESSION_STATUS[s.status] - return ( -
- {personaLabel(s.persona)} - {sMeta.label} - {s.dimension && {s.dimension}} - {s.goal} - {s.turn_count} 轮 - {s.created_at && ( - {shortDateTime(s.created_at)} - )} -
- ) - })} - {ev.status === 'executing' && ( -
- 会话由 OpenClaw 按粗计划的时间分布自唤醒创建,本页每 5 秒自动刷新 -
- )} -
- )} - - + + + +
) } diff --git a/frontend/web/src/pages/IntelligentEvals.tsx b/frontend/web/src/pages/IntelligentEvals.tsx index b7f407a..c2f4896 100644 --- a/frontend/web/src/pages/IntelligentEvals.tsx +++ b/frontend/web/src/pages/IntelligentEvals.tsx @@ -274,7 +274,7 @@ export default function IntelligentEvalsPage() { title={selected?.name ?? '评估详情'} open={selectedId != null} onClose={closeDrawer} - width={1000} + width={1200} destroyOnClose styles={{ body: { padding: 0, display: 'flex', flexDirection: 'column' } }} extra={selected && (