feat: 添加会话标题自动生成功能

- 后端:首次 AI 回复后自动从用户消息提取标题
- 后端:通过 WebSocket 推送 session_updated 事件
- 前端:useChat hook 处理标题更新事件
- 前端:Sidebar 组件实时更新会话标题显示
This commit is contained in:
2025-12-12 17:45:17 +08:00
parent f561687307
commit 65a23f1e71
9 changed files with 141 additions and 3 deletions
+16
View File
@@ -19,6 +19,8 @@ interface SidebarProps {
onCreateSession: (session: Session) => void;
/** 是否启用响应式布局(移动端抽屉式菜单) */
responsive?: boolean;
/** 会话标题更新事件(从 WebSocket 接收) */
sessionTitleUpdate?: { sessionId: string; name: string } | null;
}
export function Sidebar({
@@ -26,6 +28,7 @@ export function Sidebar({
onSelectSession,
onCreateSession,
responsive = false,
sessionTitleUpdate,
}: SidebarProps) {
const [sessions, setSessions] = useState<Session[]>([]);
const [isLoading, setIsLoading] = useState(false);
@@ -84,6 +87,19 @@ export function Sidebar({
loadSessions();
}, []);
// 处理会话标题更新
useEffect(() => {
if (sessionTitleUpdate) {
setSessions((prev) =>
prev.map((s) =>
s.id === sessionTitleUpdate.sessionId
? { ...s, name: sessionTitleUpdate.name }
: s
)
);
}
}, [sessionTitleUpdate]);
const handleOverlayClick = () => {
setIsOpen(false);
};