/**
 * 任务状态枚举
 */
export enum TaskStatus {
  WAITING = 0, // 待分配
  RUNNING = 1, // 执行中
  PAUSED = 2, // 已暂停
  COMPLETED = 3, // 已完成
  FAILED = 4, // 已失败
  TERMINATED = 5, // 已终止
}

// 机器人的具体动作，现在是一个对象
export interface RobotAction {
  name: string;
  actionId: string;
}

// 参数选项接口
export interface ParameterOption {
  label: string;
  value: string;
}

// 动态参数配置接口
export interface DynamicParameter {
  label?: string;
  type?: 'Simple' | 'Select' | 'MultiSelect' | 'Text' | 'Number';
  value: string | string[] | number | RobotAction;
  required?: boolean;
  options?: ParameterOption[];
  placeholder?: string;
  min?: number;
  max?: number;
}

// 任务参数 - 支持动态配置
export interface TaskParameters {
  [key: string]: DynamicParameter | undefined; // 支持扩展参数
}

// 核心任务对象
export interface Task {
  id: string; // 唯一ID，例如使用 uuid
  name: string; // 任务名称, e.g., "炉前缓存区到热处理上料交接区运输"
  label: string;
  description?: string;
  version: number;
  templateName: string;
  periodicTask: boolean;
  ifEnable: number;
  status: number; // 任务当前状态
  createDate: string; // 创建时间
  remark: string;
  parameters: TaskParameters; // 任务的具体执行参数
  detail?: TaskDetail; // 任务详情
}

// 任务详情
export interface TaskDetail {
  inputParams: InputParam[];
  outputParams: any[]; // 根据需要定义
  rootBlock: any; // 根据需要定义
}

// 输入参数
export interface InputParam {
  name: string;
  type: string;
  label: string;
  required: boolean;
  defaultValue: any;
  remark: string;
  min?: number;
  max?: number;
  step?: number;
}

// 运行任务请求体
export interface RunTaskRequest {
  taskId: string;
  params: Array<{
    name: string;
    type: string;
    label: string;
    required: boolean;
    defaultValue: string;
    remark: string;
  }>;
  source_type: number;
  source_system: string;
  source_device: string;
}

// 运行任务响应数据
export interface RunTaskApiResponse {
  success: boolean;
  message: string;
  taskRecordId: string;
  status: number;
  createTime: string;
  isPeriodic: boolean;
}
