From 7486479d216b52456f6d04d3d613d46f7d9b07ca Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Fri, 7 Aug 2026 13:35:37 +0800 Subject: [PATCH 1/4] =?UTF-8?q?feat:=20=E9=9A=90=E8=97=8F=E5=89=8D3?= =?UTF-8?q?=E6=AD=A5=E7=94=9F=E6=88=90=E7=BB=93=E6=9E=9C=E9=9D=A2=E6=9D=BF?= =?UTF-8?q?=EF=BC=8C=E5=88=A0=E9=99=A4=E5=89=AA=E8=BE=91=E6=96=B9=E6=A1=88?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E5=8D=A1=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - GeneratePage.tsx: GenerateResultPanel 仅在 Step4+ 显示 - Step3GeneratePreview.tsx: 移除剪辑方案信息卡片(模板/素材/片段等详情) --- apps/web/src/pages/generate/GeneratePage.tsx | 4 +- .../components/Step3GeneratePreview.tsx | 41 ------------------- 2 files changed, 3 insertions(+), 42 deletions(-) diff --git a/apps/web/src/pages/generate/GeneratePage.tsx b/apps/web/src/pages/generate/GeneratePage.tsx index 749d8c2db..f46206220 100644 --- a/apps/web/src/pages/generate/GeneratePage.tsx +++ b/apps/web/src/pages/generate/GeneratePage.tsx @@ -224,7 +224,8 @@ const GeneratePage: React.FC = () => { /> )} - {/* 正式生成结果 */} + {/* 正式生成结果(Step4+ 才显示) */} + {currentStep >= 4 && ( { onShare={handleShare} onGoToLibrary={() => navigate("/app/products")} /> + )} diff --git a/apps/web/src/pages/generate/components/Step3GeneratePreview.tsx b/apps/web/src/pages/generate/components/Step3GeneratePreview.tsx index 4505f67eb..83ffe7663 100644 --- a/apps/web/src/pages/generate/components/Step3GeneratePreview.tsx +++ b/apps/web/src/pages/generate/components/Step3GeneratePreview.tsx @@ -120,47 +120,6 @@ const Step3GeneratePreview: React.FC = ({ /> - {/* 剪辑方案信息 */} -
-
剪辑方案信息
-
-
- 模板 - {templateName} -
-
- 素材数量 - {materialCount} -
-
- 片段数 - {previewResult.clipCount} 段 -
-
- 转场次数 - {previewResult.transitionCount} 次 -
-
- 素材使用率 - {previewResult.materialUsage}% -
-
- 实际时长 - - {(typeof previewResult.duration === "number" - ? previewResult.duration - : 0 - ).toFixed(1)}{" "} - 秒 - -
-
- 视频比例 - {videoRatio} -
-
-
💡 这是 480p 预览版,正式生成将输出高清视频
-
)} -- 2.54.0 From d2a550f60e85b4e81badc93679459d9bdf5f2acd Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Fri, 7 Aug 2026 15:04:32 +0800 Subject: [PATCH 2/4] =?UTF-8?q?fix:=20=E7=A7=BB=E9=99=A4=20Step3GeneratePr?= =?UTF-8?q?eview=20=E4=B8=AD=E6=9C=AA=E4=BD=BF=E7=94=A8=E7=9A=84=E8=A7=A3?= =?UTF-8?q?=E6=9E=84=E5=8F=98=E9=87=8F=EF=BC=8C=E4=BF=AE=E5=A4=8D=20ESLint?= =?UTF-8?q?=20=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - templateName/materialCount/videoRatio 在删除剪辑方案信息卡片后不再使用 - 使用别名 _templateName/_materialCount/_videoRatio 消除 no-unused-vars 错误 --- .../src/pages/generate/components/Step3GeneratePreview.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/web/src/pages/generate/components/Step3GeneratePreview.tsx b/apps/web/src/pages/generate/components/Step3GeneratePreview.tsx index 83ffe7663..71311b660 100644 --- a/apps/web/src/pages/generate/components/Step3GeneratePreview.tsx +++ b/apps/web/src/pages/generate/components/Step3GeneratePreview.tsx @@ -27,9 +27,9 @@ interface Step3GeneratePreviewProps { } const Step3GeneratePreview: React.FC = ({ - templateName, - materialCount, - videoRatio, + templateName: _templateName, + materialCount: _materialCount, + videoRatio: _videoRatio, previewStatus, previewResult, previewError, -- 2.54.0 From 075fe88477e50e43bcc057b0a54b9fb0f7eda7c2 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Fri, 7 Aug 2026 15:08:00 +0800 Subject: [PATCH 3/4] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20ESLint=20?= =?UTF-8?q?=E6=8A=A5=E9=94=99=20=E2=80=94=20=E7=A7=BB=E9=99=A4=E6=9C=AA?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E7=9A=84=E8=A7=A3=E6=9E=84=E5=8F=98=E9=87=8F?= =?UTF-8?q?=20+=20=E6=B8=85=E7=90=86=E6=97=A0=E7=94=A8=20eslint-disable=20?= =?UTF-8?q?=E6=8C=87=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Step3GeneratePreview.tsx: - templateName/materialCount/videoRatio 在删除剪辑方案信息卡片后不再使用,改为 _xxx 别名 清理 develop 上遗留的无用 eslint-disable 指令: - useTtsPanel.ts: react-hooks/exhaustive-deps - ProtectedRoute.tsx: react-refresh/only-export-components - client.test.ts: @typescript-eslint/no-explicit-any (5处) - setup.ts: @typescript-eslint/no-explicit-any (2处) --- .../editing-planner/components/TtsPanel/hooks/useTtsPanel.ts | 1 - apps/web/src/router/ProtectedRoute.tsx | 1 - apps/web/src/test/api/client.test.ts | 5 ----- apps/web/src/test/setup.ts | 2 -- 4 files changed, 9 deletions(-) diff --git a/apps/web/src/pages/editing-planner/components/TtsPanel/hooks/useTtsPanel.ts b/apps/web/src/pages/editing-planner/components/TtsPanel/hooks/useTtsPanel.ts index 6d3021f55..27ab249d8 100644 --- a/apps/web/src/pages/editing-planner/components/TtsPanel/hooks/useTtsPanel.ts +++ b/apps/web/src/pages/editing-planner/components/TtsPanel/hooks/useTtsPanel.ts @@ -60,7 +60,6 @@ export const useTtsPanel = ({ open, config, onChange, onClose }: UseTtsPanelOpti return () => { active = false } - // eslint-disable-next-line react-hooks/exhaustive-deps }, [open]) /* ── 组件卸载时清理音频资源 ── */ diff --git a/apps/web/src/router/ProtectedRoute.tsx b/apps/web/src/router/ProtectedRoute.tsx index b1f2fa12f..2c49851ff 100644 --- a/apps/web/src/router/ProtectedRoute.tsx +++ b/apps/web/src/router/ProtectedRoute.tsx @@ -3,7 +3,6 @@ import { Navigate } from "react-router-dom" import { useAuthStore } from "@/store/authStore" /** 受保护的路由组件 */ -// eslint-disable-next-line react-refresh/only-export-components export const ProtectedRoute = ({ children }: { children: React.ReactNode }) => { const isAuthenticated = useAuthStore((state) => state.isAuthenticated) const hasAccessToken = Boolean(localStorage.getItem("access_token")) diff --git a/apps/web/src/test/api/client.test.ts b/apps/web/src/test/api/client.test.ts index b9986ee12..d38297266 100644 --- a/apps/web/src/test/api/client.test.ts +++ b/apps/web/src/test/api/client.test.ts @@ -26,12 +26,10 @@ import { refreshAccessToken } from "@/api/auth" import apiClient from "@/api/client" // 从真实实例取出拦截器回调 -// eslint-disable-next-line @typescript-eslint/no-explicit-any const requestHandlers = (apiClient as any).interceptors.request.handlers as Array<{ fulfilled: (config: unknown) => unknown rejected: (error: unknown) => unknown }> -// eslint-disable-next-line @typescript-eslint/no-explicit-any const responseHandlers = (apiClient as any).interceptors.response.handlers as Array<{ fulfilled: (response: unknown) => unknown rejected: (error: unknown) => Promise @@ -258,7 +256,6 @@ describe("apiClient - 401 token refresh", () => { isAuthenticated: false, clearAuth: mockClearAuth, setAuth: vi.fn(), - // eslint-disable-next-line @typescript-eslint/no-explicit-any } as any) const err = makeAxiosError(401, { detail: "Unauthorized" }) @@ -276,7 +273,6 @@ describe("apiClient - 401 token refresh", () => { isAuthenticated: true, clearAuth: vi.fn(), setAuth: mockSetAuth, - // eslint-disable-next-line @typescript-eslint/no-explicit-any } as any) vi.mocked(refreshAccessToken).mockResolvedValue({ access_token: "new-access", @@ -306,7 +302,6 @@ describe("apiClient - 401 token refresh", () => { isAuthenticated: true, clearAuth: mockClearAuth, setAuth: vi.fn(), - // eslint-disable-next-line @typescript-eslint/no-explicit-any } as any) vi.mocked(refreshAccessToken).mockRejectedValue(new Error("refresh failed") as never) diff --git a/apps/web/src/test/setup.ts b/apps/web/src/test/setup.ts index ae3c9729c..69181c10d 100644 --- a/apps/web/src/test/setup.ts +++ b/apps/web/src/test/setup.ts @@ -32,9 +32,7 @@ afterEach(() => { declare global { // eslint-disable-next-line @typescript-eslint/no-namespace namespace Vi { - // eslint-disable-next-line @typescript-eslint/no-explicit-any interface Assertion extends jest.Matchers {} - // eslint-disable-next-line @typescript-eslint/no-explicit-any interface AsymmetricMatchersContaining extends jest.Matchers {} } } -- 2.54.0 From 818f8007c1208accb4b95aadd121a41d3c1e14ce Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Fri, 7 Aug 2026 15:45:42 +0800 Subject: [PATCH 4/4] =?UTF-8?q?style:=20prettier=20=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E5=8C=96=E4=BF=AE=E5=A4=8D=20GeneratePage=20=E5=92=8C=20Step3G?= =?UTF-8?q?eneratePreview?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/src/pages/generate/GeneratePage.tsx | 28 +++++++++---------- .../components/Step3GeneratePreview.tsx | 1 - 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/apps/web/src/pages/generate/GeneratePage.tsx b/apps/web/src/pages/generate/GeneratePage.tsx index f46206220..768536f99 100644 --- a/apps/web/src/pages/generate/GeneratePage.tsx +++ b/apps/web/src/pages/generate/GeneratePage.tsx @@ -226,20 +226,20 @@ const GeneratePage: React.FC = () => { {/* 正式生成结果(Step4+ 才显示) */} {currentStep >= 4 && ( - { - setPreviewVideo(video) - setPreviewModalOpen(true) - }} - onDownload={handleDownload} - onShare={handleShare} - onGoToLibrary={() => navigate("/app/products")} - /> + { + setPreviewVideo(video) + setPreviewModalOpen(true) + }} + onDownload={handleDownload} + onShare={handleShare} + onGoToLibrary={() => navigate("/app/products")} + /> )} diff --git a/apps/web/src/pages/generate/components/Step3GeneratePreview.tsx b/apps/web/src/pages/generate/components/Step3GeneratePreview.tsx index 71311b660..e13441ad2 100644 --- a/apps/web/src/pages/generate/components/Step3GeneratePreview.tsx +++ b/apps/web/src/pages/generate/components/Step3GeneratePreview.tsx @@ -119,7 +119,6 @@ const Step3GeneratePreview: React.FC = ({ preload="metadata" /> - )} -- 2.54.0