// src/api/exam.ts  考试相关的接口
import request from '../utils/request.ts'
import type { ApiResponse } from '@/types/types' // 引入类型


// 1. 新建编辑考试接口
export const createExamSubject = (data:any): Promise<ApiResponse> => {
  return request({
    url: '/api/v1/ai_home/create_exam_subject',
    method: 'post',
    data
  })
}

// 2. 获取头部筛选信息
export const getHeadData = ():Promise<ApiResponse> => {
  return request({
    url: '/api/v1/ai_home/find_smart_head_data',
    method: 'get'
  })
}


// 3. 获取选择题智能判分首页列表
export const getExamList = (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/ai_home/query_smart_exam_page',
    method: 'get',
    params: data 
  })
}


// 4. 获取考试类型相关数据
export const getExamTypeData= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/common_exam/find_all_info_under_school',
    method: 'get',
    params: data 
  })
}

// 5. 删除考试接口
export const deleteExam= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/ai_home/remove_ai_exam',
    method: 'post',
    data
  })
}

// 6. 获取模版信息列表
export const getTemplateList= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/smart_template/query_template_by_page',
    method: 'get',
    params: data 
  })
}


// 7. 更换模板 使用模版
export const useTemplate= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/smart_question/use_smart_template',
    method: 'post',
    data
  })
}

// 8. 获取试题列表
export const getSmartQuestionList= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/smart_question/find_question_tbl',
    method: 'get',
    params: data 
  })
}

// 9. 试题结构 设置题目
export const setQuestion= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/smart_question/set_question',
    method: 'post',
    data
  })
}

// 10. 试题结构 查询模板信息
export const getTemplateInfo= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/smart_template/find_ai_exam_template',
    method: 'get',
    params: data 
  })
}


// 11. 试题结构 删除所有题目
export const deleteAllQuestion= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/smart_question/remove_all_question',
    method: 'post',
    data
  })
}

// 12. 试题结构 删除单个题目
export const deleteSingleQuestion= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/smart_question/remove_single_question',
    method: 'post',
    data
  })
}


// 13. 试题结构  保存题目数据
export const saveQuestion= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/smart_question/finish_smart_question',
    method: 'post',
    data
  })
} 

// 14. 扫描学生 查询是否导入了学生名单
export const hasImportStudent= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/ai_exam_scan/has_import_student',
    method: 'get',
    params: data 
  })
}

// 15. 扫描学生 查询班级名单
export const getClassList= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/ai_exam_room/find_class',
    method: 'get',
    params: data 
  })
}


// 16. 扫描学生 使用班级名单
export const useClassList= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/ai_exam_room/use_sys_class_roster',
    method: 'post',
    data
  })
}

// 17. 扫描学生 查询考场列表数据
export const getExamRoomList= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/ai_exam_room/find_exam_room',
    method: 'get',
    params: data 
  })
}

// 18. 扫描学生 查询考场的学生列表数据
export const getExamRoomStudentList= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/ai_exam_room/find_scan_student_by_exam_room',
    method: 'get',
    params: data 
  })
}


// 19. 扫描学生  删除单个未扫描的学生
export const deleteExamRoomStudent= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/ai_exam_room/delete_not_scan_student',
    method: 'post',
    data
  })
}

// 20. 扫描学生 查询批次列表
export const getBatchList= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/ai_exam_scan/find_scanned_batch',
    method: 'get',
    params: data 
  })
}

// 21. 扫描学生  点击开始扫描获取当前批次
export const getCurrentBatchNo= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/ai_exam_scan/obtain_current_batch_no',
    method: 'get',
    params: data 
  })
}

// 22. 扫描学生 删除批次信息
export const deleteBatch= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/ai_exam_scan/delete_batch',
    method: 'post',
    data
  })
}

// 23. 扫描学生 更新扫描张数 
export const updateScanCount= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/ai_exam_scan/record_batch_scan_number',
    method: 'post',
    data
  })
}


// 24. 扫描学生 查看批次详情 列表模式 分页接口
export const getBatchDetailList= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/ai_exam_scan/find_scanned_batch_detail',
    method: 'get',
    params: data 
  })
}

// 25. 扫描学生 查看批次详情  图片模式 分页接口 
export const getBatchDetailImage= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/ai_exam_scan/find_scanned_batch_pics',
    method: 'get',
    params: data 
  })
}

// 26. 扫描学生 获取未扫描 缺考 已上传的学生列表数据
export const getExamStudentList= (data:any):Promise<ApiResponse> => { 
  return request({
    url: '/api/v1/ai_exam_scan/find_stu_by_condition',
    method: 'get',
    params: data 
  })
}


// 27. 扫描学生 标记缺考 恢复正常
export const updateScannedStatus= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/ai_exam_scan/update_scanned_status',
    method: 'post',
    data
  })
}

// 28. 扫描学生  标记考号异常
export const updateExamNumberException= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/ai_exam_scan/mark_to_card_number_exception',
    method: 'post',
    data
  })
}

// 29. 扫描学生 获取异常列表数据
export const getExamAbnormalList= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/ai_exam_scan/find_abnormal_detail',
    method: 'get',
    params: data 
  })
}


// 30. 扫描学生  考号异常搜索学生列表
export const getSearchScanStudents= (data:any,config?: { signal?: AbortSignal }):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/ai_exam_scan/find_scan_student_by_condition',
    method: 'get',
    params: data ,
    ...config
  })
}

// 31. 扫描学生  考号异常  认领答题卡
export const claimAnswerCard= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/ai_exam_scan/claim_card',
    method: 'post',
    data
  })
}

// 32. 扫描学生  考号异常  删除当前试卷信息
export const deletePaper= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/ai_exam_scan/delete_paper',
    method: 'post',
    data
  })
}

// 33. 扫描学生  考号异常  将此考生的所有纸张标记为定位异常
export const markPositionAbnormal= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/ai_exam_scan/mark_normal_to_dw_exception',
    method: 'post',
    data
  })
}

// 34. 扫描学生  客观题异常  校正
export const correctObjectiveQuestion= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/ai_exam_scan/validate_objective_question',
    method: 'post',
    data
  })
}

// 35. 扫描学生  定位异常 重新识别
export const reRecognizePosition= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/ai_exam_scan/ai_hand_recognize_again',
    method: 'post',
    data
  })
}

// 36. 扫描学生  定位异常 获取模板详细信息
export const getTemplateDetail= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/smart_template/find_ai_template_information',
    method: 'get',
    params: data ,
  })
}

// 37. 扫描学生  扫描完成  
export const finishScanned= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/ai_exam_scan/finish_ai_scanned',
    method: 'post',
    data ,
  })
}

// 38 扫描学生 设置扫描弹窗设置
export const setExamScanSetting= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/scan_setting/setting_alter_window',
    method: 'get',
    params: data
  })
}

// 39. 扫描学生 获取扫描弹窗设置
export const saveChooseCode= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/ai_exam_scan/save_choose_code',
    method: 'post',
    data
  })
}

// 40. 扫描学生 获取成绩发布汇总接口
export const getExamScoreSummary= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/ai_analysis/calculateAiExam',
    method: 'post',
    data
  })
}

// 41. 扫描学生 考号填涂位置设置
export const setExamNumberPosition= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/ai_exam_scan/set_card_number_seq',
    method: 'post',
    data
  })
}

// 42. 扫描学生 新增学生 搜索学生信息
export const getExamStudentInfo= (data:any):Promise<ApiResponse> => {
  data.useNew=1;
  return request({
    url: '/api/v1/pc_student/find_student_by_code',
    method: 'get',
    params: data
  })
}

// 43. 扫描学生 新增学生 获取考场页面编辑弹窗里面的考场行政班教学班下拉列表数据
export const getClassListData= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/ai_exam_room/find_multi_select_data',
    method: 'get',
    params:data
  })
}

// 44. 扫描学生 新增学生 添加学生   修改学生信息

export const updateExamStudentInfo= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/ai_exam_room/save_update_scan_student',
    method: 'post',
    data
  })
}


// 45. 扫描学生 新增学生 添加学生   删除学生答题卡信息
export const deleteAnswerCard= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/ai_exam_scan/delete_batch_pic',
    method: 'post',
    data
  })
}


// 46. 扫描学生 重新识别 识别客观题和全部重新识别
export const recognizeAgain= (data:any):Promise<ApiResponse> => {
  return request({
    url: '/api/v1/ai_exam_scan/ai_hand_recognize_again',
    method: 'post',
    data
  })
}