From 66a97358385bbc59c111232f0568e218a759df79 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Sun, 19 Jul 2026 07:12:00 +0800 Subject: [PATCH] =?UTF-8?q?feat(P1):=20=E7=B4=A0=E6=9D=90=E5=BA=93?= =?UTF-8?q?=E6=94=B9=E5=90=8D=E4=B8=BA=E8=A7=86=E9=A2=91=E5=BA=93=20+=20?= =?UTF-8?q?=E9=85=8D=E9=9F=B3=E7=B4=A0=E6=9D=90=E5=BA=93=E6=94=B9=E9=85=8D?= =?UTF-8?q?=E9=9F=B3=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 导航/页面标题/主页面:'素材库' → '视频库' - 全站'配音素材库' → '配音库' - 视频库与配音库按library_id天然隔离,互不干扰 --- apps/web/src/api/tts.ts | 2 +- apps/web/src/components/layout/PageHead.tsx | 4 +- apps/web/src/config/navigation.ts | 4 +- apps/web/src/pages/assets/AssetLibrary.tsx | 46 +++++++++---------- apps/web/src/pages/assets/assets.css | 6 +-- .../pages/duplication/DuplicationUpload.tsx | 2 +- .../src/pages/edit-plans/PlanClipsManager.tsx | 4 +- .../components/ClipPropertiesPanel.tsx | 2 +- .../editing-planner/components/TtsPanel.tsx | 2 +- apps/web/src/pages/generate/GeneratePage.tsx | 26 +++++------ .../voice-materials/VoiceMaterialLibrary.tsx | 8 ++-- apps/web/src/pages/voices/VoiceLibrary.tsx | 8 ++-- 12 files changed, 57 insertions(+), 57 deletions(-) mode change 100755 => 100644 apps/web/src/pages/assets/AssetLibrary.tsx mode change 100755 => 100644 apps/web/src/pages/assets/assets.css mode change 100755 => 100644 apps/web/src/pages/duplication/DuplicationUpload.tsx mode change 100755 => 100644 apps/web/src/pages/edit-plans/PlanClipsManager.tsx diff --git a/apps/web/src/api/tts.ts b/apps/web/src/api/tts.ts index 7746d867d..5e8d854fd 100644 --- a/apps/web/src/api/tts.ts +++ b/apps/web/src/api/tts.ts @@ -130,7 +130,7 @@ export interface SaveTtsToLibraryRequest { tag_ids?: string[] } -/** 将 TTS 合成结果保存到配音素材库 */ +/** 将 TTS 合成结果保存到配音库 */ export const saveTtsToLibrary = async ( jobId: string, data?: SaveTtsToLibraryRequest, diff --git a/apps/web/src/components/layout/PageHead.tsx b/apps/web/src/components/layout/PageHead.tsx index 4a9cea85b..52f466bbf 100644 --- a/apps/web/src/components/layout/PageHead.tsx +++ b/apps/web/src/components/layout/PageHead.tsx @@ -44,7 +44,7 @@ export interface PageHeadProps { const ROUTE_TITLE_MAP: Record = { "/app/dashboard": "首页", "/app/generate": "一键生成", - "/app/assets": "素材库", + "/app/assets": "视频库", "/app/voices": "配音库", "/app/titles": "标题库", "/app/products": "成片库", @@ -62,7 +62,7 @@ const ROUTE_TITLE_MAP: Record = { "/app/editing-planner": "剪辑规划", "/app/my-templates": "我的模板", "/app/voice-clone": "我的音色", - "/app/voice-materials": "配音素材库", + "/app/voice-materials": "配音库", "/app/accounts": "账号管理", "/app/duplication": "查重", "/app/duplication/results": "查重结果", diff --git a/apps/web/src/config/navigation.ts b/apps/web/src/config/navigation.ts index 2d614c4fe..b6e3147cf 100644 --- a/apps/web/src/config/navigation.ts +++ b/apps/web/src/config/navigation.ts @@ -47,7 +47,7 @@ export const NAV_ITEMS: NavItem[] = [ }, { key: "assets", - label: "素材库", + label: "视频库", path: "/app/assets", icon: React.createElement(FileOutlined), }, @@ -155,7 +155,7 @@ export const NAV_GROUPS: NavGroup[] = [ items: [ { key: "assets", - label: "素材库", + label: "视频库", path: "/app/assets", icon: React.createElement(FileOutlined), }, diff --git a/apps/web/src/pages/assets/AssetLibrary.tsx b/apps/web/src/pages/assets/AssetLibrary.tsx old mode 100755 new mode 100644 index 5738d5489..5541ae93c --- a/apps/web/src/pages/assets/AssetLibrary.tsx +++ b/apps/web/src/pages/assets/AssetLibrary.tsx @@ -1,6 +1,6 @@ /** - * 素材库页面 — V21 设计系统 - * 两栏布局:左侧素材库列表(260px)+ 右侧素材网格 + * 视频库页面 — V21 设计系统 + * 两栏布局:左侧视频库列表(260px)+ 右侧素材网格 * 使用 useQuery 对接后端真实 API(api/assets.ts) */ import React, { useMemo, useState } from "react" @@ -350,7 +350,7 @@ const AssetCard: React.FC<{ const AssetLibrary: React.FC = () => { const queryClient = useQueryClient() - /* ── 获取素材库列表 ── */ + /* ── 获取视频库列表 ── */ const { data: apiLibraries = [], isLoading: libLoading } = useQuery({ queryKey: ["asset-libraries"], queryFn: getAssetLibraries, @@ -362,7 +362,7 @@ const AssetLibrary: React.FC = () => { [apiLibraries], ) - /* ── 当前选中的素材库 ── */ + /* ── 当前选中的视频库 ── */ const [activeLibId, setActiveLibId] = useState("") // 当库列表加载完成后,自动选中第一个 @@ -396,10 +396,10 @@ const AssetLibrary: React.FC = () => { mutationFn: createAssetLibrary, onSuccess: () => { queryClient.invalidateQueries({ queryKey: ["asset-libraries"] }) - message.success("素材库创建成功") + message.success("视频库创建成功") }, onError: () => { - message.error("创建素材库失败") + message.error("创建视频库失败") }, }) @@ -407,10 +407,10 @@ const AssetLibrary: React.FC = () => { mutationFn: deleteAssetLibrary, onSuccess: () => { queryClient.invalidateQueries({ queryKey: ["asset-libraries"] }) - message.success("素材库已删除") + message.success("视频库已删除") }, onError: () => { - message.error("删除素材库失败") + message.error("删除视频库失败") }, }) @@ -428,7 +428,7 @@ const AssetLibrary: React.FC = () => { const [uploading, setUploading] = useState(false) const [uploadProgress, setUploadProgress] = useState(0) - /* 新建素材库 */ + /* 新建视频库 */ const [createModalOpen, setCreateModalOpen] = useState(false) const [newLibName, setNewLibName] = useState("") const [newLibKind, setNewLibKind] = useState("video") @@ -469,7 +469,7 @@ const AssetLibrary: React.FC = () => { const filteredAssets = useMemo(() => { let list = assets - /* 按素材库类型过滤(如果筛选类型不是 all) */ + /* 按视频库类型过滤(如果筛选类型不是 all) */ if (filterType !== "all") { list = list.filter((a) => a.kind === filterType) } @@ -521,7 +521,7 @@ const AssetLibrary: React.FC = () => { return } if (!effectiveLibId) { - message.warning("请先选择或创建一个素材库") + message.warning("请先选择或创建一个视频库") return } @@ -551,10 +551,10 @@ const AssetLibrary: React.FC = () => { } } - /* 新建素材库 */ + /* 新建视频库 */ const handleCreateLibrary = async () => { if (!newLibName.trim()) { - message.warning("请输入素材库名称") + message.warning("请输入视频库名称") return } try { @@ -571,7 +571,7 @@ const AssetLibrary: React.FC = () => { } } - /* 删除素材库 */ + /* 删除视频库 */ const handleDeleteLibrary = async (id: string) => { try { await deleteLibMutation.mutateAsync(id) @@ -827,7 +827,7 @@ const AssetLibrary: React.FC = () => { {/* 两栏布局 */}
- {/* ─── 左侧:素材库列表 ─── */} + {/* ─── 左侧:视频库列表 ─── */}
{libraries.map((lib) => (
{ {kindIcon(lib.kind)} {lib.name} { e?.stopPropagation() handleDeleteLibrary(lib.id) @@ -852,7 +852,7 @@ const AssetLibrary: React.FC = () => { @@ -864,10 +864,10 @@ const AssetLibrary: React.FC = () => {
))} - {/* 新建素材库 */} + {/* 新建视频库 */}
setCreateModalOpen(true)}> - 新建素材库 + 新建视频库
@@ -1018,15 +1018,15 @@ const AssetLibrary: React.FC = () => {
-

暂无素材,请上传或切换素材库

+

暂无素材,请上传或切换视频库

)} - {/* ─── 新建素材库弹窗 ─── */} + {/* ─── 新建视频库弹窗 ─── */} setCreateModalOpen(false)} onOk={handleCreateLibrary} @@ -1039,7 +1039,7 @@ const AssetLibrary: React.FC = () => {
名称
setNewLibName(e.target.value)} maxLength={50} diff --git a/apps/web/src/pages/assets/assets.css b/apps/web/src/pages/assets/assets.css old mode 100755 new mode 100644 index ae0622dea..fabdd1b09 --- a/apps/web/src/pages/assets/assets.css +++ b/apps/web/src/pages/assets/assets.css @@ -1,6 +1,6 @@ /** - * 素材库页面 - V21 设计系统样式 - * 两栏布局:左侧素材库列表(260px)+ 右侧素材网格 + * 视频库页面 - V21 设计系统样式 + * 两栏布局:左侧视频库列表(260px)+ 右侧素材网格 * 统一使用 CSS 变量,支持深色/浅色主题 */ @import "../../styles/global.css"; @@ -24,7 +24,7 @@ } /* ============================================================ - 左侧素材库列表 + 左侧视频库列表 ============================================================ */ .xx-asset-library-list { display: flex; diff --git a/apps/web/src/pages/duplication/DuplicationUpload.tsx b/apps/web/src/pages/duplication/DuplicationUpload.tsx old mode 100755 new mode 100644 index 4dba20a0d..f486ea331 --- a/apps/web/src/pages/duplication/DuplicationUpload.tsx +++ b/apps/web/src/pages/duplication/DuplicationUpload.tsx @@ -203,7 +203,7 @@ const DuplicationUpload: React.FC = () => {

📋 查重说明

    -
  • 系统会对比您上传的视频与素材库中的已有视频
  • +
  • 系统会对比您上传的视频与视频库中的已有视频
  • 查重完成后,可查看重复片段的具体位置
  • 查重过程通常需要几分钟,取决于视频大小
  • 高相似度片段建议进行替换或裁剪
  • diff --git a/apps/web/src/pages/edit-plans/PlanClipsManager.tsx b/apps/web/src/pages/edit-plans/PlanClipsManager.tsx old mode 100755 new mode 100644 index e70d22c96..6591e4ee1 --- a/apps/web/src/pages/edit-plans/PlanClipsManager.tsx +++ b/apps/web/src/pages/edit-plans/PlanClipsManager.tsx @@ -560,7 +560,7 @@ const PlanClipsManager: React.FC = () => { {/* 素材导入抽屉 */} setImportDrawerOpen(false)} width={480} @@ -611,7 +611,7 @@ const PlanClipsManager: React.FC = () => { ))}
) : ( - + )}
diff --git a/apps/web/src/pages/editing-planner/components/ClipPropertiesPanel.tsx b/apps/web/src/pages/editing-planner/components/ClipPropertiesPanel.tsx index ed1286729..5c2117e61 100644 --- a/apps/web/src/pages/editing-planner/components/ClipPropertiesPanel.tsx +++ b/apps/web/src/pages/editing-planner/components/ClipPropertiesPanel.tsx @@ -47,7 +47,7 @@ interface ClipPropertiesPanelProps { onOpenBgmDrawer?: () => void /** 打开字幕样式配置 Drawer */ onOpenSubtitleDrawer?: () => void - /** 配音素材列表(从配音素材库 API 获取) */ + /** 配音素材列表(从配音库 API 获取) */ voiceMaterials?: AssetItem[] /** 配音素材加载中 */ voiceMaterialsLoading?: boolean diff --git a/apps/web/src/pages/editing-planner/components/TtsPanel.tsx b/apps/web/src/pages/editing-planner/components/TtsPanel.tsx index 832927ca9..28aa9ce4e 100644 --- a/apps/web/src/pages/editing-planner/components/TtsPanel.tsx +++ b/apps/web/src/pages/editing-planner/components/TtsPanel.tsx @@ -313,7 +313,7 @@ const TtsPanel: React.FC = ({ open, onClose, config, onChange }) {config.mode === "upload" && (

请在右侧面板的「配音素材」中选择已上传的配音文件。

-

如需上传新配音,请前往配音素材库页面。

+

如需上传新配音,请前往配音库页面。

)} diff --git a/apps/web/src/pages/generate/GeneratePage.tsx b/apps/web/src/pages/generate/GeneratePage.tsx index 77aedd3df..19870bbf0 100644 --- a/apps/web/src/pages/generate/GeneratePage.tsx +++ b/apps/web/src/pages/generate/GeneratePage.tsx @@ -245,7 +245,7 @@ const GeneratePage: React.FC = () => { }) const [selectedLibraryId, setSelectedLibraryId] = useState("") - // 自动选中第一个素材库 + // 自动选中第一个视频库 useEffect(() => { if (libraries.length > 0 && !selectedLibraryId) { setSelectedLibraryId(libraries[0].id) @@ -373,7 +373,7 @@ const GeneratePage: React.FC = () => { message.success({ content: ( - 已保存到配音素材库!{" "} + 已保存到配音库!{" "} { cursor: "pointer", }} > - 去素材库查看 + 去视频库查看 ), @@ -440,7 +440,7 @@ const GeneratePage: React.FC = () => { [allTags, saveTagIds], ) - /** 保存成功后跳转到素材库 */ + /** 保存成功后跳转到视频库 */ const handleGoToLibrary = useCallback(() => { navigate("/app/voice-materials") }, [navigate]) @@ -654,7 +654,7 @@ const GeneratePage: React.FC = () => { return "所选模板或素材不可用,请重新选择" } if (msg.includes("asset") && (msg.includes("not found") || msg.includes("missing"))) { - return "素材数据异常,请返回素材库重新检查" + return "素材数据异常,请返回视频库重新检查" } // 网络/超时 if (msg.includes("timeout") || msg.includes("network") || msg.includes("ECONN")) { @@ -861,13 +861,13 @@ const GeneratePage: React.FC = () => { onClick={() => setMaterialMode("auto")} type="button" > - 选择素材库自动匹配 + 选择视频库自动匹配 - {/* ── 素材库选择(两种模式共用) ── */} + {/* ── 视频库选择(两种模式共用) ── */}
- +