Commit 6ae9376c by weiyudumei

fix: 修正 workFlowSessionId 字段名拼写错误

- 将所有 workFlowSeeionId 统一修正为 workFlowSessionId
- 修复流式响应中 workFlowSessionId 字段提取问题
- 清理调试代码,简化逻辑
- 确保 workFlowSessionId 在第二次调用流式接口时正确传递
parent c3794c2d
...@@ -153,7 +153,7 @@ export const Chat: React.FC = () => { ...@@ -153,7 +153,7 @@ export const Chat: React.FC = () => {
// 在流式响应过程中,忽略服务器返回的 endAnswerFlag,避免过早禁用输入框 // 在流式响应过程中,忽略服务器返回的 endAnswerFlag,避免过早禁用输入框
const { endAnswerFlag: _omitEndAnswerFlag, ...dataWithoutEndFlag } = msg.content.data || {} const { endAnswerFlag: _omitEndAnswerFlag, ...dataWithoutEndFlag } = msg.content.data || {}
// 保留之前保存的 workFlowSeeionId 和 recordId,避免被覆盖 // 保留之前保存的 workFlowSessionId 和 recordId,避免被覆盖
const existingAnswer = newItems[lastIndex].answerList?.[0] || {} const existingAnswer = newItems[lastIndex].answerList?.[0] || {}
newItems[lastIndex] = { newItems[lastIndex] = {
...newItems[lastIndex], ...newItems[lastIndex],
...@@ -162,8 +162,8 @@ export const Chat: React.FC = () => { ...@@ -162,8 +162,8 @@ export const Chat: React.FC = () => {
{ {
...existingAnswer, ...existingAnswer,
...dataWithoutEndFlag, ...dataWithoutEndFlag,
// 如果新的数据中没有 workFlowSeeionId,保留之前的值 // 如果新的数据中没有 workFlowSessionId,保留之前的值
workFlowSeeionId: dataWithoutEndFlag.workFlowSeeionId ?? existingAnswer.workFlowSeeionId, workFlowSessionId: dataWithoutEndFlag.workFlowSessionId ?? existingAnswer.workFlowSessionId,
// 如果新的数据中没有 recordId,保留之前的值 // 如果新的数据中没有 recordId,保留之前的值
recordId: dataWithoutEndFlag.recordId ?? existingAnswer.recordId, recordId: dataWithoutEndFlag.recordId ?? existingAnswer.recordId,
isShow: false, isShow: false,
...@@ -206,7 +206,7 @@ export const Chat: React.FC = () => { ...@@ -206,7 +206,7 @@ export const Chat: React.FC = () => {
question: string, question: string,
productCode?: string, productCode?: string,
toolId?: string, toolId?: string,
extraParams?: { paramMap?: Record<string, string>, recordId?: string, recordType?: string, workFlowSeeionId?: string }, extraParams?: { paramMap?: Record<string, string>, recordId?: string, recordType?: string, workFlowSessionId?: string },
) => { ) => {
// 优先读取缓存中的 toolId,再回退到传参或 Redux // 优先读取缓存中的 toolId,再回退到传参或 Redux
const sessionToolId = sessionStorage.getItem('currentToolId') ?? undefined const sessionToolId = sessionStorage.getItem('currentToolId') ?? undefined
...@@ -261,15 +261,15 @@ export const Chat: React.FC = () => { ...@@ -261,15 +261,15 @@ export const Chat: React.FC = () => {
toolId: resolvedToolId ?? '', toolId: resolvedToolId ?? '',
} }
// 如果是 workflow 提交,添加 paramMap、recordId 和 workFlowSeeionId // 如果是 workflow 提交,添加 paramMap、recordId 和 workFlowSessionId
if (extraParams?.paramMap) { if (extraParams?.paramMap) {
requestBody.paramMap = extraParams.paramMap requestBody.paramMap = extraParams.paramMap
} }
if (extraParams?.recordId) { if (extraParams?.recordId) {
requestBody.recordId = extraParams.recordId requestBody.recordId = extraParams.recordId
} }
if (extraParams?.workFlowSeeionId) { if (extraParams?.workFlowSessionId) {
requestBody.workFlowSeeionId = extraParams.workFlowSeeionId requestBody.workFlowSessionId = extraParams.workFlowSessionId
} }
// 如果传入了 recordType,优先使用传入的值(workflow 提交场景) // 如果传入了 recordType,优先使用传入的值(workflow 提交场景)
...@@ -409,12 +409,12 @@ export const Chat: React.FC = () => { ...@@ -409,12 +409,12 @@ export const Chat: React.FC = () => {
} }
/** 处理 workflow 表单提交 */ /** 处理 workflow 表单提交 */
const handleWorkflowSubmit = async (paramMap: Record<string, string>, recordId?: string, workFlowSeeionId?: string) => { const handleWorkflowSubmit = async (paramMap: Record<string, string>, recordId?: string, workFlowSessionId?: string) => {
// workflow 提交时,question 可以为空字符串,但需要传递 paramMap、recordId 和 workFlowSeeionId // workflow 提交时,question 可以为空字符串,但需要传递 paramMap、recordId 和 workFlowSessionId
await handleSubmitQuestion('', undefined, undefined, { await handleSubmitQuestion('', undefined, undefined, {
paramMap, paramMap,
recordId, recordId,
workFlowSeeionId, workFlowSessionId,
recordType: 'A01', recordType: 'A01',
}) })
} }
......
...@@ -6,7 +6,7 @@ import type { Answer, Attachment } from '@/types/chat' ...@@ -6,7 +6,7 @@ import type { Answer, Attachment } from '@/types/chat'
interface CardWorkflowFormProps { interface CardWorkflowFormProps {
attachment: Attachment attachment: Attachment
answer: Answer answer: Answer
onSubmitWorkflow: (paramMap: Record<string, string>, recordId?: string, workFlowSeeionId?: string) => void onSubmitWorkflow: (paramMap: Record<string, string>, recordId?: string, workFlowSessionId?: string) => void
isSubmitting?: boolean isSubmitting?: boolean
isCompleted?: boolean isCompleted?: boolean
} }
...@@ -78,18 +78,18 @@ export const CardWorkflowForm: React.FC<CardWorkflowFormProps> = ({ ...@@ -78,18 +78,18 @@ export const CardWorkflowForm: React.FC<CardWorkflowFormProps> = ({
paramMap[field.key] = queryValue || '' paramMap[field.key] = queryValue || ''
}) })
// 获取 recordId 和 workFlowSeeionId(从 answer 中获取,第一次可能没有) // 获取 recordId 和 workFlowSessionId(从 answer 中获取,第一次可能没有)
// 注意:这里使用最新的 answer 值,即使依赖项中没有包含它们 // 注意:这里使用最新的 answer 值,即使依赖项中没有包含它们
const recordId = answer.recordId const recordId = answer.recordId
const workFlowSeeionId = answer.workFlowSeeionId const workFlowSessionId = answer.workFlowSessionId
// 延迟一下再提交,确保表单值已经设置完成 // 延迟一下再提交,确保表单值已经设置完成
setTimeout(() => { setTimeout(() => {
onSubmitWorkflow(paramMap, recordId, workFlowSeeionId) onSubmitWorkflow(paramMap, recordId, workFlowSessionId)
}, 100) }, 100)
} }
} }
// 移除 answer.recordId 和 answer.workFlowSeeionId 作为依赖项,避免流式更新时重复触发 // 移除 answer.recordId 和 answer.workFlowSessionId 作为依赖项,避免流式更新时重复触发
}, [answer.firstQaFlag, isSubmitting, isCompleted, searchParams, textFields, onSubmitWorkflow]) }, [answer.firstQaFlag, isSubmitting, isCompleted, searchParams, textFields, onSubmitWorkflow])
const handleInputChange = (key: string, value: string) => { const handleInputChange = (key: string, value: string) => {
...@@ -106,11 +106,11 @@ export const CardWorkflowForm: React.FC<CardWorkflowFormProps> = ({ ...@@ -106,11 +106,11 @@ export const CardWorkflowForm: React.FC<CardWorkflowFormProps> = ({
paramMap[field.key] = formValues[field.key] || '' paramMap[field.key] = formValues[field.key] || ''
}) })
// 获取 recordId 和 workFlowSeeionId(从 answer 中获取,第一次可能没有) // 获取 recordId 和 workFlowSessionId(从 answer 中获取,第一次可能没有)
const recordId = answer.recordId const recordId = answer.recordId
const workFlowSeeionId = answer.workFlowSeeionId const workFlowSessionId = answer.workFlowSessionId
onSubmitWorkflow(paramMap, recordId, workFlowSeeionId) onSubmitWorkflow(paramMap, recordId, workFlowSessionId)
} }
// 检查是否有 text 类型的字段 // 检查是否有 text 类型的字段
......
...@@ -17,7 +17,7 @@ interface ChatAnswerAttachmentProps { ...@@ -17,7 +17,7 @@ interface ChatAnswerAttachmentProps {
answer: Answer answer: Answer
isLastAnswer?: boolean isLastAnswer?: boolean
onSubmitQuestion?: (question: string, productCode?: string) => void onSubmitQuestion?: (question: string, productCode?: string) => void
onWorkflowSubmit?: (paramMap: Record<string, string>, recordId?: string, workFlowSeeionId?: string) => void onWorkflowSubmit?: (paramMap: Record<string, string>, recordId?: string, workFlowSessionId?: string) => void
isWorkflowSubmitting?: boolean isWorkflowSubmitting?: boolean
isAsking?: boolean isAsking?: boolean
} }
......
...@@ -254,7 +254,7 @@ export const TacticsChat: React.FC = () => { ...@@ -254,7 +254,7 @@ export const TacticsChat: React.FC = () => {
// 在流式响应过程中,忽略服务器返回的 endAnswerFlag,避免过早禁用输入框 // 在流式响应过程中,忽略服务器返回的 endAnswerFlag,避免过早禁用输入框
const { endAnswerFlag: _omitEndAnswerFlag, ...dataWithoutEndFlag } = msg.content.data || {} const { endAnswerFlag: _omitEndAnswerFlag, ...dataWithoutEndFlag } = msg.content.data || {}
// 保留之前保存的 workFlowSeeionId 和 recordId,避免被覆盖 // 保留之前保存的 workFlowSessionId 和 recordId,避免被覆盖
const existingAnswer = newItems[lastAiIndex].answerList?.[0] || {} const existingAnswer = newItems[lastAiIndex].answerList?.[0] || {}
newItems[lastAiIndex] = { newItems[lastAiIndex] = {
...newItems[lastAiIndex], ...newItems[lastAiIndex],
...@@ -263,8 +263,8 @@ export const TacticsChat: React.FC = () => { ...@@ -263,8 +263,8 @@ export const TacticsChat: React.FC = () => {
{ {
...existingAnswer, ...existingAnswer,
...dataWithoutEndFlag, ...dataWithoutEndFlag,
// 如果新的数据中没有 workFlowSeeionId,保留之前的值 // 如果新的数据中没有 workFlowSessionId,保留之前的值
workFlowSeeionId: dataWithoutEndFlag.workFlowSeeionId ?? existingAnswer.workFlowSeeionId, workFlowSessionId: dataWithoutEndFlag.workFlowSessionId ?? existingAnswer.workFlowSessionId,
// 如果新的数据中没有 recordId,保留之前的值 // 如果新的数据中没有 recordId,保留之前的值
recordId: dataWithoutEndFlag.recordId ?? existingAnswer.recordId, recordId: dataWithoutEndFlag.recordId ?? existingAnswer.recordId,
isShow: false, isShow: false,
...@@ -346,7 +346,7 @@ export const TacticsChat: React.FC = () => { ...@@ -346,7 +346,7 @@ export const TacticsChat: React.FC = () => {
question: string | undefined, question: string | undefined,
productCode?: string, productCode?: string,
toolId?: string, toolId?: string,
extra?: { busiType?: string, recordType?: string, numberType?: string, includeQuestion?: boolean, includeTacticsMeta?: boolean, includeUserMeta?: boolean, includeOrderMeta?: boolean, isReanalyze?: boolean, paramMap?: Record<string, string>, recordId?: string, workFlowSeeionId?: string }, extra?: { busiType?: string, recordType?: string, numberType?: string, includeQuestion?: boolean, includeTacticsMeta?: boolean, includeUserMeta?: boolean, includeOrderMeta?: boolean, isReanalyze?: boolean, paramMap?: Record<string, string>, recordId?: string, workFlowSessionId?: string },
) => { ) => {
// 优先读取缓存中的 toolId,再回退到传参 // 优先读取缓存中的 toolId,再回退到传参
const sessionToolId = sessionStorage.getItem('currentToolId') ?? undefined const sessionToolId = sessionStorage.getItem('currentToolId') ?? undefined
...@@ -493,15 +493,15 @@ export const TacticsChat: React.FC = () => { ...@@ -493,15 +493,15 @@ export const TacticsChat: React.FC = () => {
if (shouldSendQuestion || (question && extra?.includeQuestion === false)) { if (shouldSendQuestion || (question && extra?.includeQuestion === false)) {
requestBody.question = question ?? '' requestBody.question = question ?? ''
} }
// 如果是 workflow 提交,添加 paramMap、recordId 和 workFlowSeeionId // 如果是 workflow 提交,添加 paramMap、recordId 和 workFlowSessionId
if (extra?.paramMap) { if (extra?.paramMap) {
requestBody.paramMap = extra.paramMap requestBody.paramMap = extra.paramMap
} }
if (extra?.recordId) { if (extra?.recordId) {
requestBody.recordId = extra.recordId requestBody.recordId = extra.recordId
} }
if (extra?.workFlowSeeionId) { if (extra?.workFlowSessionId) {
requestBody.workFlowSeeionId = extra.workFlowSeeionId requestBody.workFlowSessionId = extra.workFlowSessionId
} }
// 调试日志:检查最终请求参数 // 调试日志:检查最终请求参数
console.log('[TacticsChat] handleSubmitQuestion: final requestBody', { console.log('[TacticsChat] handleSubmitQuestion: final requestBody', {
...@@ -625,13 +625,13 @@ export const TacticsChat: React.FC = () => { ...@@ -625,13 +625,13 @@ export const TacticsChat: React.FC = () => {
} }
/** 处理 workflow 表单提交 */ /** 处理 workflow 表单提交 */
const handleWorkflowSubmit = async (paramMap: Record<string, string>, recordId?: string, workFlowSeeionId?: string) => { const handleWorkflowSubmit = async (paramMap: Record<string, string>, recordId?: string, workFlowSessionId?: string) => {
// workflow 提交时,question 可以为空字符串,但需要传递 paramMap、recordId 和 workFlowSeeionId // workflow 提交时,question 可以为空字符串,但需要传递 paramMap、recordId 和 workFlowSessionId
await handleSubmitQuestion(undefined, undefined, undefined, { await handleSubmitQuestion(undefined, undefined, undefined, {
includeQuestion: false, includeQuestion: false,
paramMap, paramMap,
recordId, recordId,
workFlowSeeionId, workFlowSessionId,
recordType: 'A01', recordType: 'A01',
}) })
} }
......
...@@ -82,7 +82,7 @@ export interface Answer { ...@@ -82,7 +82,7 @@ export interface Answer {
extra?: AnswerExtra extra?: AnswerExtra
qaTime?: number | string qaTime?: number | string
firstQaFlag?: boolean firstQaFlag?: boolean
workFlowSeeionId?: string workFlowSessionId?: string
} }
export interface OriginalRecord { export interface OriginalRecord {
......
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