/**
 * 定时任务服务相关 types - 根据后端 VO 和 DTO 转换
 */

import { BaseVO, BaseDTO } from "@/types/base"

// CrontabTaskVO - 定时任务详情
export interface CrontabTaskVO extends BaseVO {
  /** 任务ID */
  taskId?: string
  /** 任务名称 */
  taskName?: string
  /** 任务分组 */
  taskGroup?: string
  /** 任务元数据ID */
  metaId?: string
  /** 元数据名称 */
  metaName?: string
  /** 是否使用默认接收人 */
  defaultRecipient?: boolean
  /** Bean名称 */
  beanName?: string
  /** 方法名称 */
  methodName?: string
  /** 方法参数 */
  methodParams?: string
  /** Cron表达式 */
  cronExpression?: string
  /** Cron表达式描述（中文） */
  cronDescription?: string
  /** 任务状态 */
  status?: number
  /** 任务状态名称 */
  statusName?: string
  /** 任务描述 */
  description?: string
  /** 是否允许并发执行 */
  concurrent?: boolean
  /** 错过执行策略 */
  misfirePolicy?: number
  /** 错过执行策略名称 */
  misfirePolicyName?: string
  /** 下次执行时间 */
  nextExecuteTime?: string
  /** 最后执行时间 */
  lastExecuteTime?: string
  /** 最后执行状态：0-失败/1-成功 */
  lastExecuteStatus?: number
}

// TbCrontabTaskDTO - 定时任务DTO（创建和更新）
export interface TbCrontabTaskDTO extends BaseDTO {
  /** 任务ID（更新时需要） */
  taskId?: string
  /** 任务名称 */
  taskName?: string
  /** 任务分组 */
  taskGroup?: string
  /** 任务元数据ID */
  metaId?: string
  /** 是否使用默认接收人 */
  defaultRecipient?: boolean
  /** Bean名称 */
  beanName?: string
  /** 方法名称 */
  methodName?: string
  /** 方法参数 */
  methodParams?: string
  /** Cron表达式 */
  cronExpression?: string
  /** 任务状态 */
  status?: number
  /** 任务描述 */
  description?: string
  /** 是否允许并发执行 */
  concurrent?: boolean
  /** 错过执行策略 */
  misfirePolicy?: number
}

// CrontabLogVO - 定时任务执行日志
export interface CrontabLogVO extends BaseVO {
  /** 日志ID */
  logId?: string
  /** 任务ID */
  taskId?: string
  /** 任务名称 */
  taskName?: string
  /** 执行状态 */
  status?: number
  /** 执行状态名称 */
  statusName?: string
  /** 执行开始时间 */
  startTime?: string
  /** 执行结束时间 */
  endTime?: string
  /** 执行耗时（毫秒） */
  duration?: number
  /** 执行结果 */
  result?: string
  /** 错误信息 */
  errorMessage?: string
}

// TbCrontabLogDTO - 定时任务日志DTO
export interface TbCrontabLogDTO extends BaseDTO {
  /** 日志ID */
  logId?: string
  /** 任务ID */
  taskId?: string
  /** 执行状态 */
  status?: number
  /** 执行开始时间 */
  startTime?: string
  /** 执行结束时间 */
  endTime?: string
  /** 执行结果 */
  result?: string
  /** 错误信息 */
  errorMessage?: string
}
