diff --git a/web/storyforge-web-v4/assets/app.js b/web/storyforge-web-v4/assets/app.js
index 0eed9a4..f9521b9 100644
--- a/web/storyforge-web-v4/assets/app.js
+++ b/web/storyforge-web-v4/assets/app.js
@@ -5477,6 +5477,12 @@ function renderDiscoveryScreen() {
${escapeHtml(getAccountName(selected) || "未选中")}
+
+ 当前对标 ${escapeHtml(getAccountName(selected) || "未选中")}
+ ${escapeHtml(importedSources.length ? `已接入 ${importedSources.length}` : "未接入项目")}
+ ${escapeHtml(tracked ? "已加入跟踪" : "未加入跟踪")}
+ ${escapeHtml(reports.length ? `报告 ${reports.length}` : "暂无报告")}
+
${selectedSummaryHtml}
${renderDetailTabs("discoveryDetailTab", detailTabs)}
${detailBodyHtml}
@@ -6037,6 +6043,12 @@ function renderProductionScreen() {
把队列、恢复、录制和产物拆开看,减少一次性信息量。
+
+ 处理中 ${escapeHtml(formatNumber(activeJobs.length || jobs.filter((item) => item.status !== "completed").length))}
+ 失败 ${escapeHtml(formatNumber(failedJobs.length))}
+ 可恢复 ${escapeHtml(formatNumber(recoverableCount))}
+ 产物 ${escapeHtml(formatNumber(works.length))}
+
${renderDetailTabs("productionDetailTab", tabs)}
${activeTab === "queue" ? `
diff --git a/web/storyforge-web-v4/tests/workbench-pages.test.mjs b/web/storyforge-web-v4/tests/workbench-pages.test.mjs
index bc24df7..0a25710 100644
--- a/web/storyforge-web-v4/tests/workbench-pages.test.mjs
+++ b/web/storyforge-web-v4/tests/workbench-pages.test.mjs
@@ -123,6 +123,18 @@ test("discovery, production, and admin screens use page tabs for heavy content",
assert.match(strategy, /renderPolicyAuditFeed\(/);
});
+test("discovery and production screens expose compact mobile flow summaries", () => {
+ const discovery = extractBetween(APP, "function renderDiscoveryScreen()", "function renderTrackingScreen()");
+ const production = extractBetween(APP, "function renderProductionScreen()", "function renderReviewScreen()");
+
+ assert.match(discovery, /mobile-only compact-summary-row/);
+ assert.match(discovery, /当前对标/);
+ assert.match(discovery, /已接入/);
+ assert.match(production, /mobile-only compact-summary-row/);
+ assert.match(production, /处理中/);
+ assert.match(production, /失败/);
+});
+
test("projects screen uses an adaptive project grid instead of a fixed three-column squeeze", () => {
const projects = extractBetween(APP, "function renderProjectsScreen()", "function getActiveDetailTab(");
assert.match(projects, /project-status-grid/);