feat(assets): 3 个资产页视频也加 poster 首帧 — batch B 漏的补全
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 6m40s
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 6m40s
v0.20.1 batch B 只给生成页 GenerationCard + 消费记录 RecordDetailModal +
视频详情 VideoDetailModal 加了 poster,3 个资产页漏了:
- 用户资产页 (AssetsPage.tsx)
- 超管内容资产 (AdminAssetsPage.tsx)
- 团管内容资产 (TeamAssetsPage.tsx)
用户实测:消费记录详情能看到首帧海报 + 加载圈;打开内容资产页 / 生成页面
其他位置的视频卡片黑底硬等加载,没首帧 — 体验不一致。
修法:
- 后端 admin_assets_user_videos / team_assets_member_videos view 各加一行
'thumbnail_url': r.thumbnail_url or '' (batch B 的 3 个 records view 已有)
- AssetVideo 类型加 thumbnail_url?: string
- 3 个资产页 <video> 加 poster={... ? rewriteTosUrl(...) : undefined}
(跟 GenerationCard/RecordDetailModal/VideoDetailModal 写法一致)
GenerationCard.tsx 已在 batch B 加过 poster — 用户感觉"生成页面也没"是因为本地
ARK_API_KEY 未配生不了新视频,老 record thumbnail_url 字段是空。新生成的视频
会有(后端 tasks.py:_handle_completed ffmpeg 已经写入)。
测试:tsc 0 error, v0.20.1-smoke 11/11 + modal-interaction 8/8 + announcement 17/17
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
08b5e66fbc
commit
e500c2d6a0
@ -3022,6 +3022,7 @@ def admin_assets_user_videos(request, user_id):
|
|||||||
'task_id': str(r.task_id),
|
'task_id': str(r.task_id),
|
||||||
'prompt': r.prompt,
|
'prompt': r.prompt,
|
||||||
'result_url': r.result_url or '',
|
'result_url': r.result_url or '',
|
||||||
|
'thumbnail_url': r.thumbnail_url or '',
|
||||||
'duration': r.duration,
|
'duration': r.duration,
|
||||||
'seconds_consumed': r.seconds_consumed,
|
'seconds_consumed': r.seconds_consumed,
|
||||||
'aspect_ratio': r.aspect_ratio,
|
'aspect_ratio': r.aspect_ratio,
|
||||||
@ -3104,6 +3105,7 @@ def team_assets_member_videos(request, member_id):
|
|||||||
'task_id': str(r.task_id),
|
'task_id': str(r.task_id),
|
||||||
'prompt': r.prompt,
|
'prompt': r.prompt,
|
||||||
'result_url': r.result_url or '',
|
'result_url': r.result_url or '',
|
||||||
|
'thumbnail_url': r.thumbnail_url or '',
|
||||||
'duration': r.duration,
|
'duration': r.duration,
|
||||||
'seconds_consumed': r.seconds_consumed,
|
'seconds_consumed': r.seconds_consumed,
|
||||||
'aspect_ratio': r.aspect_ratio,
|
'aspect_ratio': r.aspect_ratio,
|
||||||
|
|||||||
@ -21,7 +21,7 @@ function VideoThumbnail({ video, onClick }: { video: AssetVideo; onClick: () =>
|
|||||||
onClick={onClick}
|
onClick={onClick}
|
||||||
>
|
>
|
||||||
{video.result_url ? (
|
{video.result_url ? (
|
||||||
<video ref={videoRef} src={rewriteTosUrl(video.result_url)} className={styles.thumbVideo} muted loop preload="metadata" />
|
<video ref={videoRef} src={rewriteTosUrl(video.result_url)} poster={video.thumbnail_url ? rewriteTosUrl(video.thumbnail_url) : undefined} className={styles.thumbVideo} muted loop preload="metadata" />
|
||||||
) : (
|
) : (
|
||||||
<div className={styles.thumbPlaceholder} />
|
<div className={styles.thumbPlaceholder} />
|
||||||
)}
|
)}
|
||||||
|
|||||||
@ -72,6 +72,7 @@ function VideoThumbnail({
|
|||||||
<video
|
<video
|
||||||
ref={videoRef}
|
ref={videoRef}
|
||||||
src={rewriteTosUrl(task.resultUrl)}
|
src={rewriteTosUrl(task.resultUrl)}
|
||||||
|
poster={task.thumbnailUrl ? rewriteTosUrl(task.thumbnailUrl) : undefined}
|
||||||
className={styles.thumbVideo}
|
className={styles.thumbVideo}
|
||||||
muted
|
muted
|
||||||
loop
|
loop
|
||||||
|
|||||||
@ -21,7 +21,7 @@ function VideoThumbnail({ video, onClick }: { video: AssetVideo; onClick: () =>
|
|||||||
onClick={onClick}
|
onClick={onClick}
|
||||||
>
|
>
|
||||||
{video.result_url ? (
|
{video.result_url ? (
|
||||||
<video ref={videoRef} src={rewriteTosUrl(video.result_url)} className={styles.thumbVideo} muted loop preload="metadata" />
|
<video ref={videoRef} src={rewriteTosUrl(video.result_url)} poster={video.thumbnail_url ? rewriteTosUrl(video.thumbnail_url) : undefined} className={styles.thumbVideo} muted loop preload="metadata" />
|
||||||
) : (
|
) : (
|
||||||
<div className={styles.thumbPlaceholder} />
|
<div className={styles.thumbPlaceholder} />
|
||||||
)}
|
)}
|
||||||
|
|||||||
@ -414,6 +414,7 @@ export interface AssetVideo {
|
|||||||
task_id: string;
|
task_id: string;
|
||||||
prompt: string;
|
prompt: string;
|
||||||
result_url: string;
|
result_url: string;
|
||||||
|
thumbnail_url?: string;
|
||||||
duration: number;
|
duration: number;
|
||||||
seconds_consumed: number;
|
seconds_consumed: number;
|
||||||
cost_amount?: number;
|
cost_amount?: number;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user