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
}
}