52 lines
1.2 KiB
TypeScript
52 lines
1.2 KiB
TypeScript
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<JobType, string> = {
|
||
"ai-task": "AI 任務",
|
||
"analyze-topic": "AI 研究地圖",
|
||
"style-8d": "帳號 8D 分析",
|
||
scan: "海巡",
|
||
};
|