Checkpoint: v4.0 media service, compose deploy, and verified docs

这个提交包含在:
cryptocommuniums-afk
2026-03-14 21:45:31 +08:00
父节点 27083d5af9
当前提交 d5431aee0e
修改 41 个文件,包含 4056 行新增883 行删除

查看文件

@@ -47,12 +47,12 @@ export default function Videos() {
<div className="space-y-6">
<div className="flex items-center justify-between">
<div>
<h1 className="text-2xl font-bold tracking-tight"></h1>
<h1 className="text-2xl font-bold tracking-tight" data-testid="videos-title"></h1>
<p className="text-muted-foreground text-sm mt-1">
· {videos?.length || 0}
</p>
</div>
<Button onClick={() => setLocation("/analysis")} className="gap-2">
<Button data-testid="videos-upload-button" onClick={() => setLocation("/analysis")} className="gap-2">
<Video className="h-4 w-4" />
</Button>
@@ -77,7 +77,7 @@ export default function Videos() {
const status = statusMap[video.analysisStatus] || statusMap.pending;
return (
<Card key={video.id} className="border-0 shadow-sm hover:shadow-md transition-shadow">
<Card key={video.id} className="border-0 shadow-sm hover:shadow-md transition-shadow" data-testid="video-card">
<CardContent className="p-4">
<div className="flex items-start gap-4">
{/* Thumbnail / icon */}