Fix 3qfx task context fallback

This commit is contained in:
Administrator committed 2026-06-27 15:12:28 +08:00
1 parent 9572b66ecb
commit c978a25b7f
3 files changed
+34 -5

No files matched your search

+20 -4
View File
@@ -53,6 +53,7 @@ import { env } from "@/env";
import { readTaskContext, taskThreadMetadata } from "@/core/auth/task-purpose";
import { TaskPurposePanel } from "@/strategy-components/components/task-components/TaskPurposePanel";
import { desensitize } from "@/lib/desensitize";
import { buildTaskOpeningText, readCopTaskDetail } from "@/core/auth/task-deeplink";
/** 内置「模板数据转换器」agent 的稳定 id。仅此 agent 的对话页显示「页面模板 + 渲染预览」调试入口。 */
const TEMPLATE_BUILDER_AGENT_ID = "template-json-builder";
@@ -100,10 +101,25 @@ export default function AgentChatPage({
// 任务深链上下文(taskId + 开场信息):闸门(rwfx)与纯绑定(3qfx/xdfx)都要读取。
const taskCtxOn = !!(taskGate || taskBind);
const taskContext = useMemo(
() => (taskCtxOn ? readTaskContext() : null),
[taskCtxOn],
);
const taskContext = useMemo(() => {
if (!taskCtxOn) return null;
const stored = readTaskContext();
if (stored && stored.agentId === agent_id) return stored;
// 3qfx:若任务上下文偶发丢失,但登录深链留下的任务详情仍在,则用它前端兜底重建
// taskId + openingText,避免 landing 既不自动开始、也没有“开始回答”按钮。
if (taskBind && !taskGate) {
const detail = readCopTaskDetail();
const fallbackTaskId = detail?.id == null ? "" : String(detail.id).trim();
if (detail && fallbackTaskId && agent_id) {
return {
taskId: fallbackTaskId,
agentId: agent_id,
openingText: buildTaskOpeningText(detail, fallbackTaskId),
};
}
}
return stored;
}, [agent_id, taskBind, taskCtxOn, taskGate]);
const taskId =
taskCtxOn && taskContext && taskContext.agentId === agent_id
? taskContext.taskId