Commit 3f5bbff0 by Liu

feat:流式输出时正常展示可点击链接

parent b2dc32ed
......@@ -198,8 +198,10 @@ export const Chat: React.FC = () => {
// 创建最后一项的新对象,合并现有数据和新的 answer
const existingAnswer = newItems[currentIndex].answerList?.[0] || {}
const originalAnswer = (existingAnswer.answer || '') + (msg.content.data.answer ?? '\n')
// 移除所有括号及其内容
let filteredAnswer = originalAnswer.replace(/\([^)]*\)/g, '')
// 移除所有括号及其内容(但保留 Markdown 链接语法中的 ](...))
let filteredAnswer = originalAnswer.replace(/\([^)]*\)/g, (match, offset, str) => {
return str[offset - 1] === ']' ? match : ''
})
// 去除 [参考文档《任意内容》 《任意内容》...] 格式的内容
filteredAnswer = filteredAnswer.replace(/\[参考文档(?:[^]*》\s*)+\]/g, '')
// 只移除空格和制表符,保留换行符(避免移除末尾的 \n\n)
......@@ -614,7 +616,8 @@ export const Chat: React.FC = () => {
answerList: item.answerList.map(answerItem => ({
...answerItem,
answer: answerItem.answer
?.replace(/\([^)]*\)/g, '')
// 移除括号内容,但保留 Markdown 链接语法中的 ](...)
?.replace(/\([^)]*\)/g, (match, offset, str) => (str[offset - 1] === ']' ? match : ''))
.replace(/\[参考文档(?:[^]*》\s*)+\]/g, '')
.trim(),
})),
......@@ -926,7 +929,8 @@ export const Chat: React.FC = () => {
answerList: item.answerList.map(answerItem => ({
...answerItem,
answer: answerItem.answer
?.replace(/\([^)]*\)/g, '')
// 移除括号内容,但保留 Markdown 链接语法中的 ](...)
?.replace(/\([^)]*\)/g, (match, offset, str) => (str[offset - 1] === ']' ? match : ''))
.replace(/\[参考文档(?:[^]*》\s*)+\]/g, '')
.trim(),
})),
......
......@@ -245,8 +245,10 @@ export const TacticsChat: React.FC = () => {
const originalAnswer = existingAnswerText + newAnswer
// 移除 ♪ 符号之后的所有文本(与历史记录保持一致)
let filteredAnswer = originalAnswer.split('♪')[0]
// 移除所有括号及其内容
filteredAnswer = filteredAnswer.replace(/\([^)]*\)/g, '')
// 移除所有括号及其内容(但保留 Markdown 链接语法中的 ](...))
filteredAnswer = filteredAnswer.replace(/\([^)]*\)/g, (match: string, offset: number, str: string) => {
return str[offset - 1] === ']' ? match : ''
})
// 去除 [参考文档《任意内容》 《任意内容》...] 格式的内容
filteredAnswer = filteredAnswer.replace(/\[参考文档(?:[^]*》\s*)+\]/g, '')
// 只移除空格和制表符,保留换行符(避免移除末尾的 \n\n)
......@@ -280,8 +282,10 @@ export const TacticsChat: React.FC = () => {
const newAnswer = msg.content?.data?.answer ?? '\n'
// 移除 ♪ 符号之后的所有文本(与历史记录保持一致)
let filteredAnswer = newAnswer.split('♪')[0]
// 移除所有括号及其内容
filteredAnswer = filteredAnswer.replace(/\([^)]*\)/g, '')
// 移除所有括号及其内容(但保留 Markdown 链接语法中的 ](...))
filteredAnswer = filteredAnswer.replace(/\([^)]*\)/g, (match: string, offset: number, str: string) => {
return str[offset - 1] === ']' ? match : ''
})
// 去除 [参考文档《任意内容》 《任意内容》...] 格式的内容
filteredAnswer = filteredAnswer.replace(/\[参考文档(?:[^]*》\s*)+\]/g, '')
// 只移除空格和制表符,保留换行符(避免移除末尾的 \n\n)
......@@ -675,7 +679,8 @@ export const TacticsChat: React.FC = () => {
answerList: item.answerList.map(answerItem => ({
...answerItem,
answer: answerItem.answer
?.replace(/\([^)]*\)/g, '')
// 移除括号内容,但保留 Markdown 链接语法中的 ](...)
?.replace(/\([^)]*\)/g, (match: string, offset: number, str: string) => (str[offset - 1] === ']' ? match : ''))
.replace(/\[参考文档(?:[^]*》\s*)+\]/g, '')
.trim(),
})),
......
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