Commit 9379fb86 by Liu

fix: 工单历史记录调用顺序

parent 56892e1d
......@@ -1015,11 +1015,18 @@ export const TacticsChat: React.FC = () => {
shouldSendQuestion,
currentId: currentIdRef.current,
isLoading,
hasHistory,
lastSentQuestion: lastSentQuestionRef.current,
orderMeta: !!orderMeta,
hasOrderMetaSecondCall: hasOrderMetaSecondCallRef.current,
})
// 关键约束:必须等历史记录查询完成(hasHistory !== null)后,才允许触发任何“自动发送/自动二次调用”。
// 这样可以保证进入页面时的时序为:先 query_user_qa_record_list,再 submit_question_stream。
if (hasHistory === null) {
return
}
// orderMeta 场景下,即使没有 shouldSendQuestion,也触发第二次调用(用于第三方嵌入场景)
// 复用 shouldSendQuestion 存在时的调用逻辑,保证参数传递完全一致
if (
......@@ -1030,18 +1037,11 @@ export const TacticsChat: React.FC = () => {
&& !shouldSendQuestion
) {
hasOrderMetaSecondCallRef.current = true
// 从 URL 参数中构建 paramMap(如果存在 workflow 表单字段)
// 排除已知的业务参数,其他参数作为 paramMap 传递
const paramMap: Record<string, string> | undefined = (() => {
const knownParams = ['from', 'place', 'workOrderIds', 'taskId', 'version', 'pinBeginTime', 'pinEndTime', 'partOrAll', 'channel', 'channelName', 'cstId', 'userId', 'numberType']
const paramMapEntries: [string, string][] = []
searchParams.forEach((value, key) => {
if (!knownParams.includes(key) && value) {
paramMapEntries.push([key, value])
}
})
return paramMapEntries.length > 0 ? Object.fromEntries(paramMapEntries) : undefined
})()
// orderMeta 场景下第二次自动调用:仅透传 workOrderIds 到 paramMap
// 需求:第一次自动调用不需要 paramMap;第二次自动调用的 paramMap 取路由内的 workOrderIds 值
const paramMap: Record<string, string> | undefined = typeof orderMeta.workOrderIds === 'string'
? { workOrderIds: orderMeta.workOrderIds }
: undefined
setTimeout(() => {
// 完全复用 shouldSendQuestion 存在时的调用逻辑(第 1063-1074 行),只是 question 为 undefined
// 这样保证参数传递完全一致,包括 paramMap 等参数的处理逻辑
......@@ -1110,7 +1110,7 @@ export const TacticsChat: React.FC = () => {
}
}, 100)
}
}, [shouldSendQuestion, isLoading, dispatch, orderMeta, userMeta, handleSubmitQuestion, getNumberTypeWithUserMeta])
}, [shouldSendQuestion, isLoading, hasHistory, dispatch, orderMeta, userMeta, handleSubmitQuestion, getNumberTypeWithUserMeta])
// 提供给 ChatAnswerBox/推荐问题的提交方法,保持与手动提问一致的 recordType 逻辑
const handleAnswerBoxSubmit = useCallback(
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment