feat: highlight problem main agent runs

This commit is contained in:
kris
2026-03-29 22:51:02 +08:00
parent 2f3ac47439
commit 568e8091c1
2 changed files with 11 additions and 1 deletions

View File

@@ -985,10 +985,12 @@ function renderOneLinerRunsHtml() {
const pendingRunCount = safeArray(runs).filter((item) => item.run_status === "needs_confirmation").length;
const activeRunCount = safeArray(runs).filter((item) => ["queued", "running", "blocked"].includes(item.run_status)).length;
const completedRunCount = safeArray(runs).filter((item) => item.run_status === "done").length;
const filterKey = String(appState.onelinerRunFilter || "").trim() || (activeRunCount || pendingRunCount ? "focus" : "done");
const problemRunCount = safeArray(runs).filter((item) => ["blocked", "failed", "cancelled"].includes(item.run_status)).length;
const filterKey = String(appState.onelinerRunFilter || "").trim() || (activeRunCount || pendingRunCount ? "focus" : completedRunCount ? "done" : "problems");
const runFilterPredicates = {
focus: (item) => ["needs_confirmation", "queued", "running", "blocked"].includes(item.run_status),
done: (item) => item.run_status === "done",
problems: (item) => ["blocked", "failed", "cancelled"].includes(item.run_status),
all: () => true
};
const filteredRuns = safeArray(runs).filter(runFilterPredicates[filterKey] || runFilterPredicates.focus);
@@ -1035,10 +1037,12 @@ function renderOneLinerRunsHtml() {
<span class="tag blue">待确认 ${escapeHtml(formatNumber(pendingRunCount))}</span>
<span class="tag green">执行中 ${escapeHtml(formatNumber(activeRunCount))}</span>
<span class="tag">已完成 ${escapeHtml(formatNumber(completedRunCount))}</span>
<span class="tag orange">异常 ${escapeHtml(formatNumber(problemRunCount))}</span>
</div>
<div class="task-meta" style="margin-top:10px;">
<span class="tag clickable-tag ${filterKey === "focus" ? "blue" : ""}" data-action="select-oneliner-run-filter" data-run-filter="focus">重点运行</span>
<span class="tag clickable-tag ${filterKey === "done" ? "green" : ""}" data-action="select-oneliner-run-filter" data-run-filter="done">已完成</span>
<span class="tag clickable-tag ${filterKey === "problems" ? "orange" : ""}" data-action="select-oneliner-run-filter" data-run-filter="problems">异常运行</span>
<span class="tag clickable-tag ${filterKey === "all" ? "orange" : ""}" data-action="select-oneliner-run-filter" data-run-filter="all">全部</span>
</div>
${runs.length > 1 ? `
@@ -1057,6 +1061,9 @@ function renderOneLinerRunsHtml() {
</span>
`).join("")}
</div>
${!filteredRuns.length ? `
<div class="panel-subtitle" style="margin-top:8px;">当前筛选下还没有对应运行,已临时显示全部任务。</div>
` : ""}
` : ""}
</div>
<div class="task-item compact oneliner-run-card">

View File

@@ -311,12 +311,15 @@ test("oneliner runtime shows grouped run health summary above the current run ca
assert.match(runtime, /待确认/);
assert.match(runtime, /执行中/);
assert.match(runtime, /已完成/);
assert.match(runtime, /异常/);
assert.match(runtime, /最近完成/);
assert.match(runtime, /recentCompletedRuns/);
assert.match(runtime, /select-oneliner-run-filter/);
assert.match(runtime, /重点运行/);
assert.match(runtime, /已完成/);
assert.match(runtime, /异常运行/);
assert.match(runtime, /全部/);
assert.match(runtime, /problemRunCount/);
assert.match(runtime, /safeArray\(runs\)\.filter\(\(item\) => item\.run_status === "needs_confirmation"\)\.length/);
});