import request from '@/config/axios'

// 数据集详情
export interface DatasetDetail {
  id: number
  name: string
  path: string
}

// 数据集管理 VO
export interface DatasVO {
  id?: number // id
  name: string // 项目名称
  description: string // 描述
  status: string // 状态：0-未标注, 1-标注中, 2-训练中, 3-训练完成
  count: number // 图片总数
  type: string // 识别类型：检测/分类
  progress: number // 进度
  datasets?: string // 数据集ID列表，逗号分隔
  datasetList?: DatasetDetail[] // 数据集详细信息列表（仅响应）
  trainRatio?: number // 训练比例(0-100)
  valRatio?: number // 验证比例(0-100)
  testRatio?: number // 测试比例(0-100)
  epochs?: number // 训练次数
  batch?: number // 批次大小
  imageSize?: number // 图片大小
  modelPath?: string // 模型路径
  createTime?: string // 创建时间
}

// 数据集管理 API
export const DatasApi = {
  // 查询数据集管理分页
  getDatasPage: async (params: any) => {
    return await request.get({ url: `/annotation/datas/page`, params })
  },

  // 查询数据集管理详情
  getDatas: async (id: number) => {
    return await request.get({ url: `/annotation/datas/get?id=` + id })
  },

  // 新增数据集管理
  createDatas: async (data: DatasVO) => {
    return await request.post({ url: `/annotation/datas/create`, data })
  },

  // 修改数据集管理
  updateDatas: async (data: DatasVO) => {
    return await request.put({ url: `/annotation/datas/update`, data })
  },

  // 图片增强
  enhanceImages: (data: { id: number; enhancements: string[] }): Promise<void> => {
    return request.post({
      url: `/annotation/datas/enhance`,
      data: {
        id: data.id,
        enhancements: data.enhancements
      }
    })
  },

  // 图片增强
  handleRefresh: (data: { id: number }): Promise<void> => {
    return request.post({
      url: `/annotation/datas/handleRefresh`,
      data: {
        id: data.id
      }
    })
  },

  // 删除数据集管理
  deleteDatas: async (id: number) => {
    return await request.delete({ url: `/annotation/datas/delete?id=` + id })
  },

  // 导出数据集管理 Excel
  exportDatas: async (params) => {
    return await request.download({ url: `/annotation/datas/export-excel`, params })
  },

  // 导出模型
  exportModel: async (id: number) => {
    return await request.download({ url: `/annotation/datas/export-model?id=` + id })
  },
}
