fix(web): 孤儿申请预览消息触发重新生成可编辑表格
useWorkbenchAiApplicationPreviewFlow 识别仅含表格文案但缺 applicationPreview 载荷的孤儿消息,触发重新生成可编辑表格并提示用户,避免提交动作静默失败。
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user