diff --git a/frontend-web/src/pages/StudioNotebookDetailPage.tsx b/frontend-web/src/pages/StudioNotebookDetailPage.tsx
index a064fbdf..4e60a29f 100644
--- a/frontend-web/src/pages/StudioNotebookDetailPage.tsx
+++ b/frontend-web/src/pages/StudioNotebookDetailPage.tsx
@@ -3,6 +3,7 @@
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
import { useParams } from "react-router-dom";
import {
+ AlertCircle,
AlignLeft,
ArrowLeft,
BookOpen,
@@ -72,14 +73,20 @@ function SourceCard({
}) {
const title = item.title ?? item.document?.title ?? "未命名";
const isProcessing = item.status === "processing";
+ const isFailed = item.status === "failed";
return (
onToggle(item.id)}
- className={`group relative flex h-32 w-full cursor-pointer flex-col justify-between rounded-2xl p-4 ring-1 transition-colors ${selected
- ? "bg-primary/10 ring-primary"
- : "bg-muted ring-border/50 hover:bg-muted/70"
+ title={isFailed ? `${title}(处理失败)` : title}
+ onClick={() => {
+ if (isFailed) return;
+ onToggle(item.id);
+ }}
+ className={`group relative flex h-32 w-full flex-col justify-between rounded-2xl p-4 ring-1 transition-colors ${isFailed
+ ? "cursor-default bg-destructive/5 ring-destructive/40"
+ : selected
+ ? "cursor-pointer bg-primary/10 ring-primary"
+ : "cursor-pointer bg-muted ring-border/50 hover:bg-muted/70"
}`}
>
{/* 删除按钮 - 右上角始终显示,悬停时高亮 */}
@@ -97,13 +104,15 @@ function SourceCard({
{isProcessing ? (
+ ) : isFailed ? (
+
) : (
)}
-
{title}
-
- {title}
+
+
{title}
+ {isFailed &&
处理失败,请删除后重试
}
);