From 1f40ce3df37bfbec87cabddddcc133c471dd94fe Mon Sep 17 00:00:00 2001 From: caoxiaozhu Date: Tue, 23 Jun 2026 09:43:29 +0800 Subject: [PATCH] =?UTF-8?q?fix(web):=20=E5=AD=A4=E5=84=BF=E7=94=B3?= =?UTF-8?q?=E8=AF=B7=E9=A2=84=E8=A7=88=E6=B6=88=E6=81=AF=E8=A7=A6=E5=8F=91?= =?UTF-8?q?=E9=87=8D=E6=96=B0=E7=94=9F=E6=88=90=E5=8F=AF=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E8=A1=A8=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit useWorkbenchAiApplicationPreviewFlow 识别仅含表格文案但缺 applicationPreview 载荷的孤儿消息,触发重新生成可编辑表格并提示用户,避免提交动作静默失败。 --- .../useWorkbenchAiApplicationPreviewFlow.js | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/web/src/composables/workbenchAiMode/useWorkbenchAiApplicationPreviewFlow.js b/web/src/composables/workbenchAiMode/useWorkbenchAiApplicationPreviewFlow.js index 77caa3c..8b5a16f 100644 --- a/web/src/composables/workbenchAiMode/useWorkbenchAiApplicationPreviewFlow.js +++ b/web/src/composables/workbenchAiMode/useWorkbenchAiApplicationPreviewFlow.js @@ -203,6 +203,19 @@ export function useWorkbenchAiApplicationPreviewFlow({ .find((message) => message.role === 'assistant' && message.applicationPreview) } + function isOrphanInlineApplicationPreviewMessage(message = {}) { + if (message?.applicationPreview || message?.role !== 'assistant') { + return false + } + return /下方表格|申请核对表|点击对应行即可直接编辑/.test(String(message.content || message.text || '')) + } + + function resolveLatestOrphanApplicationPreviewMessage() { + return [...conversationMessages.value] + .reverse() + .find((message) => isOrphanInlineApplicationPreviewMessage(message)) + } + function requestInlineApplicationSubmitConfirmation(targetMessage, options = {}) { applicationSubmitConfirmContext.value = { messageId: String(targetMessage?.id || '').trim(), @@ -434,9 +447,22 @@ export function useWorkbenchAiApplicationPreviewFlow({ return true } const actionType = resolveInlineApplicationPreviewActionFromText(prompt) - if (!actionType || !resolveLatestApplicationPreviewMessage()) { + if (!actionType) { return false } + if (!resolveLatestApplicationPreviewMessage()) { + const orphanPreviewMessage = resolveLatestOrphanApplicationPreviewMessage() + if (!orphanPreviewMessage) { + return false + } + const previewSourceText = resolveLatestInlineUserPrompt() + pushInlineApplicationActionUserMessage(prompt) + toast('当前申请核对表状态不完整,我先重新生成可编辑表格。') + void startAiApplicationPreview('travel', '差旅费', previewSourceText, { + pushUserMessage: false + }) + return true + } void executeInlineApplicationPreviewAction(actionType, null, { userText: prompt }) return true }