import { type ParameterInputObject } from '@/components/ResourceSelect';
import { type NodeStatus } from '@/types';
import { type FormParameter } from './components/CreateForm/utils';

// 操作类型
export enum OperationType {
  Create = 'Create', // 创建
  Update = 'Update', // 更新
}

// 表单数据
export type FormData = {
  name: string; // 实验名称
  description: string; // 实验描述
  code_config: ParameterInputObject; // 代码
  dataset: ParameterInputObject; // 数据集
  model: ParameterInputObject; // 模型
  image: ParameterInputObject; // 镜像
  main_py: string; // 主函数代码文件
  metric: string; // 指标
  mode: string; // 优化方向
  search_alg?: string; // 搜索算法
  scheduler?: string; // 调度算法
  num_samples: number; // 总实验次数
  max_t: number; // 单次试验最大时间
  min_samples_required: number; // 计算中位数的最小试验数
  resource: string; // 资源规格
  parameters: FormParameter[];
  points_to_evaluate: { [key: string]: any }[];
};

export type HyperParameterData = {
  id: number;
  progress: number;
  run_state: string;
  state: number;
  create_by?: string;
  create_time?: string;
  update_by?: string;
  update_time?: string;
  status_list: string; // 最近五次运行状态
} & FormData;

// 自动机器学习实验实例
export type AutoMLInstanceData = {
  id: number;
  auto_ml_id: number;
  result_path: string;
  model_path: string;
  img_path: string;
  run_history_path: string;
  state: number;
  status: string;
  node_status: string;
  node_result: string;
  param: string;
  source: string | null;
  argo_ins_name: string;
  argo_ins_ns: string;
  create_time: string;
  update_time: string;
  finish_time: string;
  nodeStatus?: NodeStatus;
};
