export type JobType = "ai-task" | "analyze-topic" | "style-8d" | "scan"; export type JobStatus = "pending" | "running" | "completed" | "failed" | "cancelled"; export type JobTaskStatus = | "pending" | "running" | "done" | "failed" | "cancelled"; export interface JobTaskProgress { id: string; label: string; status: JobTaskStatus; found?: number; error?: string; /** 瀏覽器爬蟲目前子步驟(例如:滾動載入更多) */ step?: string; stepDetail?: string; /** 任務開始時間(ms),用於顯示已耗時 */ startedAt?: number; } export interface JobProgressDetail { summary: string; phase?: "tasks" | "web" | "save" | "quality" | "replies" | "ai" | "accounts" | "session" | "samples" | "style" | "store" | "ai-work"; tasks?: JobTaskProgress[]; } export interface AnalyzeTopicPayload { topicId: string; brief?: string | null; } export interface ScanPayload { topicId: string; useTags?: boolean; selectedTags?: string[]; } export interface Style8DPayload { accountId: string; benchmarkUsername: string; } export const JOB_LABELS: Record = { "ai-task": "AI 任務", "analyze-topic": "AI 研究地圖", "style-8d": "帳號 8D 分析", scan: "海巡", };