From ef1dec1e47ae20115ee11e68563c5d5001b545a3 Mon Sep 17 00:00:00 2001 From: huangjianwu Date: Mon, 23 Mar 2026 15:31:55 +0800 Subject: [PATCH] =?UTF-8?q?feat(chat):=20AI=20=E5=9B=9E=E5=A4=8D=E6=94=AF?= =?UTF-8?q?=E6=8C=81=20Markdown=20=E6=B8=B2=E6=9F=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 通过 Bubble role 的 contentRender 使用 ReactMarkdown 渲染 AI 回复内容,支持列表、加粗、代码块等格式。 Co-Authored-By: Claude Opus 4.6 --- .../src/pages/HomePage/components/ChatPanel.tsx | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/BillNote_frontend/src/pages/HomePage/components/ChatPanel.tsx b/BillNote_frontend/src/pages/HomePage/components/ChatPanel.tsx index 9b4a37b..c81c06f 100644 --- a/BillNote_frontend/src/pages/HomePage/components/ChatPanel.tsx +++ b/BillNote_frontend/src/pages/HomePage/components/ChatPanel.tsx @@ -1,5 +1,7 @@ import { useState, useEffect, useCallback, useMemo } from 'react' import { Bubble, Sender } from '@ant-design/x' +import ReactMarkdown from 'react-markdown' +import remarkGfm from 'remark-gfm' import { Button } from '@/components/ui/button' import { Badge } from '@/components/ui/badge' import { Loader2, Trash2, ChevronDown, ChevronUp, BookOpen, UserRound, Bot, Maximize2, Minimize2 } from 'lucide-react' @@ -180,6 +182,13 @@ export default function ChatPanel({ taskId, mode, onModeChange }: ChatPanelProps ), variant: 'outlined' as const, + contentRender: (content: any) => ( +
+ + {typeof content === 'string' ? content : String(content)} + +
+ ), }, }), [],