From 613cece224e0a76643a7fb5c81f8e50dbc3c0e6a Mon Sep 17 00:00:00 2001 From: xuhd Date: Tue, 2 Jun 2026 17:24:08 +0800 Subject: [PATCH] =?UTF-8?q?fix(studio):=20=E7=AC=94=E8=AE=B0=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E9=A1=B5=E9=9D=A2=E4=B8=8D=E5=88=B7=E6=96=B0=20+=20?= =?UTF-8?q?=E4=BE=A7=E8=BE=B9=E6=A0=8F=E9=94=99=E8=AF=AF=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E5=8F=8B=E5=A5=BD=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - WorkspaceRoutes 给 StudioNotebookDetailPage 加 key={notebookId},切换笔记时强制重新挂载 - createSearchSpace 接口失败时解析响应体 detail 字段,直接展示服务端错误信息 Co-Authored-By: Claude Sonnet 4.6 --- .../src/components/workspace/workspace-nav-studio.tsx | 3 +-- frontend-web/src/core/studio/api.ts | 5 ++++- frontend-web/src/pages/WorkspaceRoutes.tsx | 9 +++++++-- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/frontend-web/src/components/workspace/workspace-nav-studio.tsx b/frontend-web/src/components/workspace/workspace-nav-studio.tsx index e546c39e..01eb649a 100644 --- a/frontend-web/src/components/workspace/workspace-nav-studio.tsx +++ b/frontend-web/src/components/workspace/workspace-nav-studio.tsx @@ -34,8 +34,6 @@ const NAV_ITEM_CLASS = "data-[active=true]:bg-primary/15 data-[active=true]:text-primary data-[active=true]:shadow-none " + "dark:hover:bg-primary/15 dark:data-[active=true]:bg-primary/25 dark:data-[active=true]:text-primary-foreground"; -const SIDEBAR_PREVIEW_COUNT = 5; - export function WorkspaceNavStudio() { const { notebooks, isLoading, isError } = useStudioNotebooks(); const { pathname } = useLocation(); @@ -71,6 +69,7 @@ export function WorkspaceNavStudio() { return null; } + const SIDEBAR_PREVIEW_COUNT = 2; const preview = notebooks.slice(0, SIDEBAR_PREVIEW_COUNT); return ( diff --git a/frontend-web/src/core/studio/api.ts b/frontend-web/src/core/studio/api.ts index ac492de8..5d779a87 100644 --- a/frontend-web/src/core/studio/api.ts +++ b/frontend-web/src/core/studio/api.ts @@ -46,7 +46,10 @@ export async function createSearchSpace( }, body: JSON.stringify({ name, description: "", citations_enabled: true }), }); - if (!res.ok) throw new Error(`创建失败:${res.status}`); + if (!res.ok) { + const body = await res.json().catch(() => null); + throw new Error(body?.detail || `创建失败:${res.status}`); + } } export async function uploadSourceText( diff --git a/frontend-web/src/pages/WorkspaceRoutes.tsx b/frontend-web/src/pages/WorkspaceRoutes.tsx index f70d42a1..9ee6ff1c 100644 --- a/frontend-web/src/pages/WorkspaceRoutes.tsx +++ b/frontend-web/src/pages/WorkspaceRoutes.tsx @@ -1,5 +1,5 @@ import type { CSSProperties, ReactNode } from "react"; -import { Navigate, Route, Routes } from "react-router-dom"; +import { Navigate, Route, Routes, useParams } from "react-router-dom"; import { getStoredAuth } from "@/core/auth"; @@ -39,6 +39,11 @@ import AIWritingPage from "@/open-canvas/pages/AIWritingPage"; import StudioNotebooksPage from "./StudioNotebooksPage"; import StudioNotebookDetailPage from "./StudioNotebookDetailPage"; import RoundtablePlanningPage from "@/roundtable-planning/pages/RoundtablePlanningPage"; + +function NotebookDetailPageWithKey() { + const { notebookId } = useParams<{ notebookId: string }>(); + return ; +} import "@/roundtable-planning/styles/roundtable-planning.css"; export function WorkspaceLayout({ @@ -219,7 +224,7 @@ export default function WorkspaceRoutes({ element={ - + }