diff --git a/apps/web/src/components/settings/SpeechTranscriptionCard.test.mjs b/apps/web/src/components/settings/SpeechTranscriptionCard.test.mjs index 66a9f2bc..364986f2 100644 --- a/apps/web/src/components/settings/SpeechTranscriptionCard.test.mjs +++ b/apps/web/src/components/settings/SpeechTranscriptionCard.test.mjs @@ -88,9 +88,13 @@ describe("speech transcription settings card", () => { }); expect(html).toContain("还没有语音识别服务"); expect(html).toContain("默认语音模型"); - expect(html).toContain("添加模型服务"); expect(html).toContain("yt-dlp 复用的浏览器登录状态"); expect(html).not.toContain("提取字幕下载音频时"); + expect(html).toContain("仅在本地用于读取当前浏览器已登录的媒体流以获取音轨与字幕"); + expect(html).toContain("使用规范与版权说明"); + expect(html).toContain("字幕提取与音视频转录功能仅供个人学习、离线研读及辅助记录使用"); + expect(html).toContain("音视频素材及其原始台词、字幕等衍生内容的知识产权均归原作者及发布平台所有"); + expect(html).toContain("相关解析与下载逻辑完全在您的本地设备运行"); expect(html).toContain("yt-dlp 版本"); expect(html).toContain("尚未下载"); expect(html).toContain("yt-dlp 路径"); diff --git a/apps/web/src/components/settings/SpeechTranscriptionCard.tsx b/apps/web/src/components/settings/SpeechTranscriptionCard.tsx index c02130d8..1655d908 100644 --- a/apps/web/src/components/settings/SpeechTranscriptionCard.tsx +++ b/apps/web/src/components/settings/SpeechTranscriptionCard.tsx @@ -1,7 +1,7 @@ import { useState, type FormEvent, type ReactNode } from "react"; import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import { VIDEO_COOKIE_BROWSERS, type AiTranscriptionSettings, type AiTranscriptionStandard, type VideoCookieBrowser } from "@edgeever/shared"; -import { AudioLines, Loader2, Plus, TriangleAlert } from "lucide-react"; +import { AudioLines, Loader2, Plus, ShieldCheck, TriangleAlert } from "lucide-react"; import { useTranslation } from "react-i18next"; import { aiErrorMessage } from "@/components/settings/ai-provider-options"; import { SpeechProviderCard } from "@/components/settings/SpeechProviderCard"; @@ -279,6 +279,9 @@ export const SpeechTranscriptionCard = ({ demoMode }: { demoMode: boolean }) => +
+ {t("speechTranscription.cookieBrowserNotice")} +
{browserNotice ? ({browserNotice === "none" @@ -301,6 +304,17 @@ export const SpeechTranscriptionCard = ({ demoMode }: { demoMode: boolean }) =>
{ytDlpPath}
+