fix: 会话markdown展示问题

This commit is contained in:
dolphin
2025-09-17 20:29:38 +08:00
parent 372c3d1fdb
commit aeb32dd7d4
4 changed files with 25 additions and 38 deletions
@@ -49,7 +49,7 @@ export const getKnowledgeColumns = (
return '状态';
},
cell: ({ row }) => {
return ['', '处理中', '成功', '失败', '模型向量切换中'][row.original.status]
return ['', '处理中', '成功', '失败', '处理中'][row.original.status]
},
},
{
@@ -206,7 +206,13 @@ const Markdown = memo(({ content = '', showCursor, isLatestMessage, webContent }
if (isInitializing) {
return '';
}
return LaTeXParsing ? preprocessLaTeX(content) : content;
const message = LaTeXParsing ? preprocessLaTeX(content) : content;
return message
// .replaceAll(/(\n\s{4,})/g, '\n ') // 禁止4空格转代码
.replace(/(?<![\n\|])\n(?!\n)/g, '\n\n') // 单个换行符 处理不换行情况,例如:`Hello|There\nFriend
// .replaceAll('(bisheng/', '(/bisheng/') // TODO 临时处理方案,以后需要改为markdown插件方式处理
// .replace(/\\[\[\]]/g, '$$') // 处理`\[...\]`包裹的公式
}, [content, LaTeXParsing, isInitializing]);
const rehypePlugins = useMemo(
@@ -165,7 +165,11 @@ export async function copyLibDatabase(knowledge_id) {
* 获取知识库下文件列表
*/
export async function readFileByLibDatabase({ id, page, pageSize = 20, name = '', status, file_ids }) {
if (status?.includes(1)) { // 4合并到解析中
status.push(4)
} else {
status = status?.filter(item => item !== 4)
}
const params = {
page_num: page,
page_size: pageSize,
@@ -42,7 +42,7 @@ export default function Files({ onPreview }) {
// 存储完整文件对象(保留所有原始参数)
const [selectedFileObjs, setSelectedFileObjs] = useState<Array<Record<string, any>>>([]);
const [isAllSelected, setIsAllSelected] = useState(false);
// 其他原有状态
const [selectedFilters, setSelectedFilters] = useState<number[]>([]);
const [tempFilters, setTempFilters] = useState<number[]>([]);
@@ -209,7 +209,7 @@ export default function Files({ onPreview }) {
// 页面数据变化时更新全选状态
useEffect(() => {
setIsAllSelected(datalist.length > 0 && datalist.every(file =>
setIsAllSelected(datalist.length > 0 && datalist.every(file =>
selectedFileObjs.some(item => item.id === file.id)
));
}, [datalist, selectedFileObjs]);
@@ -344,20 +344,7 @@ export default function Files({ onPreview }) {
</span>
</div>
)
},
{
value: 4,
label: '向量模型切换中',
color: 'text-[#4D9BF0]',
icon: (
<div className="flex items-center gap-2 mt-2">
<span className="size-[6px] rounded-full bg-[#4D9BF0]"></span>
<span className="font-[500] text-[14px] text-[#4D9BF0] leading-[100%]">
向量模型切换中
</span>
</div>
)
},
}
].map(({ value, label, color, icon }) => (
<div
key={value}
@@ -457,18 +444,17 @@ export default function Files({ onPreview }) {
<TableCell>{el.update_time.replace('T', ' ')}</TableCell>
<TableCell>
{console.log(el.remark,44444)}
{el.status === 3 ? (
<div className="flex items-center">
<TooltipProvider delayDuration={100}>
<Tooltip>
<TooltipTrigger className="flex items-center gap-2">
<span className="size-[6px] rounded-full bg-red-500"></span>
<span className="font-[500] text-[14px] text-red-500 leading-[100%] text-center">
解析失败
</span>
</TooltipTrigger>
<TooltipTrigger className="flex items-center gap-2">
<span className="size-[6px] rounded-full bg-red-500"></span>
<span className="font-[500] text-[14px] text-red-500 leading-[100%] text-center">
解析失败
</span>
</TooltipTrigger>
<TooltipContent side="top" className="whitespace-pre-line">
<div className="max-w-96 text-left break-all whitespace-normal">{el.remark}</div>
@@ -487,7 +473,7 @@ export default function Files({ onPreview }) {
</span>
</TooltipTrigger>
</Tooltip>
) : el.status === 1 ? (
) : el.status === 1 || el.status === 4 ? (
<Tooltip>
<TooltipTrigger className="flex items-center gap-2">
<span className="size-[6px] rounded-full bg-[#4D9BF0]"></span>
@@ -496,16 +482,7 @@ export default function Files({ onPreview }) {
</span>
</TooltipTrigger>
</Tooltip>
) : (
<Tooltip>
<TooltipTrigger className="flex items-center gap-2">
<span className="size-[6px] rounded-full bg-[#4D9BF0]"></span>
<span className="font-[500] text-[14px] text-[#4D9BF0] leading-[100%] text-center">
向量模型切换中
</span>
</TooltipTrigger>
</Tooltip>
)}
) : null}
</div>
)}
</TableCell>