From f73d5cd40615d9e08b2f7cd9a2fa34ffdf9383fc Mon Sep 17 00:00:00 2001 From: kris Date: Sun, 5 Apr 2026 07:10:29 +0800 Subject: [PATCH] feat: unify discovery project handoff actions --- CHANGELOG.md | 1 + web/storyforge-web-v4/assets/app.js | 4 ++-- web/storyforge-web-v4/tests/workbench-pages.test.mjs | 3 +++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cb1f062..ec7097c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -451,3 +451,4 @@ - `导入当前对标 / 加入跟踪 / 账号分析 / 高分分析 / 查相似 / 存对标` 这批高频动作现在默认直接执行,不再先开表单。 - 执行后会按真实 `recommended_action` 继续落到任务详情、当前对象或关系区;只有当前没有可直接执行的候选时,才回退到原来的高级表单。 +- `接入当前项目` 卡片里的 `导入当前对标 / 加入跟踪` 也已统一切到 direct-execute,避免同一页面里出现新旧两套动作体验。 diff --git a/web/storyforge-web-v4/assets/app.js b/web/storyforge-web-v4/assets/app.js index 88f949a..2161867 100644 --- a/web/storyforge-web-v4/assets/app.js +++ b/web/storyforge-web-v4/assets/app.js @@ -5951,8 +5951,8 @@ function renderDiscoveryOverviewSection({ selected, selectedProject, importedSou
${escapeHtml(selectedProject?.name || "未选项目")} ${escapeHtml(getSelectedAssistant()?.name || "未选 Agent")} - ${actionTag(importedSources.length ? "继续同步" : "导入当前对标", "open-import-selected-account")} - ${tracked ? `已在跟踪` : actionTag("加入跟踪", "open-track-selected-account")} + ${actionTag(importedSources.length ? "继续同步" : "导入当前对标", "direct-import-selected-account")} + ${tracked ? `已在跟踪` : actionTag("加入跟踪", "direct-track-selected-account")}
` : `

还没有选中账号

先从上方列表选一个对标账号,再决定是否导入到当前项目。

`} diff --git a/web/storyforge-web-v4/tests/workbench-pages.test.mjs b/web/storyforge-web-v4/tests/workbench-pages.test.mjs index efc2cc9..3cb7770 100644 --- a/web/storyforge-web-v4/tests/workbench-pages.test.mjs +++ b/web/storyforge-web-v4/tests/workbench-pages.test.mjs @@ -444,8 +444,11 @@ test("mobile discovery and production simplify duplicated top-level actions", () test("discovery page promotes selected-account actions into direct execute flows", () => { const discovery = extractBetween(APP, "function renderDiscoveryScreen()", "function renderTrackingScreen()"); + const discoveryOverview = extractBetween(APP, "function renderDiscoveryOverviewSection(", "function renderDiscoveryRelationsSection("); assert.match(APP, /async function runDirectDiscoveryAction\(executorKey, payload, options = \{\}\)/); assert.match(APP, /async function followRecommendedActionResult\(payload, options = \{\}\)/); + assert.match(discoveryOverview, /direct-import-selected-account/); + assert.match(discoveryOverview, /direct-track-selected-account/); assert.match(discovery, /actionTag\("导入当前对标", "direct-import-selected-account"\)/); assert.match(discovery, /actionTag\("账号分析", "direct-analyze-selected-account"\)/); assert.match(discovery, /actionTag\("查相似", "direct-search-similar"\)/);