feat(页面): 聊天页面集成智能摘要功能

- 在工具栏添加智能摘要按钮
- 优化主内容区背景色样式
- 调整底部输入框背景样式
This commit is contained in:
gaoziman 2025-12-28 01:31:44 +08:00
parent 94d97ace04
commit 7d7678084f

View File

@ -13,6 +13,7 @@ import { PromptOptimizer } from '@/components/features/PromptOptimizer';
import { LinkPreviewModal } from '@/components/features/LinkPreviewModal';
import { ExportDropdown } from '@/components/features/ExportDropdown';
import { ShareModal } from '@/components/features/ShareModal';
import { SummaryButton } from '@/components/features/SummaryGenerator';
import { cn } from '@/lib/utils';
import { useConversation, useConversations } from '@/hooks/useConversations';
import { useStreamChat, type ChatMessage } from '@/hooks/useStreamChat';
@ -441,7 +442,7 @@ export default function ChatPage({ params }: PageProps) {
}
return (
<div className="flex min-h-screen">
<div className="flex min-h-screen bg-[var(--color-bg-secondary)]">
{/* 侧边栏 */}
<Sidebar
isOpen={sidebarOpen}
@ -451,7 +452,7 @@ export default function ChatPage({ params }: PageProps) {
{/* 主内容区 */}
<main
className={cn(
'flex-1 flex flex-col min-h-screen transition-all duration-300',
'flex-1 flex flex-col min-h-screen transition-all duration-300 bg-[var(--color-bg-secondary)]',
sidebarOpen ? 'ml-[var(--sidebar-width)]' : 'ml-0'
)}
>
@ -557,6 +558,17 @@ export default function ChatPage({ params }: PageProps) {
</button>
)}
{/* 智能摘要按钮 */}
<SummaryButton
conversationId={chatId}
messages={messages.map(m => ({
role: m.role,
content: m.content,
}))}
hasSummary={!!conversation?.summary}
existingSummary={conversation?.summary}
/>
<button
onClick={() => setShareModalOpen(true)}
className="flex items-center gap-2 px-3 py-1.5 text-sm text-[var(--color-text-secondary)] hover:bg-[var(--color-bg-hover)] rounded-lg transition-colors"
@ -659,12 +671,7 @@ export default function ChatPage({ params }: PageProps) {
</div>
{/* 固定底部输入框 */}
<div
className="sticky bottom-0 pt-4 z-20"
style={{
background: `linear-gradient(to top, var(--color-bg-secondary) 0%, var(--color-bg-secondary) 80%, transparent 100%)`
}}
>
<div className="sticky bottom-0 pt-4 z-20 bg-[var(--color-bg-secondary)]">
<div className="max-w-[900px] mx-auto px-4 pb-4 pl-[60px]">
{isStreaming && (
<div className="flex justify-center mb-3">