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
ef640258
Commit
ef640258
authored
Dec 17, 2025
by
Liu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: 清空记录后新建会话
parent
9ea85437
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
35 additions
and
11 deletions
+35
-11
src/pages/ChatTactics/TacticsChat.tsx
+27
-4
src/pages/ChatTactics/TacticsHome.tsx
+8
-7
No files found.
src/pages/ChatTactics/TacticsChat.tsx
View file @
ef640258
...
...
@@ -69,6 +69,8 @@ export const TacticsChat: React.FC = () => {
const
scrollableRef
=
useRef
<
HTMLDivElement
|
any
>
(
null
)
const
position
=
useScroll
(
scrollableRef
)
const
currentIdRef
=
useRef
<
string
|
undefined
>
(
id
)
// 标记当前会话是否由「清空记录」操作创建,用于控制是否需要自动调用提问接口
const
createdFromClearRef
=
useRef
(
false
)
const
lastSentQuestionRef
=
useRef
<
string
>
(
''
)
const
abortControllerRef
=
useRef
<
AbortController
|
null
>
(
null
)
// 读取 from=tactics 的额外参数
...
...
@@ -79,14 +81,18 @@ export const TacticsChat: React.FC = () => {
if
(
from
!==
'tactics'
)
{
return
undefined
}
const
taskId
=
searchParams
.
get
(
'taskId'
)
||
undefined
return
{
version
,
taskId
:
searchParams
.
get
(
'taskId'
)
||
undefined
,
taskId
,
pinBeginTime
:
searchParams
.
get
(
'pinBeginTime'
)
||
undefined
,
pinEndTime
:
searchParams
.
get
(
'pinEndTime'
)
||
undefined
,
partOrAll
:
searchParams
.
get
(
'partOrAll'
)
||
undefined
,
channel
:
searchParams
.
get
(
'channel'
)
||
undefined
,
channelName
:
searchParams
.
get
(
'channelName'
)
||
undefined
,
// from=tactics 场景下,新建会话需要的业务识别参数
busiType
:
'02'
,
busiId
:
taskId
,
}
},
[
searchParams
])
const
tacticsMetaFromStorage
=
useMemo
(()
=>
{
...
...
@@ -595,10 +601,14 @@ export const TacticsChat: React.FC = () => {
setHasCleared
(
true
)
setHistoryDividerIndex
(
null
)
setHistoryDividerTime
(
null
)
// 标记接下来创建的新会话来源于「清空记录」,用于阻止自动触发一次提问
createdFromClearRef
.
current
=
true
dispatch
(
createTacticsConversation
({
conversationData
:
getConversationExtra
(),
shouldNavigate
:
false
,
// 清空记录后创建的新会话也需要更新路由中的 conversationId
// 因此这里改为 shouldNavigate: true,让下方 useEffect 触发 navigate
shouldNavigate
:
true
,
shouldSendQuestion
:
''
,
}),
)
...
...
@@ -624,7 +634,10 @@ export const TacticsChat: React.FC = () => {
// - 有 userMeta:按 userMeta.numberType 映射 numberType(A03/A05/A07/A09),不传 recordType,仅传 userMeta
const
hasUserMeta
=
!!
userMeta
if
(
hasUserMeta
)
{
const
mappedNumberType
=
getNumberTypeWithUserMeta
(
'A02'
,
true
)
// place=user 场景下,重新分析也视为“自动调用”:
// - numberType 为 3/4/5/6:映射为 A03/A05/A07/A09
// - 其它值或不存在:recordType=A01
const
mappedNumberType
=
getNumberTypeWithUserMeta
(
'A01'
,
true
)
await
handleSubmitQuestion
(
undefined
,
undefined
,
undefined
,
{
busiType
:
'02'
,
recordType
:
mappedNumberType
,
...
...
@@ -697,13 +710,23 @@ export const TacticsChat: React.FC = () => {
useEffect
(()
=>
{
// 仅在历史记录查询完成且为空时,才自动触发一次提交
if
(
currentIdRef
.
current
&&
!
isLoading
&&
hasHistory
===
false
&&
!
hasAutoSubmittedRef
.
current
)
{
// 如果当前会话是由「清空记录」创建的,则不自动调用提问接口
// 但仍然标记为已处理,避免后续重复触发
if
(
createdFromClearRef
.
current
)
{
createdFromClearRef
.
current
=
false
hasAutoSubmittedRef
.
current
=
true
return
}
hasAutoSubmittedRef
.
current
=
true
// 进入会话后自动触发一次提交:
// - 无 userMeta:沿用原逻辑,recordType=A02,携带 tacticsMeta
// - 有 userMeta:按 userMeta.numberType 映射 numberType(A03/A05/A07/A09),不传 recordType,仅传 userMeta
const
hasUserMeta
=
!!
userMeta
if
(
hasUserMeta
)
{
const
mappedNumberType
=
getNumberTypeWithUserMeta
(
'A02'
,
true
)
// place=user 场景下,首次自动调用:
// - numberType 为 3/4/5/6:映射为 A03/A05/A07/A09
// - 其它值或不存在:recordType=A01
const
mappedNumberType
=
getNumberTypeWithUserMeta
(
'A01'
,
true
)
handleSubmitQuestion
(
undefined
,
undefined
,
...
...
src/pages/ChatTactics/TacticsHome.tsx
View file @
ef640258
...
...
@@ -25,23 +25,24 @@ export const TacticsHome: React.FC = () => {
defaultValue
:
''
,
})
//
仅在 from=tactics 且 version=2 时读取并缓存额外参数
//
from=tactics 时读取并缓存额外参数(无论 version 是否为 2),用于新建会话
const
tacticsMetaFromSearch
=
useMemo
(()
=>
{
const
from
=
searchParams
.
get
(
'from'
)
const
version
=
searchParams
.
get
(
'version'
)
if
(
from
!==
'tactics'
||
version
!==
'2'
)
{
if
(
from
!==
'tactics'
)
{
return
undefined
}
const
taskId
=
searchParams
.
get
(
'taskId'
)
||
undefined
return
{
version
,
taskId
:
searchParams
.
get
(
'taskId'
)
||
undefined
,
version
:
searchParams
.
get
(
'version'
)
,
taskId
,
pinBeginTime
:
searchParams
.
get
(
'pinBeginTime'
)
||
undefined
,
pinEndTime
:
searchParams
.
get
(
'pinEndTime'
)
||
undefined
,
partOrAll
:
searchParams
.
get
(
'partOrAll'
)
||
undefined
,
channel
:
searchParams
.
get
(
'channel'
)
||
undefined
,
channelName
:
searchParams
.
get
(
'channelName'
)
||
undefined
,
// 新建会话需要的业务识别参数
busiType
:
'02'
,
busiId
:
searchParams
.
get
(
'taskId'
)
||
undefine
d
,
busiId
:
taskI
d
,
}
},
[
searchParams
])
const
tacticsMetaFromStorage
=
useMemo
(()
=>
{
...
...
@@ -51,7 +52,7 @@ export const TacticsHome: React.FC = () => {
}
try
{
const
parsed
=
JSON
.
parse
(
raw
)
if
(
parsed
?.
from
===
'tactics'
&&
parsed
?.
version
===
'2'
)
{
if
(
parsed
?.
from
===
'tactics'
)
{
return
parsed
}
}
...
...
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