Commit daeee270 by Liu

fix:默认参数

parent 1710e03d
...@@ -371,27 +371,24 @@ const ChatEditorBase: React.FC<ChatEditorProps & WithAuthProps> = ({ checkAuth, ...@@ -371,27 +371,24 @@ const ChatEditorBase: React.FC<ChatEditorProps & WithAuthProps> = ({ checkAuth,
// 获取默认工具信息 // 获取默认工具信息
const defaultTool = toolList.length > 0 ? toolList[0] : { toolId: '', toolName: '默认工具' } const defaultTool = toolList.length > 0 ? toolList[0] : { toolId: '', toolName: '默认工具' }
// 通知上层开始 loading // 通知上层开始 loading
onToolClick?.(true, String(defaultTool.toolId || ''), defaultTool.toolName, false, undefined, true) onToolClick?.(true, undefined, defaultTool.toolName, false, undefined, true)
try { try {
// 重置提交按钮状态 // 重置提交按钮状态
dispatch(setIsAsking(false)) dispatch(setIsAsking(false))
// 你的期望:默认高亮第0个且写入缓存,因此这里不清空 toolId,而是把第0个当作“已选中” // 制度活化模式:不应携带具体 toolId
const defaultToolId = String(defaultTool.toolId || '') const defaultToolId = String(defaultTool.toolId || '')
dispatch(setCurrentToolId(defaultToolId)) dispatch(clearCurrentToolId())
// 立即更新本地状态,让 UI 立即响应 // 立即更新本地状态,让 UI 立即响应
setIsToolBtnActive(false) setIsToolBtnActive(false)
setSelectedToolId(defaultToolId) setSelectedToolId(defaultToolId)
safeSessionStorageRemoveItem('showToolQuestion') safeSessionStorageRemoveItem('showToolQuestion')
// 存入默认高亮按钮信息到缓存 // 清空 toolId 缓存,避免后续接口误带第0个工具的 toolId
if (toolList.length > 0) { safeSessionStorageRemoveItem('currentToolId')
safeSessionStorageSetItem('currentToolId', defaultToolId) setSessionToolId(null)
safeSessionStorageSetItem('currentToolName', defaultTool.toolName) console.log('[chat-toolid-log] ChatEditor clear currentToolId in general mode', '| line:364')
setSessionToolId(defaultToolId)
console.log('[chat-toolid-log] ChatEditor defaultTool setSessionToolId:', defaultToolId, '| line:364')
}
setShowToolQuestion(false) setShowToolQuestion(false)
// 先通知上层更新欢迎语(即便后续接口异常也能生效) // 先通知上层更新欢迎语(即便后续接口异常也能生效)
onToolClick?.(true, defaultToolId, defaultTool.toolName, false) onToolClick?.(true, undefined, defaultTool.toolName, false)
// 清空路由中的 toolId 参数 // 清空路由中的 toolId 参数
if (toolIdFromUrl) { if (toolIdFromUrl) {
const newSearchParams = new URLSearchParams(searchParams) const newSearchParams = new URLSearchParams(searchParams)
...@@ -406,26 +403,26 @@ const ChatEditorBase: React.FC<ChatEditorProps & WithAuthProps> = ({ checkAuth, ...@@ -406,26 +403,26 @@ const ChatEditorBase: React.FC<ChatEditorProps & WithAuthProps> = ({ checkAuth,
if (res?.data?.conversationId) { if (res?.data?.conversationId) {
const conversationId = res.data.conversationId const conversationId = res.data.conversationId
// 获取到会话ID后,通知上层更新欢迎语并传递 conversationId // 获取到会话ID后,通知上层更新欢迎语并传递 conversationId
onToolClick?.(true, defaultToolId, defaultTool.toolName, false, conversationId) onToolClick?.(true, undefined, defaultTool.toolName, false, conversationId)
// 在 navigate 之前设置标记,避免 Chat 组件的 useEffect 重复调用接口 // 在 navigate 之前设置标记,避免 Chat 组件的 useEffect 重复调用接口
sessionStorage.setItem('toolHistoryLoading', conversationId) sessionStorage.setItem('toolHistoryLoading', conversationId)
// 更新路由到新的会话ID // 更新路由到新的会话ID
navigate(`/chat/${conversationId}`, { navigate(`/chat/${conversationId}`, {
replace: true, replace: true,
state: { state: {
toolId: defaultToolId, toolId: undefined,
skipHistoryLoad: true, // 标记跳过历史记录加载,因为 ChatEditor 会处理 skipHistoryLoad: true, // 标记跳过历史记录加载,因为 ChatEditor 会处理
}, },
}) })
// 使用获取到的会话ID调用历史会话 // 使用获取到的会话ID调用历史会话
await waitForToken() await waitForToken()
const qaRes = await fetchUserQaRecordPage(conversationId, defaultTool.toolId) const qaRes = await fetchUserQaRecordPage(conversationId, '')
console.log('qaRes chatEditor11111', qaRes) console.log('qaRes chatEditor11111', qaRes)
// 通过自定义事件将历史记录数据传递给父组件进行渲染 // 通过自定义事件将历史记录数据传递给父组件进行渲染
window.dispatchEvent(new CustomEvent('toolHistoryLoaded', { window.dispatchEvent(new CustomEvent('toolHistoryLoaded', {
detail: { detail: {
conversationId, conversationId,
toolId: defaultToolId, toolId: undefined,
toolName: defaultTool.toolName, toolName: defaultTool.toolName,
qaRecords: qaRes?.data || [], qaRecords: qaRes?.data || [],
}, },
...@@ -441,7 +438,7 @@ const ChatEditorBase: React.FC<ChatEditorProps & WithAuthProps> = ({ checkAuth, ...@@ -441,7 +438,7 @@ const ChatEditorBase: React.FC<ChatEditorProps & WithAuthProps> = ({ checkAuth,
} }
finally { finally {
// 通知上层结束 loading // 通知上层结束 loading
onToolClick?.(true, String(defaultTool.toolId || ''), defaultTool.toolName, false, undefined, false) onToolClick?.(true, undefined, defaultTool.toolName, false, undefined, false)
} }
} }
......
...@@ -7,14 +7,14 @@ import styles from './Home.module.less' ...@@ -7,14 +7,14 @@ import styles from './Home.module.less'
import { QuestionList } from './components/QuestionList' import { QuestionList } from './components/QuestionList'
import HomeIcon2 from '@/assets/homeIcon2.png' import HomeIcon2 from '@/assets/homeIcon2.png'
import SmartIce from '@/assets/smart-ice.png' import SmartIce from '@/assets/smart-ice.png'
import { fetchConversations, setCurrentConversation, setCurrentToolId, setNavigationFlag } from '@/store/conversationSlice' import { clearCurrentToolId, fetchConversations, setCurrentConversation, setCurrentToolId, setNavigationFlag } from '@/store/conversationSlice'
import { useAppDispatch, useAppSelector } from '@/store/hook' import { useAppDispatch, useAppSelector } from '@/store/hook'
import { fetchEfficiencyQuestionList, fetchToolList } from '@/api/home' import { fetchEfficiencyQuestionList, fetchToolList } from '@/api/home'
import SdreamLoading from '@/components/SdreamLoading' import SdreamLoading from '@/components/SdreamLoading'
import { fetchLoginByToken, fetchLoginByUid } from '@/api/common' import { fetchLoginByToken, fetchLoginByUid } from '@/api/common'
import { fetchSessionConversationId } from '@/api/conversation' import { fetchSessionConversationId } from '@/api/conversation'
import { fetchCheckTokenApi } from '@/api/chat' import { fetchCheckTokenApi } from '@/api/chat'
import { getUserRolesForApi, getUserRolesFromRoute, safeLocalStorageGetItem, safeLocalStorageSetItem, safeSessionStorageGetItem, safeSessionStorageSetItem, waitForToken } from '@/lib/utils' import { getUserRolesForApi, getUserRolesFromRoute, safeLocalStorageGetItem, safeLocalStorageSetItem, safeSessionStorageGetItem, safeSessionStorageRemoveItem, safeSessionStorageSetItem, waitForToken } from '@/lib/utils'
// 从 localStorage 获取 token 的辅助函数 // 从 localStorage 获取 token 的辅助函数
function getTokenFromStorage(): string | null { function getTokenFromStorage(): string | null {
...@@ -279,9 +279,11 @@ export const Home: React.FC = () => { ...@@ -279,9 +279,11 @@ export const Home: React.FC = () => {
console.log('[chat-toolid-log] HomeNew setItem:', toolId, '| line:253') console.log('[chat-toolid-log] HomeNew setItem:', toolId, '| line:253')
} }
else { else {
// 点击事件没有 toolId 时不覆盖缓存,避免“先清空再被默认第0个回填” // 制度活化模式:点击事件没有 toolId 时应清空缓存并继续刷新左侧常见问题
console.log('[chat-toolid-log] HomeNew ignore empty toolId event', '| line:260') dispatch(clearCurrentToolId())
return safeSessionStorageRemoveItem('currentToolId')
safeSessionStorageRemoveItem('currentToolName')
console.log('[chat-toolid-log] HomeNew clear currentToolId for general mode', '| line:260')
} }
// 如果事件传递了 conversationId,延迟调用以确保路由更新完成 // 如果事件传递了 conversationId,延迟调用以确保路由更新完成
......
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