diff --git a/apps/web/e2e/core-generation.spec.ts b/apps/web/e2e/core-generation.spec.ts index b973d95ac..900f74656 100644 --- a/apps/web/e2e/core-generation.spec.ts +++ b/apps/web/e2e/core-generation.spec.ts @@ -155,6 +155,9 @@ test.describe('Core generation and download flow', () => { await page.goto(`/projects/${projectData.id}/results`); await expect(page.getByRole('heading').getByText(generatedVideo.name, { exact: true })).toBeVisible({ timeout: 20_000 }); await expect(page.getByText('待复核')).toBeVisible({ timeout: 20_000 }); + await expect(page.getByText('暂无封面,使用成片文件预览')).toBeVisible({ timeout: 20_000 }); + await expect(page.getByRole('button', { name: '预览成片' })).toBeVisible(); + await expect(page.getByRole('button', { name: '批量获取下载地址' })).toBeEnabled(); await page.getByRole('button', { name: '标记可发布' }).click(); await expect(page.getByText('成片复核状态已更新')).toBeVisible({ timeout: 10_000 }); await expect(page.getByText('可发布', { exact: true })).toBeVisible({ timeout: 20_000 }); diff --git a/apps/web/src/pages/workspace/ProjectResults.tsx b/apps/web/src/pages/workspace/ProjectResults.tsx index 84e2ccbde..f0676bb65 100644 --- a/apps/web/src/pages/workspace/ProjectResults.tsx +++ b/apps/web/src/pages/workspace/ProjectResults.tsx @@ -40,6 +40,15 @@ const ProjectResults: React.FC = () => { onError: () => message.error('成片复核状态更新失败'), }); + const handlePreview = async (videoId: string) => { + try { + const url = await getGeneratedVideoDownloadUrl(videoId); + window.open(url, '_blank', 'noopener,noreferrer'); + } catch (error: any) { + message.error(error.response?.data?.detail || '获取预览地址失败'); + } + }; + const handleDownload = async (videoId: string) => { try { const url = await getGeneratedVideoDownloadUrl(videoId); @@ -49,9 +58,23 @@ const ProjectResults: React.FC = () => { } }; + const handleBatchDownload = async () => { + const videos = videosQuery.data || []; + for (const video of videos) { + await handleDownload(video.id); + } + }; + return (