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 }