From 7d32b41e90eaa098b471f6fe825327ee4bfc5cbe Mon Sep 17 00:00:00 2001 From: fengxiangdebaozi <10845145+fengxiangdebaozi@user.noreply.gitee.com> Date: Mon, 22 Jun 2026 10:46:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E8=BD=BD=E6=A1=86=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pages/RoundtablePlanningPage.tsx | 59 ++++++++++++++++++- 1 file changed, 58 insertions(+), 1 deletion(-) diff --git a/frontend-web/src/roundtable-planning/pages/RoundtablePlanningPage.tsx b/frontend-web/src/roundtable-planning/pages/RoundtablePlanningPage.tsx index 4b9cf882..bb7b0733 100644 --- a/frontend-web/src/roundtable-planning/pages/RoundtablePlanningPage.tsx +++ b/frontend-web/src/roundtable-planning/pages/RoundtablePlanningPage.tsx @@ -296,6 +296,10 @@ export default function RoundtablePlanningPage() { const [taskRestoreResolved, setTaskRestoreResolved] = useState( !prefillRef.current?.taskId, ); + // 深链/预填自动会话:进入页面后要先建意图线程、(带 taskId 时)回显历史草稿,这段时间 + // 页面只有一句欢迎语、问答还没真正开始,线程创建慢时像卡住。下面这个标志用来在超时后 + // 强制撤掉「启动加载遮罩」,避免万一初始化卡死把界面永久锁住。 + const [bootLoadingExpired, setBootLoadingExpired] = useState(false); const { models: availableModels, isLoading: modelsLoading } = useModels(); @@ -1143,6 +1147,35 @@ export default function RoundtablePlanningPage() { }; }, []); + // ── 启动加载遮罩(深链/预填自动会话)────────────────────────────── + // 是否是「自动会话」:深链 -A、taskId、businessCode/chainId 任一存在即自动进入问答, + // 用户没有手动操作,进入页面到问答之间必须给出明确加载反馈。 + const isAutoSession = Boolean( + prefillRef.current?.autoStart || + prefillRef.current?.taskId || + prefillRef.current?.businessCode || + prefillRef.current?.chainId, + ); + // 「问答已开始」:自动发出的首条用户消息已入列 / 正在流式 / 已得到意图结果,任一为真即认为 + // 已经动起来,可以撤掉遮罩交给 Step1Panel 自身的流式占位。 + const conversationStarted = + step1.isIntentSending || + step1.intentReady != null || + step1.interactiveMessages.some((m) => m.sender === "user"); + // 遮罩展示条件:自动会话 + 仍在 Step1 + 问答还没开始 + 没有初始化报错 + 没到安全超时。 + const showBootLoading = + isAutoSession && + currentStep === 1 && + !conversationStarted && + !step1.intentInitError && + !bootLoadingExpired; + // 安全超时:无论如何最多遮 30s,避免初始化卡死锁住界面(用户仍可手动操作底层页面)。 + useEffect(() => { + if (!showBootLoading) return; + const timer = window.setTimeout(() => setBootLoadingExpired(true), 30_000); + return () => window.clearTimeout(timer); + }, [showBootLoading]); + /** 组装无界回传载荷:总控共识 + 各智能体最终交付(剔除总控席位)。 */ const buildWujieConsensusPayload = useCallback( () => ({ @@ -1780,10 +1813,34 @@ export default function RoundtablePlanningPage() { return (
+ {/* 启动加载遮罩:深链/预填自动会话从进入页面到问答真正开始(建意图线程 / 回显历史草稿) + 期间全屏覆盖,避免线程创建慢时页面像卡住。问答一旦开始或超时即撤掉。 */} + {showBootLoading && ( +
+
+
+

+ 正在准备多智能体会商 +

+

正在初始化任务理解智能体,请稍候…

+
+ + + + + +
+
+ )} +