Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
sdream-ai-fe
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
侯明涛
sdream-ai-fe
Commits
4a0bef4a
Commit
4a0bef4a
authored
Jan 05, 2026
by
Liu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix:工单创建会话参数值
parent
0a39d2a1
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
37 additions
and
26 deletions
+37
-26
src/api/tactics.ts
+1
-10
src/components/ChatEditor/index.tsx
+1
-0
src/pages/Chat/Chat.tsx
+3
-3
src/pages/ChatTactics/TacticsChat.tsx
+19
-10
src/pages/Home/HomeNew.tsx
+13
-3
No files found.
src/api/tactics.ts
View file @
4a0bef4a
...
@@ -12,7 +12,7 @@ export function fetchTacticsConversationPage<T>(data: T) {
...
@@ -12,7 +12,7 @@ export function fetchTacticsConversationPage<T>(data: T) {
* 创建问答功能会话
* 创建问答功能会话
*/
*/
export
function
fetchCreateTacticsConversation
<
T
>
(
data
:
T
)
{
export
function
fetchCreateTacticsConversation
<
T
>
(
data
:
T
)
{
return
http
.
post
(
'/conversation/api/conversation/mobile/v1/
create_conversat
ion'
,
data
)
return
http
.
post
(
'/conversation/api/conversation/mobile/v1/
get_user_conversation_sess
ion'
,
data
)
}
}
/**
/**
...
@@ -30,12 +30,3 @@ export function fetchDeleteTacticsConversation(conversationIdList: string[]) {
...
@@ -30,12 +30,3 @@ export function fetchDeleteTacticsConversation(conversationIdList: string[]) {
conversationIdList
,
conversationIdList
,
})
})
}
}
/**
* 清空记录 接口
* @params
* conversationIdList: 会话id (只传一个)
*/
// export function deleteUserConversation(data: any) {
// return http.post('/api/conversation/mobile/v1/delete_user_conversation', data)
// }
src/components/ChatEditor/index.tsx
View file @
4a0bef4a
...
@@ -266,6 +266,7 @@ const ChatEditorBase: React.FC<ChatEditorProps & WithAuthProps> = ({ checkAuth,
...
@@ -266,6 +266,7 @@ const ChatEditorBase: React.FC<ChatEditorProps & WithAuthProps> = ({ checkAuth,
const
conversationId
=
res
.
data
.
conversationId
const
conversationId
=
res
.
data
.
conversationId
// 使用获取到的会话ID调用历史会话
// 使用获取到的会话ID调用历史会话
const
qaRes
=
await
fetchUserQaRecordPage
(
conversationId
,
tool
.
toolId
)
const
qaRes
=
await
fetchUserQaRecordPage
(
conversationId
,
tool
.
toolId
)
console
.
log
(
'qaRes chatEditor11111'
,
qaRes
)
// 通过自定义事件将历史记录数据传递给父组件进行渲染
// 通过自定义事件将历史记录数据传递给父组件进行渲染
window
.
dispatchEvent
(
new
CustomEvent
(
'toolHistoryLoaded'
,
{
window
.
dispatchEvent
(
new
CustomEvent
(
'toolHistoryLoaded'
,
{
detail
:
{
detail
:
{
...
...
src/pages/Chat/Chat.tsx
View file @
4a0bef4a
...
@@ -103,7 +103,7 @@ export const Chat: React.FC = () => {
...
@@ -103,7 +103,7 @@ export const Chat: React.FC = () => {
useEffect
(()
=>
{
useEffect
(()
=>
{
if
(
!
debugInfo
.
href
&&
!
debugInfo
.
sessionToolId
)
if
(
!
debugInfo
.
href
&&
!
debugInfo
.
sessionToolId
)
return
return
// eslint-disable-next-line no-console
console
.
debug
(
'[Chat] 当前链接 / 缓存 toolId:'
,
debugInfo
)
console
.
debug
(
'[Chat] 当前链接 / 缓存 toolId:'
,
debugInfo
)
},
[
debugInfo
])
},
[
debugInfo
])
...
@@ -264,9 +264,8 @@ export const Chat: React.FC = () => {
...
@@ -264,9 +264,8 @@ export const Chat: React.FC = () => {
// 正常的stream数据
// 正常的stream数据
if
(
msg
?.
type
===
'DATA'
&&
msg
?.
content
?.
code
===
'00000000'
)
{
if
(
msg
?.
type
===
'DATA'
&&
msg
?.
content
?.
code
===
'00000000'
)
{
// eslint-disable-next-line no-console
console
.
log
(
'========================流式输出===================='
,
msg
)
console
.
log
(
'========================流式输出===================='
,
msg
)
// eslint-disable-next-line no-console
console
.
log
(
'========================流式输出字符串===================='
,
msg
.
content
?.
data
)
console
.
log
(
'========================流式输出字符串===================='
,
msg
.
content
?.
data
)
handleStreamMesageData
(
msg
,
question
)
handleStreamMesageData
(
msg
,
question
)
}
}
...
@@ -293,6 +292,7 @@ export const Chat: React.FC = () => {
...
@@ -293,6 +292,7 @@ export const Chat: React.FC = () => {
// 检测是否从收藏页返回
// 检测是否从收藏页返回
const
fromCollect
=
location
.
state
?.
fromCollect
const
fromCollect
=
location
.
state
?.
fromCollect
const
res
=
await
fetchUserQaRecordPage
(
conversationId
,
toolId
||
''
)
const
res
=
await
fetchUserQaRecordPage
(
conversationId
,
toolId
||
''
)
console
.
log
(
'qaRes chatEditor2222222'
,
res
)
const
qaRecords
=
res
.
data
||
[]
const
qaRecords
=
res
.
data
||
[]
const
messages
=
[{
role
:
'system'
}
as
ChatRecord
,
...
processApiResponse
(
qaRecords
)]
const
messages
=
[{
role
:
'system'
}
as
ChatRecord
,
...
processApiResponse
(
qaRecords
)]
// 处理历史记录中的参考文档标记
// 处理历史记录中的参考文档标记
...
...
src/pages/ChatTactics/TacticsChat.tsx
View file @
4a0bef4a
...
@@ -23,13 +23,13 @@ import ScrollBtoIcon from '@/assets/svg/scrollBto.svg?react'
...
@@ -23,13 +23,13 @@ import ScrollBtoIcon from '@/assets/svg/scrollBto.svg?react'
import
{
setIsAsking
}
from
'@/store/chatSlice'
import
{
setIsAsking
}
from
'@/store/chatSlice'
import
SdreamLoading
from
'@/components/SdreamLoading'
import
SdreamLoading
from
'@/components/SdreamLoading'
import
useToast
from
'@/hooks/useToast'
import
useToast
from
'@/hooks/useToast'
import
{
safeLocalStorageGetItem
}
from
'@/lib/utils'
export
const
TacticsChat
:
React
.
FC
=
()
=>
{
export
const
TacticsChat
:
React
.
FC
=
()
=>
{
const
{
id
}
=
useParams
<
{
id
:
string
}
>
()
const
{
id
}
=
useParams
<
{
id
:
string
}
>
()
const
location
=
useLocation
()
const
location
=
useLocation
()
const
navigate
=
useNavigate
()
const
navigate
=
useNavigate
()
const
logFullUrl
=
useCallback
((
reason
?:
string
)
=>
{
const
logFullUrl
=
useCallback
((
reason
?:
string
)
=>
{
// eslint-disable-next-line no-console
console
.
log
(
'[TacticsChat] full url snapshot'
,
{
console
.
log
(
'[TacticsChat] full url snapshot'
,
{
reason
,
reason
,
href
:
window
.
location
.
href
,
href
:
window
.
location
.
href
,
...
@@ -121,9 +121,23 @@ export const TacticsChat: React.FC = () => {
...
@@ -121,9 +121,23 @@ export const TacticsChat: React.FC = () => {
// 仅用于创建会话的额外参数(create_conversation)
// 仅用于创建会话的额外参数(create_conversation)
const
getConversationExtra
=
useCallback
(()
=>
{
const
getConversationExtra
=
useCallback
(()
=>
{
if
(
orderMeta
)
{
if
(
orderMeta
)
{
// 从 localStorage 读取 userName
const
userNameFromStorage
=
safeLocalStorageGetItem
(
'__USER_NAME__'
)
let
userName
=
''
if
(
userNameFromStorage
)
{
try
{
// useLocalStorageState 会将值序列化为 JSON,需要解析
const
parsed
=
JSON
.
parse
(
userNameFromStorage
)
userName
=
parsed
||
userNameFromStorage
}
catch
{
// 如果不是 JSON 格式,直接使用原始值
userName
=
userNameFromStorage
}
}
return
{
return
{
busiType
:
'02'
,
busiType
:
'02'
,
// from=order 场景下,不传 busiId
busiId
:
userName
,
// 如果 userName 不存在,使用默认值 '8'
}
as
Partial
<
any
>
}
as
Partial
<
any
>
}
}
if
(
userMeta
?.
place
===
'user'
)
{
if
(
userMeta
?.
place
===
'user'
)
{
...
@@ -200,7 +214,7 @@ export const TacticsChat: React.FC = () => {
...
@@ -200,7 +214,7 @@ export const TacticsChat: React.FC = () => {
break
break
}
}
}
}
// eslint-disable-next-line no-console
console
.
log
(
'[TacticsChat] handleStreamMesageData'
,
{
console
.
log
(
'[TacticsChat] handleStreamMesageData'
,
{
lastAiIndex
,
lastAiIndex
,
itemsLength
:
newItems
.
length
,
itemsLength
:
newItems
.
length
,
...
@@ -233,7 +247,7 @@ export const TacticsChat: React.FC = () => {
...
@@ -233,7 +247,7 @@ export const TacticsChat: React.FC = () => {
},
},
],
],
}
}
// eslint-disable-next-line no-console
console
.
log
(
'[TacticsChat] handleStreamMesageData:updated'
,
{
console
.
log
(
'[TacticsChat] handleStreamMesageData:updated'
,
{
filteredAnswer
,
filteredAnswer
,
answerList
:
newItems
[
lastAiIndex
].
answerList
,
answerList
:
newItems
[
lastAiIndex
].
answerList
,
...
@@ -436,7 +450,6 @@ export const TacticsChat: React.FC = () => {
...
@@ -436,7 +450,6 @@ export const TacticsChat: React.FC = () => {
fetchUrl
,
fetchUrl
,
requestBody
,
requestBody
,
(
msg
)
=>
{
(
msg
)
=>
{
// eslint-disable-next-line no-console
console
.
log
(
'[TacticsChat] handleSubmitQuestion:onMessage'
,
msg
)
console
.
log
(
'[TacticsChat] handleSubmitQuestion:onMessage'
,
msg
)
// 检查是否已被取消
// 检查是否已被取消
if
(
abortControllerRef
.
current
?.
signal
.
aborted
)
{
if
(
abortControllerRef
.
current
?.
signal
.
aborted
)
{
...
@@ -457,9 +470,8 @@ export const TacticsChat: React.FC = () => {
...
@@ -457,9 +470,8 @@ export const TacticsChat: React.FC = () => {
// 正常的stream数据
// 正常的stream数据
if
(
msg
?.
type
===
'DATA'
&&
msg
?.
content
?.
code
===
'00000000'
)
{
if
(
msg
?.
type
===
'DATA'
&&
msg
?.
content
?.
code
===
'00000000'
)
{
// eslint-disable-next-line no-console
console
.
log
(
'========================流式输出===================='
,
msg
)
console
.
log
(
'========================流式输出===================='
,
msg
)
// eslint-disable-next-line no-console
console
.
log
(
'========================流式输出字符串===================='
,
msg
.
content
?.
data
)
console
.
log
(
'========================流式输出字符串===================='
,
msg
.
content
?.
data
)
handleStreamMesageData
(
msg
,
question
||
''
)
handleStreamMesageData
(
msg
,
question
||
''
)
}
}
...
@@ -593,7 +605,6 @@ export const TacticsChat: React.FC = () => {
...
@@ -593,7 +605,6 @@ export const TacticsChat: React.FC = () => {
const
handleReanalyze
=
useCallback
(
async
()
=>
{
const
handleReanalyze
=
useCallback
(
async
()
=>
{
// 正在回答或尚未就绪时不触发重新分析
// 正在回答或尚未就绪时不触发重新分析
if
(
!
currentIdRef
.
current
||
isLoading
||
isAsking
)
{
if
(
!
currentIdRef
.
current
||
isLoading
||
isAsking
)
{
// eslint-disable-next-line no-console
console
.
log
(
'[TacticsChat] handleReanalyze blocked'
,
{
console
.
log
(
'[TacticsChat] handleReanalyze blocked'
,
{
currentId
:
currentIdRef
.
current
,
currentId
:
currentIdRef
.
current
,
isLoading
,
isLoading
,
...
@@ -790,7 +801,6 @@ export const TacticsChat: React.FC = () => {
...
@@ -790,7 +801,6 @@ export const TacticsChat: React.FC = () => {
// 处理shouldSendQuestion的变化 - 自动发送问题
// 处理shouldSendQuestion的变化 - 自动发送问题
useEffect
(()
=>
{
useEffect
(()
=>
{
// eslint-disable-next-line no-console
console
.
log
(
'[TacticsChat] autoSend check'
,
{
console
.
log
(
'[TacticsChat] autoSend check'
,
{
shouldSendQuestion
,
shouldSendQuestion
,
currentId
:
currentIdRef
.
current
,
currentId
:
currentIdRef
.
current
,
...
@@ -1034,7 +1044,6 @@ export const TacticsChat: React.FC = () => {
...
@@ -1034,7 +1044,6 @@ export const TacticsChat: React.FC = () => {
</
div
>
</
div
>
<
TacticsChatEditor
<
TacticsChatEditor
onSubmit=
{
(
question
)
=>
{
onSubmit=
{
(
question
)
=>
{
// eslint-disable-next-line no-console
console
.
log
(
'[TacticsChat] onSubmit wrapper'
,
{
console
.
log
(
'[TacticsChat] onSubmit wrapper'
,
{
question
,
question
,
currentId
:
currentIdRef
.
current
,
currentId
:
currentIdRef
.
current
,
...
...
src/pages/Home/HomeNew.tsx
View file @
4a0bef4a
...
@@ -63,6 +63,10 @@ export const Home: React.FC = () => {
...
@@ -63,6 +63,10 @@ export const Home: React.FC = () => {
defaultValue
:
''
,
defaultValue
:
''
,
})
})
const
[
_userName
,
setUserName
]
=
useLocalStorageState
<
string
|
undefined
>
(
'__USER_NAME__'
,
{
defaultValue
:
''
,
})
const
_initConversation
=
async
()
=>
{
const
_initConversation
=
async
()
=>
{
const
fromCollect
=
location
.
state
?.
fromCollect
const
fromCollect
=
location
.
state
?.
fromCollect
// 只有在访问首页时才处理会话,如果已经在聊天页面则不处理
// 只有在访问首页时才处理会话,如果已经在聊天页面则不处理
...
@@ -128,6 +132,7 @@ export const Home: React.FC = () => {
...
@@ -128,6 +132,7 @@ export const Home: React.FC = () => {
// 获取历史记录
// 获取历史记录
await
fetchUserQaRecordPage
(
conversationId
,
toolId
||
undefined
)
await
fetchUserQaRecordPage
(
conversationId
,
toolId
||
undefined
)
console
.
log
(
'qaRes homeNew333333'
,
res
)
// 历史记录会在 Chat 页面自动渲染,这里只负责获取
// 历史记录会在 Chat 页面自动渲染,这里只负责获取
}
}
}
}
...
@@ -283,7 +288,9 @@ export const Home: React.FC = () => {
...
@@ -283,7 +288,9 @@ export const Home: React.FC = () => {
window
.
history
.
replaceState
({},
''
,
currentUrl
.
toString
())
window
.
history
.
replaceState
({},
''
,
currentUrl
.
toString
())
}
}
setToken
(
res
.
data
.
token
)
setToken
(
res
.
data
.
token
)
// 主动触发 storage 事件,确保其他组件能监听到变化
if
(
res
.
data
.
userName
)
{
setUserName
(
res
.
data
.
userName
)
}
window
.
dispatchEvent
(
window
.
dispatchEvent
(
new
StorageEvent
(
'storage'
,
{
new
StorageEvent
(
'storage'
,
{
key
:
'__TOKEN__'
,
key
:
'__TOKEN__'
,
...
@@ -335,6 +342,9 @@ export const Home: React.FC = () => {
...
@@ -335,6 +342,9 @@ export const Home: React.FC = () => {
window
.
history
.
replaceState
({},
''
,
currentUrl
.
toString
())
window
.
history
.
replaceState
({},
''
,
currentUrl
.
toString
())
}
}
setToken
(
res
.
data
.
token
)
setToken
(
res
.
data
.
token
)
if
(
res
.
data
.
userName
)
{
setUserName
(
res
.
data
.
userName
)
}
// 主动触发 storage 事件,确保其他组件能监听到变化
// 主动触发 storage 事件,确保其他组件能监听到变化
window
.
dispatchEvent
(
window
.
dispatchEvent
(
new
StorageEvent
(
'storage'
,
{
new
StorageEvent
(
'storage'
,
{
...
@@ -354,7 +364,7 @@ export const Home: React.FC = () => {
...
@@ -354,7 +364,7 @@ export const Home: React.FC = () => {
}
}
}
}
}
}
},
[
setToken
,
dispatch
])
},
[
setToken
,
setUserName
,
dispatch
])
// 监听路由参数变化,提取 userRoles(确保路由参数被正确解析)
// 监听路由参数变化,提取 userRoles(确保路由参数被正确解析)
useEffect
(()
=>
{
useEffect
(()
=>
{
...
@@ -363,7 +373,7 @@ export const Home: React.FC = () => {
...
@@ -363,7 +373,7 @@ export const Home: React.FC = () => {
useEffect
(()
=>
{
useEffect
(()
=>
{
login
()
login
()
// eslint-disable-next-line no-console
console
.
log
(
'login useEffect11111'
,
token
)
console
.
log
(
'login useEffect11111'
,
token
)
},
[])
// 依赖数组为空,只在组件挂载时执行一次
},
[])
// 依赖数组为空,只在组件挂载时执行一次
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment