import type { StudioTask } from '../protocol/studio-agent-types' import { formatStudioTime } from '../theme' interface StudioTaskTimelineProps { tasks: StudioTask[] } export function StudioTaskTimeline({ tasks }: StudioTaskTimelineProps) { if (!tasks.length) { return
暂无关联任务。
} return (
{tasks.map((task, index) => (
0 ? 'mt-4' : ''}`}>
{task.title}
{translateTaskType(task.type)} · {translateTaskStatus(task.status)} · {formatStudioTime(task.updatedAt)}
{task.detail &&
{task.detail}
}
))}
) } function taskDotColor(status: string) { switch (status) { case 'running': return 'bg-emerald-500' case 'completed': return 'bg-sky-500' case 'failed': return 'bg-rose-500' case 'queued': case 'pending_confirmation': return 'bg-amber-500' default: return 'bg-text-secondary/30' } } function translateTaskStatus(status: string) { switch (status) { case 'running': return '运行中' case 'completed': return '已完成' case 'failed': return '失败' case 'queued': return '排队中' case 'pending_confirmation': return '待确认' default: return status } } function translateTaskType(type: string) { switch (type) { case 'render': return '渲染' case 'review': return '审查' case 'edit': return '编辑' case 'design': return '设计' case 'fix': return '修复' default: return type } }