feat: unify discovery project handoff actions
Some checks failed
StoryForge CI / Baseline checks (push) Has been cancelled
StoryForge CI / Backend tests (push) Has been cancelled
StoryForge CI / Web tests (push) Has been cancelled

This commit is contained in:
kris
2026-04-05 07:10:29 +08:00
parent 7a75f1cd85
commit f73d5cd406
3 changed files with 6 additions and 2 deletions

View File

@@ -451,3 +451,4 @@
- `导入当前对标 / 加入跟踪 / 账号分析 / 高分分析 / 查相似 / 存对标` 这批高频动作现在默认直接执行,不再先开表单。 - `导入当前对标 / 加入跟踪 / 账号分析 / 高分分析 / 查相似 / 存对标` 这批高频动作现在默认直接执行,不再先开表单。
- 执行后会按真实 `recommended_action` 继续落到任务详情、当前对象或关系区;只有当前没有可直接执行的候选时,才回退到原来的高级表单。 - 执行后会按真实 `recommended_action` 继续落到任务详情、当前对象或关系区;只有当前没有可直接执行的候选时,才回退到原来的高级表单。
- `接入当前项目` 卡片里的 `导入当前对标 / 加入跟踪` 也已统一切到 direct-execute避免同一页面里出现新旧两套动作体验。

View File

@@ -5951,8 +5951,8 @@ function renderDiscoveryOverviewSection({ selected, selectedProject, importedSou
<div class="task-meta"> <div class="task-meta">
<span class="tag">${escapeHtml(selectedProject?.name || "未选项目")}</span> <span class="tag">${escapeHtml(selectedProject?.name || "未选项目")}</span>
<span class="tag">${escapeHtml(getSelectedAssistant()?.name || "未选 Agent")}</span> <span class="tag">${escapeHtml(getSelectedAssistant()?.name || "未选 Agent")}</span>
${actionTag(importedSources.length ? "继续同步" : "导入当前对标", "open-import-selected-account")} ${actionTag(importedSources.length ? "继续同步" : "导入当前对标", "direct-import-selected-account")}
${tracked ? `<span class="tag green">已在跟踪</span>` : actionTag("加入跟踪", "open-track-selected-account")} ${tracked ? `<span class="tag green">已在跟踪</span>` : actionTag("加入跟踪", "direct-track-selected-account")}
</div> </div>
</div> </div>
` : `<div class="task-item"><h4>还没有选中账号</h4><p>先从上方列表选一个对标账号,再决定是否导入到当前项目。</p></div>`} ` : `<div class="task-item"><h4>还没有选中账号</h4><p>先从上方列表选一个对标账号,再决定是否导入到当前项目。</p></div>`}

View File

@@ -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", () => { test("discovery page promotes selected-account actions into direct execute flows", () => {
const discovery = extractBetween(APP, "function renderDiscoveryScreen()", "function renderTrackingScreen()"); 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 runDirectDiscoveryAction\(executorKey, payload, options = \{\}\)/);
assert.match(APP, /async function followRecommendedActionResult\(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-import-selected-account"\)/);
assert.match(discovery, /actionTag\("账号分析", "direct-analyze-selected-account"\)/); assert.match(discovery, /actionTag\("账号分析", "direct-analyze-selected-account"\)/);
assert.match(discovery, /actionTag\("查相似", "direct-search-similar"\)/); assert.match(discovery, /actionTag\("查相似", "direct-search-similar"\)/);