
import http from '@/utils/request'

// vanna 问答
export function getAsk (data, config) {
  return http.post('/vanna/v0/ask_agent', data, config)
}

// 提交到正确训练集
export function submitTrainingCorrect (data) {
  return http.post('/vanna/v0/citu_train_question_sql', data)
}

// 提交到错误训练集
export function submitTrainingError (data) {
  return http.post('/vanna/v0/training_error_question_sql', data)
}

// 查询反馈记录（支持分页、筛选、排序）
export function getFeedbackList (data) {
  return http.post('/vanna/v0/qa_feedback/query', data)
}

// 删除指定反馈记录
export function deleteFeedback (feedbackId) {
  return http.del(`/vanna/v0/qa_feedback/delete/${feedbackId}`)
}

// 修改指定反馈记录
export function updateFeedback (feedbackId, data) {
  return http.put(`/vanna/v0/qa_feedback/update/${feedbackId}`, data)
}

// 批量添加到训练集
export function addFeedbackToTraining (data) {
  return http.post('/vanna/v0/qa_feedback/add_to_training', data)
}

// 创建新的反馈记录
export function addFeedback (data) {
  return http.post('/vanna/v0/qa_feedback/add', data)
}

// 获取反馈统计信息
export function getFeedbackStats (data) {
  return http.get('/vanna/v0/qa_feedback/stats', data)
}

// 获取指定用户user_id的最近N次的会话信息
export function getConversations (data) {
  return http.get('/vanna/v0/user/guest/conversations', data)
}

// 获取指定用户user_id的最近N次的会话信息
export function getConversationsById (id) {
  return http.get(`/vanna/v0/conversation/${id}/messages`)
}

// 统计Redis中的全部的对话信息
export function getConversationsStatus () {
  return http.get('/vanna/v0/conversation_stats')
}

// 手工删除Redis中全部对话缓存
export function clearConversation (data) {
  return http.post('/vanna/v0/conversation_cleanup', data)
}

// 统计Redis中question embedding缓存
export function getEmbeddingStats () {
  return http.get('/vanna/v0/embedding_cache_stats')
}

// 清理Redis中的question embedding 缓存
export function clearEmbeddingCache () {
  return http.post('/vanna/v0/embedding_cache_cleanup')
}

// 获取训练数据统计信息
export function getTrainingData () {
  return http.get('/vanna/v0/training_data/stats')
}

// 分页查询训练数据，支持筛选和搜索
export function getTrainingDataList (param) {
  return http.post('/vanna/v0/training_data/query', param)
}

// 创建训练数据，支持单条和批量操作
export function createTrainingData (param) {
  return http.post('/vanna/v0/training_data/create', param)
}

// 更新训练数据
export function updateTrainingData (param) {
  return http.post('/vanna/v0/training_data/update', param)
}

// 导入训练数据
export function uploadTrainingData (param) {
  return http.upload('/vanna/v0/training_data/upload', param)
}

// 合并训练数据
export function combineTrainData (param) {
  return http.post('/vanna/v0/training_data/combine', param)
}

// 删除训练数据，支持批量操作
export function deleteTrainingData (param) {
  return http.post('/vanna/v0/training_data/delete', param)
}

// **************** 数据集自动生成和加载 ****************

// 数据集自动生成和加载 创建数据训练任务
export function createDataTasks (param) {
  return http.post('/vanna/v0/data_pipeline/tasks', param)
}

// 数据集自动生成和加载 执行数据训练任务
export function executeDataTasks (taskId, param) {
  return http.post(`/vanna/v0/data_pipeline/tasks/${taskId}/execute`, param)
}

// 数据集自动生成和加载 获取任务状态
export function getDataTasksStatus (taskId, param) {
  return http.get(`/vanna/v0/data_pipeline/tasks/${taskId}`, param)
}

// 数据集自动生成和加载 获取任务列表
export function getDataTasksList (param) {
  return http.get('/vanna/v0/data_pipeline/tasks', param)
}

// 数据集自动生成和加载 删除任务（批量）
export function deleteDataTasks (param) {
  return http.del('/vanna/v0/data_pipeline/tasks', param)
}

// ***************** 表名清单管理 *****************

// 表名清单管理 查询数据库表列表
export function getDataBaseList (param) {
  return http.post('/vanna/v0/database/tables', param)
}

// 表名清单管理 在线提交表名列表
export function saveDataBase (taskId, param) {
  return http.post(`/vanna/v0/data_pipeline/tasks/${taskId}/table-list`, param)
}
// 表名清单管理 上传表清单文件
export function uploadDataTasksList (taskId, param) {
  return http.upload(`/vanna/v0/data_pipeline/tasks/${taskId}/upload-table-list`, param)
}
// 表名清单管理 获取表清单文件信息
export function getDataTasksFileList (param) {
  return http.get('/vanna/v0/data_pipeline/tasks/{task_id}/table-list-info', param)
}

// *************** 训练数据文件管理 ****************

// 训练数据文件管理 查看任务文件列表
export function getTasksFileList (taskId, param) {
  return http.get(`/vanna/v0/data_pipeline/tasks/${taskId}/files`, param)
}

// 训练数据文件管理 下载任务文件
export function downloadTasksFileList (taskId, fileName) {
  return http.getDownload(`/vanna/v0/data_pipeline/tasks/${taskId}/files/${fileName}`)
}

// 表名清单管理 上传文件到任务目录
export function uploadTasksList (taskId, param) {
  return http.upload(`/vanna/v0/data_pipeline/tasks/${taskId}/files`, param)
}

// 表名清单管理 日志
export function getTasksLog (taskId, param) {
  return http.post(`/vanna/v0/data_pipeline/tasks/${taskId}/logs/query`, param)
}

// PgVector 表备份
export function addPgBackup (param) {
  return http.post('/vanna/v0/data_pipeline/vector/backup', param)
}

// PgVector 已备份
export function getPgBackupList (param) {
  return http.get('/vanna/v0/data_pipeline/vector/restore/list', param)
}

// PgVector 备份恢复
export function pgBackupRestore (param) {
  return http.post('/vanna/v0/data_pipeline/vector/restore', param)
}

// Checkpoint 统计信息
export function getCheckpoint (param) {
  return http.get('/vanna/v0/checkpoint/direct/stats', param)
}

// 清理Checkpoint
export function clearCheckpoint (param) {
  return http.post('/vanna/v0/checkpoint/direct/cleanup', param)
}
