// ============================================================ // 定时任务 — Service // ============================================================ import request, { withSignal } from './request' // === Types === export interface TaskTarget { type: string // "agent" | "hand" | "workflow" id: string } export interface ScheduledTask { id: string name: string schedule: string schedule_type: string // "cron" | "interval" | "once" target: TaskTarget enabled: boolean description: string | null last_run: string | null next_run: string | null run_count: number last_result: string | null last_error: string | null last_duration_ms: number | null created_at: string } export interface CreateScheduledTaskRequest { name: string schedule: string schedule_type?: string target: TaskTarget description?: string enabled?: boolean } export interface UpdateScheduledTaskRequest { name?: string schedule?: string schedule_type?: string target?: TaskTarget description?: string enabled?: boolean } // === Service === export const scheduledTaskService = { list: (signal?: AbortSignal) => request.get('/scheduler/tasks', withSignal({}, signal)) .then((r) => r.data), get: (id: string, signal?: AbortSignal) => request.get(`/scheduler/tasks/${id}`, withSignal({}, signal)) .then((r) => r.data), create: (data: CreateScheduledTaskRequest) => request.post('/scheduler/tasks', data) .then((r) => r.data), update: (id: string, data: UpdateScheduledTaskRequest) => request.patch(`/scheduler/tasks/${id}`, data) .then((r) => r.data), delete: (id: string) => request.delete(`/scheduler/tasks/${id}`) .then((r) => r.data), }