From 5ff76ca4ced0335adb9ceb89d936f5d4ba738ade Mon Sep 17 00:00:00 2001 From: kris Date: Mon, 30 Mar 2026 00:08:34 +0800 Subject: [PATCH] feat: tighten mobile discovery and production flow summaries --- web/storyforge-web-v4/assets/app.js | 12 ++++++++++++ web/storyforge-web-v4/tests/workbench-pages.test.mjs | 12 ++++++++++++ 2 files changed, 24 insertions(+) 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/);