schedules.ts 3.29 KB
import { service as http } from "@/utils/request";
import type { AxiosPromise } from "axios";

/** ---------------- 定时任务 API ---------------- **/

/**
 * 创建定时任务请求参数
 */
export interface CreateSchedulePayload {
  /** 标题 */
  title?: string;
  /** 提问内容(必需,>= 1 字符) */
  question: string;
  /** 开始时间(必需,格式:YYYY-MM-DDTHH:mm:ss,ISO 8601 格式) */
  startTime: string;
  /** 重复类型(可选,例如:DAILY) */
  repeatType?: string;
  /** 重复表达式(可选,例如:0) */
  repeatExpr?: string;
  /** 重复结束时间(可选,格式:YYYY-MM-DDTHH:mm:ss,ISO 8601 格式) */
  repeatEndTime?: string;
  /** 最大运行次数(可选) */
  maxRuns?: number;
  /** 通知类型(可选,例如:EMAIL) */
  notifyType?: string;
  /** 通知接收人(可选,例如:moeo3@icloud.com) */
  notifyTo?: string;
  /** 参数(必需,JsonNode 类型) */
  params: any;
}

/**
 * 创建定时任务响应
 * 接口返回形式:HTTP 状态码 200,响应体为可选的 integer <int64>(任务ID)
 */
export type CreateScheduleResponse = number | undefined;

/**
 * 定时任务列表
 */
export interface ScheduleItem {
  id: number;
  userId: number;
  title: string;
  question: string;
  startTime: string;
  recurrenceType: string;
  recurrenceExpr: string;
  endTime: string;
  maxRuns: number;
  notifyChannel: string;
  notifyTo: string;
  paramsJson: string;
  enabled: boolean;
  deleted: boolean;
  runCount: number;
  lastRunAt: string;
  nextRunAt: string;
  version: number;
  createdAt: string;
  updatedAt: string;
}

/**
 * 获取定时任务列表响应
 */
export interface ScheduleListResponse {
  total: number;
  items: ScheduleItem[];
}

/**
 * 创建定时任务
 * POST /api/agent/deep-search-schedules
 */
export function createSchedule(
  payload: CreateSchedulePayload,
): AxiosPromise<CreateScheduleResponse> {
  return http.post("/agent/deep-search-schedules", payload);
}

/**
 * 获取定时任务列表
 * GET /api/agent/deep-search-schedules
 *
 * @param params 查询参数(可选)
 * @returns 定时任务列表(返回包含 total 和 items 的对象)
 */
export function getScheduleList(params?: {
  page?: number;
  size?: number;
  status?: string;
}): AxiosPromise<ScheduleListResponse> {
  return http.get("/agent/deep-search-schedules", { params });
}

/**
 * 暂停定时任务
 * POST /api/agent/deep-search-schedules/{id}/pause
 *
 * @param id 定时任务ID(必需)
 * @returns 响应结果
 */
export function pauseSchedule(id: number): AxiosPromise<any> {
  return http.post(`/agent/deep-search-schedules/${id}/pause`);
}

/**
 * 恢复定时任务
 * POST /api/agent/deep-search-schedules/{id}/resume
 *
 * @param id 定时任务ID(必需)
 * @returns 响应结果
 */
export function resumeSchedule(id: number): AxiosPromise<any> {
  return http.post(`/agent/deep-search-schedules/${id}/resume`);
}

/**
 * 删除定时任务
 * DELETE /api/agent/deep-search-schedules/{id}
 *
 * @param id 定时任务ID(必需)
 * @returns 响应结果
 */
export function deleteSchedule(id: number): AxiosPromise<any> {
  return http.delete(`/agent/deep-search-schedules/${id}`);
}

export default {
  createSchedule,
  getScheduleList,
  pauseSchedule,
  resumeSchedule,
  deleteSchedule,
};