diff --git a/apps/web/src/pages/assets/AssetLibrary.tsx b/apps/web/src/pages/assets/AssetLibrary.tsx index ed05ac3ee..67e0c8a69 100644 --- a/apps/web/src/pages/assets/AssetLibrary.tsx +++ b/apps/web/src/pages/assets/AssetLibrary.tsx @@ -93,24 +93,25 @@ const formatDuration = (seconds: number): string => { const mapLibrary = (item: AssetLibraryItem): LibraryItem => ({ id: item.id, name: item.name, - kind: inferKind(item.default_mime_type || "video"), + kind: item.kind || inferKind("video"), count: item.asset_count ?? 0, }); /** 将后端 ApiAssetItem 映射为前端 AssetItem */ const mapAsset = (item: ApiAssetItem): AssetItem => { const { status, label } = inferStatus( - item.quality_score, - item.classification_status, + item.quality_score ?? undefined, + item.classification_status ?? undefined, ); + const metadata = item.metadata || {}; return { id: item.id, name: item.name, kind: inferKind(item.mime_type || ""), - thumbUrl: item.thumbnail_url, + thumbUrl: metadata.thumbnail_url as string | undefined, status, statusLabel: label, - duration: item.duration != null ? formatDuration(item.duration) : undefined, + duration: metadata.duration != null ? formatDuration(metadata.duration as number) : undefined, size: item.file_size ? +(item.file_size / (1024 * 1024)).toFixed(1) : 0, createdAt: item.created_at ? new Date(item.created_at).toISOString().slice(0, 10) @@ -268,7 +269,7 @@ const AssetLibrary: React.FC = () => { refetch: refetchAssets, } = useQuery({ queryKey: ["assets", effectiveLibId], - queryFn: () => getAssets(effectiveLibId || undefined), + queryFn: () => getAssets(effectiveLibId), enabled: !!effectiveLibId, staleTime: 30_000, }); @@ -298,17 +299,6 @@ const AssetLibrary: React.FC = () => { }, }); - const deleteAssetMutation = useMutation({ - mutationFn: deleteAsset, - onSuccess: () => { - queryClient.invalidateQueries({ queryKey: ["assets"] }); - queryClient.invalidateQueries({ queryKey: ["asset-libraries"] }); - }, - onError: () => { - message.error("删除素材失败"); - }, - }); - /* 状态 */ const [selectedIds, setSelectedIds] = useState>(new Set()); @@ -326,8 +316,6 @@ const AssetLibrary: React.FC = () => { const [newLibKind, setNewLibKind] = useState("video"); /* 派生数据 */ - const activeLibrary = libraries.find((l) => l.id === effectiveLibId); - const filteredAssets = useMemo(() => { let list = assets; @@ -392,10 +380,8 @@ const AssetLibrary: React.FC = () => { if (file.size > LARGE_FILE_THRESHOLD) { message.info(`大文件 "${file.name}" 将使用直传上传`); } - await uploadAssetDirect(file, (p) => { - // 可选:显示上传进度 - if (p === 100) message.success(`"${file.name}" 上传成功`); - }); + await uploadAssetDirect({ file, library_id: effectiveLibId }); + message.success(`"${file.name}" 上传成功`); queryClient.invalidateQueries({ queryKey: ["assets"] }); queryClient.invalidateQueries({ queryKey: ["asset-libraries"] }); } catch { @@ -413,7 +399,7 @@ const AssetLibrary: React.FC = () => { return; } try { - const newLib = await createLibMutation.mutateAsync(newLibName.trim()); + const newLib = await createLibMutation.mutateAsync({ name: newLibName.trim(), kind: newLibKind }); setActiveLibId(newLib.id); setCreateModalOpen(false); setNewLibName(""); @@ -440,9 +426,9 @@ const AssetLibrary: React.FC = () => { /* 诊断 — 调用真实 API */ const handleDiagnose = async (asset: AssetItem) => { try { - const result = await getAssetDiagnosis(asset.id); - const score = result.quality_score ?? "-"; - message.success(`"${asset.name}" 诊断完成,质量分:${score}`); + const result = await getAssetDiagnosis(); + const score = result.readiness_score ?? "-"; + message.success(`"${asset.name}" 诊断完成,就绪分:${score}`); queryClient.invalidateQueries({ queryKey: ["assets"] }); } catch { message.error(`"${asset.name}" 诊断失败`); diff --git a/apps/web/src/pages/templates/TemplateLibrary.tsx b/apps/web/src/pages/templates/TemplateLibrary.tsx index 194629674..f17d1907e 100644 --- a/apps/web/src/pages/templates/TemplateLibrary.tsx +++ b/apps/web/src/pages/templates/TemplateLibrary.tsx @@ -13,7 +13,6 @@ import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query"; import { Button } from "@/components/ui"; import { getTemplates, - getTemplate, toggleFavoriteTemplate, type TemplateItem, } from "@/api/templates";