/**
 * 答题卡颜色枚举
 * @format int32
 */
export enum AnswerSheetColor {
  Value0 = 0,
  Value1 = 1
}

/** 扫描答题卡记录模型 */
export interface AnswerSheetScanRecordModel {
  id?: string | null;
  /**
   * 关联后端的答题卡记录id
   * @format int32
   */
  relationId?: number;
  /**
   * 关联id，关联后端的答题卡批次id
   * @format int32
   */
  batchId?: number;
  /** 批次号 */
  batchNo?: string | null;
  /** 学生考号 */
  studentExamNumber?: string | null;
  /** 学生姓名 */
  studentName?: string | null;
  status?: AnswerSheetStatus;
  /** 答题卡状态描述 */
  statusDesc?: string | null;
  /** 答题卡图片 */
  answerSheetImages?: string[] | null;
  /**
   * 扫描时间
   * @format date-time
   */
  scanTime?: string;
}

export interface AnswerSheetScanRecordModelPagingResult {
  list?: AnswerSheetScanRecordModel[] | null;
  /** @format int32 */
  page?: number;
  /** @format int32 */
  page_size?: number;
  /** @format int32 */
  pages?: number;
  /** @format int32 */
  total?: number;
}

export interface AnswerSheetScanRecordModelPagingResultApiResult {
  /** @format int32 */
  code?: number;
  message?: string | null;
  data?: AnswerSheetScanRecordModelPagingResult;
}

export interface AnswerSheetScanRecordSumaryModel {
  /** 扫描任务id */
  scanTaskId?: string | null;
  /**
   * 批次ID
   * @format int32
   */
  batchId?: number;
  /** 批次号 */
  batchNo?: string | null;
  /**
   * 已扫描数量
   * @format int32
   */
  scannedCount?: number;
  /**
   * 已上传数量
   * @format int32
   */
  uploadedCount?: number;
  /**
   * 异常数量
   * @format int32
   */
  abnormalCount?: number;
}

export interface AnswerSheetScanRecordSumaryModelListApiResult {
  /** @format int32 */
  code?: number;
  message?: string | null;
  data?: AnswerSheetScanRecordSumaryModel[] | null;
}

export interface AnswerSheetScanRecordTotalSumaryModel {
  /** @format int32 */
  localUploadedCount?: number;
  /** @format int32 */
  localScannedCount?: number;
}

export interface AnswerSheetScanRecordTotalSumaryModelApiResult {
  /** @format int32 */
  code?: number;
  message?: string | null;
  data?: AnswerSheetScanRecordTotalSumaryModel;
}

/** @format int32 */
export enum AnswerSheetStatus {
  Value0 = 0,
  Value1 = 1,
  Value2 = 2,
  Value3 = 3,
  Value4 = 4,
  Value5 = 5,
  Value11 = -1
}

/**
 * 答题卡厚度枚举
 * @format int32
 */
export enum AnswerSheetThickness {
  Value0 = 0,
  Value1 = 1,
  Value2 = 2
}

export interface ApiResult {
  /** @format int32 */
  code?: number;
  message?: string | null;
}

/** 区域块 */
export interface AreaBlock {
  /**
   * 图片索引
   * @format int32
   */
  image_index?: number;
  /** 大题号 */
  question_major?: string | null;
  /** AI识别的题目类型 */
  ai_question_type?: string | null;
  /** 题目类型 */
  question_type?: string | null;
  /** 区域位置 */
  area_pos?: string | null;
  /** 考试标题（仅标题类型区域有此字段） */
  exam_title?: string | null;
}

export interface BatchOperationResponse {
  /** @format int32 */
  successCount?: number;
  /** @format int32 */
  failedCount?: number;
  errors?: string[] | null;
}

export interface BatchOperationResponseApiResult {
  /** @format int32 */
  code?: number;
  message?: string | null;
  data?: BatchOperationResponse;
}

/** 批量重新识别请求 */
export interface BatchReIdentificationRequest {
  /** AI模板ID */
  aiTemplateId?: string | null;
  /** 学生答题卡列表 */
  studentAnswerSheets?: StudentAnswerSheet[] | null;
  /** 模板信息 */
  template_data?: TemplateInfo;
  /**
   * X轴偏移量
   * @format double
   */
  x_offset?: number;
  /**
   * Y轴偏移量
   * @format double
   */
  y_offset?: number;
}

/** 批量识别请求 */
export interface BatchRecognizeRequest {
  /** 模板ID */
  template_id?: string | null;
  /** MD5摘要 */
  md5_digest?: string | null;
  /** 图片组列表 */
  images?: string[][] | null;
  /** 模板信息 */
  template_data?: TemplateInfo;
  /**
   * X轴偏移量
   * @format double
   */
  x_offset?: number;
  /**
   * Y轴偏移量
   * @format double
   */
  y_offset?: number;
}

/** 新增模板响应 */
export interface CreateTemplateResponse {
  /** 创建模板结果 */
  results?: CreateTemplateResult;
}

export interface CreateTemplateResponseApiResult {
  /** @format int32 */
  code?: number;
  message?: string | null;
  /** 新增模板响应 */
  data?: CreateTemplateResponse;
}

/** 创建模板结果 */
export interface CreateTemplateResult {
  /** 是否成功 */
  success?: boolean;
  /** 错误信息 */
  message?: string | null;
  /** 模板ID */
  template_id?: string | null;
  /** 模板信息 */
  template?: TemplateInfo;
}

/** 删除模板响应 */
export interface DeleteTemplateResponse {
  /** 是否成功 */
  success?: boolean;
  /** 消息 */
  message?: string | null;
  /** 错误信息 */
  error?: string | null;
}

export interface DeleteTemplateResponseApiResult {
  /** @format int32 */
  code?: number;
  message?: string | null;
  /** 删除模板响应 */
  data?: DeleteTemplateResponse;
}

/** 直接识别请求 */
export interface DirectRecognizeRequest {
  /** 图片组列表 */
  images?: string[][] | null;
}

/** 直接识别响应 */
export interface DirectRecognizeResponse {
  /** 识别结果列表 */
  results?: RecognitionResult[] | null;
}

export interface DirectRecognizeResponseApiResult {
  /** @format int32 */
  code?: number;
  message?: string | null;
  /** 直接识别响应 */
  data?: DirectRecognizeResponse;
}

/** 考试标题块 */
export interface ExamTitleBlock {
  /** 考试标题 */
  exam_title?: string | null;
  /** 区域位置 */
  area_pos?: string | null;
}

/** 正反面区域块 */
export interface FrontBackAreaBlock {
  /** 区域位置 */
  area_pos?: string | null;
  /**
   * 正面比率
   * @format double
   */
  front_ratio?: number;
  /**
   * 反面比率
   * @format double
   */
  back_ratio?: number;
}

/** 获取模板响应 */
export interface GetTemplateResponse {
  /** 是否成功 */
  success?: boolean;
  /** 错误信息 */
  error?: string | null;
  /** 模板ID */
  template_id?: string | null;
  /** 模板信息 */
  template?: TemplateInfo;
}

export interface GetTemplateResponseApiResult {
  /** @format int32 */
  code?: number;
  message?: string | null;
  /** 获取模板响应 */
  data?: GetTemplateResponse;
}

/** 标记块基类 */
export interface NotationBlock {
  /** 是否有标记 */
  notation?: boolean;
  /** 区域位置 */
  area_pos?: string | null;
}

/**
 * 支持的纸张尺寸
 * @format int32
 */
export enum PaperSize {
  Value0 = 0,
  Value1 = 1,
  Value2 = 2,
  Value3 = 3,
  Value4 = 4,
  Value5 = 5
}

/** 题目块 */
export interface QuestionBlock {
  /**
   * 图片索引
   * @format int32
   */
  image_index?: number;
  /** 大题号 */
  question_major?: string | null;
  /** 小题号 */
  question_minor?: string | null;
  /** AI识别的题目类型 */
  ai_question_type?: string | null;
  /** 题目类型 */
  question_type?: string | null;
  /**
   * 满分
   * @format double
   */
  full_score?: number;
  /**
   * 半分
   * @format double
   */
  half_score?: number;
  /** 标准答案 */
  standard_answer?: string | null;
  /** 答案 */
  answer?: string | null;
  /** 区域位置 */
  area_pos?: string | null;
  /** 选择框（客观题） */
  select_boxes?: string[] | null;
  /** 低风险标识 */
  risk_low?: boolean | null;
  /**
   * 题目索引
   * @format int32
   */
  question_index?: number | null;
  /** 题目编号（格式：大题-小题） */
  question_number?: string | null;
  /** 评分类型 */
  scoring_type?: string | null;
}

/** 识别结果 */
export interface RecognitionResult {
  /** 是否成功 */
  success?: boolean;
  /** 图片方向 */
  direction?: string[] | null;
}

export interface ScanExamRequest {
  /** 扫描设置模型 */
  settings?: ScanSettingRequest;
  /**
   * 学校ID (答题卡扫描使用)
   * @format int32
   */
  schoolId?: number;
  /**
   * 考试科目ID (答题卡扫描使用)
   * @format int32
   */
  examSubjectId?: number;
  /** 需比较的AI模板ID (答题卡扫描使用) */
  aiTemplateId?: string | null;
  /**
   * 模板ID
   * @format int32
   */
  templateId?: number;
  /**
   * 模板图片页数 (答题卡扫描使用)
   * @format int32
   */
  templatePages?: number;
  /**
   * 批次ID，后端生成的唯一标识符，用于区分不同的答题卡批次
   * @format int32
   */
  batchId?: number;
  /** 批次号 */
  batchNo?: string | null;
}

/** 通用扫描请求模型 */
export interface ScanRequest {
  /** 扫描设置模型 */
  settings?: ScanSettingRequest;
}

/** 扫描设置模型 */
export interface ScanSettingRequest {
  /**
   * 分辨率 (DPI): 150, 200, 300, 400-扫描仪配置
   * @format int32
   */
  dpi?: number;
  /** 答题卡颜色枚举 */
  answerSheetColor?: AnswerSheetColor;
  /** 答题卡厚度枚举 */
  answerSheetThickness?: AnswerSheetThickness;
  /** 答题卡尺寸模式枚举 */
  sizeMode?: SizeMode;
  /** 支持的纸张尺寸 */
  paperSize?: PaperSize;
  /**
   * 自定义宽度 (毫米，当PaperSize为Custom时使用)
   * @format double
   */
  customWidth?: number;
  /**
   * 自定义高度 (毫米，当PaperSize为Custom时使用)
   * @format double
   */
  customHeight?: number;
  /**
   * 亮度调节 (-100 到 100)
   * @format int32
   */
  brightness?: number;
  /**
   * 对比度调节 (-100 到 100)
   * @format int32
   */
  contrast?: number;
  /** 亮度检测: 开启或关闭 */
  brightnessDetection?: boolean;
  /** 透红扫描: 开启或关闭 (不支持透红时显示为灰色) */
  redFilter?: boolean;
  /** 灰度图: 开启或关闭-扫描仪配置 */
  grayscaleImage?: boolean;
  /** 颜色模式 */
  colorMode?: string | null;
  /** 自动裁剪 */
  autoCrop?: boolean;
  /** 图像倾斜校正 */
  autoDeskew?: boolean;
  /** 自动旋转图像 */
  autoRotate?: boolean;
  /**
   * 图像质量
   * @format int32
   */
  quality?: number;
  /** 输出格式 */
  outputFormat?: string | null;
}

export interface ScanStatusInfo {
  hasRunningScan?: boolean;
  currentTaskId?: string | null;
  currentTaskType?: string | null;
  /** @format date-time */
  startTime?: string | null;
}

export interface ScanStatusInfoApiResult {
  /** @format int32 */
  code?: number;
  message?: string | null;
  data?: ScanStatusInfo;
}

/** 扫描任务信息 */
export interface ScanTask {
  id?: string | null;
  /** 扫描任务状态 */
  status?: ScanTaskStatus;
  /** 通用扫描请求模型 */
  request?: ScanRequest;
  /** @format date-time */
  startedAt?: string | null;
  /** @format date-time */
  completedAt?: string | null;
  errorMessage?: string | null;
}

export interface ScanTaskApiResult {
  /** @format int32 */
  code?: number;
  message?: string | null;
  /** 扫描任务信息 */
  data?: ScanTask;
}

export interface ScanTaskListApiResult {
  /** @format int32 */
  code?: number;
  message?: string | null;
  data?: ScanTask[] | null;
}

/**
 * 扫描任务状态
 * @format int32
 */
export enum ScanTaskStatus {
  Value0 = 0,
  Value1 = 1,
  Value2 = 2,
  Value3 = 3,
  Value4 = 4
}

/** 模板扫描结果 */
export interface ScanTemplateResult {
  /** 是否成功 */
  success?: boolean;
  /** 扫描任务ID */
  scanTaskId?: string | null;
  /**
   * 总图片数量
   * @format int32
   */
  totalImages?: number;
  /** 扫描的图片列表 */
  images?: ScannedImage[] | null;
  /**
   * 扫描时间
   * @format date-time
   */
  scanTime?: string;
  /** 错误信息（如果有） */
  errorMessage?: string | null;
}

export interface ScanTemplateResultApiResult {
  /** @format int32 */
  code?: number;
  message?: string | null;
  /** 模板扫描结果 */
  data?: ScanTemplateResult;
}

/** 扫描的图片信息 */
export interface ScannedImage {
  /** 文件路径 */
  filePath?: string | null;
  /** 文件名 */
  fileName?: string | null;
  /**
   * 图片宽度
   * @format int32
   */
  width?: number;
  /**
   * 图片高度
   * @format int32
   */
  height?: number;
  /**
   * 文件大小（字节）
   * @format int64
   */
  fileSize?: number;
  /** 图片格式 */
  imageFormat?: string | null;
  /**
   * 扫描时间戳
   * @format date-time
   */
  timestamp?: string;
}

/** 扫描仪信息模型 */
export interface ScannerInfo {
  /**
   * 扫描仪ID
   * @format int32
   */
  id?: number;
  /** 产品名称 */
  productName?: string | null;
  /** 制造商 */
  manufacturer?: string | null;
  /** 产品系列 */
  productFamily?: string | null;
  /** 版本信息 */
  version?: string | null;
  /** 是否为默认扫描仪 */
  isDefault?: boolean;
  /** 平台信息 */
  platform?: string | null;
}

export interface ScannerInfoListApiResult {
  /** @format int32 */
  code?: number;
  message?: string | null;
  data?: ScannerInfo[] | null;
}

/** 打分框块 */
export interface ScoreRectangleBlock {
  /**
   * 图片索引
   * @format int32
   */
  image_index?: number;
  /** 区域位置 */
  area_pos?: string | null;
  /** 位置坐标（已废弃，保持兼容性） */
  pos?: number[] | null;
  /**
   * 索引（已废弃，保持兼容性）
   * @format int32
   */
  index?: number | null;
}

/**
 * 答题卡尺寸模式枚举
 * @format int32
 */
export enum SizeMode {
  Value0 = 0,
  Value1 = 1
}

export interface StringApiResult {
  /** @format int32 */
  code?: number;
  message?: string | null;
  data?: string | null;
}

export interface StringDateTimeStringFAnonymousType0 {
  status?: string | null;
  /** @format date-time */
  timestamp?: string;
  version?: string | null;
}

export interface StudentAnswerSheet {
  /**
   * 答题卡ID
   * @format int32
   */
  id?: number;
  /** 答题卡图片URL列表 */
  answer_sheet_urls?: string[] | null;
}

/** 学生信息块 */
export interface StudentBlock {
  /** 学生ID或姓名 */
  student_idhand?: string | null;
  /** 学生姓名（仅在student_name_block中使用） */
  student_name?: string | null;
  /** 区域位置 */
  area_pos?: string | null;
}

/** 学生填涂考号块 */
export interface StudentIdFillingBlock {
  /** 学生ID或姓名 */
  student_idhand?: string | null;
  /** 学生姓名（仅在student_name_block中使用） */
  student_name?: string | null;
  /** 区域位置 */
  area_pos?: string | null;
  /** 填涂框位置 */
  boxes?: Record<string, string[]>;
}

/** 模板数据 */
export interface TemplateData {
  /** 标记块基类 */
  absence_notation_block?: NotationBlock;
  /** 标记块基类 */
  paper_a_notation_block?: NotationBlock;
  /** 标记块基类 */
  paper_b_notation_block?: NotationBlock;
  /** 标记块基类 */
  additional_question_notation_block?: NotationBlock;
  /** 考试标题块 */
  exam_title_block?: ExamTitleBlock;
  /** 学生信息块 */
  student_hand_block?: StudentBlock;
  /** 学生填涂考号块 */
  student_idfilling_block?: StudentIdFillingBlock;
  /** 学生信息块 */
  student_name_block?: StudentBlock;
  /** 区域块列表 */
  area_block?: AreaBlock[] | null;
  /** 题目块列表 */
  question_block?: QuestionBlock[] | null;
  /** 打分框块列表 */
  score_rectangles_block?: ScoreRectangleBlock[] | null;
  /** 正反面区域块 */
  front_back_area_block?: FrontBackAreaBlock;
  /** 正反面区域块（新增必需字段） */
  upside_down_area_block?: Record<string, UpsideDownAreaItem>;
}

/** 模板信息 */
export interface TemplateInfo {
  /** 是否成功 */
  success?: boolean;
  /** 修改时间戳（毫秒） */
  modify_time?: string | null;
  /** 模板ID */
  template_id?: string | null;
  /** MD5摘要 */
  md5_digest?: string | null;
  /** 模板图片URLs */
  template_images?: string[] | null;
  /** 是否为空白 */
  is_blank?: boolean[] | null;
  /** 是否有折角 */
  is_folded?: boolean[] | null;
  /** 是否颠倒 */
  is_upside_down?: boolean[] | null;
  /** 方向角度 */
  direction?: string[] | null;
  /** 旋转角度 */
  rotate_angle?: number[] | null;
  /** 图片分辨率信息 [[width1, height1], [width2, height2], ...] */
  resolution?: number[][] | null;
  /** 模板数据 */
  data?: TemplateData;
}

/** 模板列表项 */
export interface TemplateListItem {
  /** 模板ID */
  template_id?: string | null;
  /** 修改时间 */
  modify_time?: string | null;
  /** MD5摘要 */
  md5_digest?: string | null;
  /** 模板图片URLs */
  template_images?: string[] | null;
  /** 是否成功 */
  success?: boolean;
  /**
   * 题目数量
   * @format int32
   */
  question_count?: number;
  /**
   * 打分框数量
   * @format int32
   */
  score_rectangles_count?: number;
  /** 考试标题 */
  exam_title?: string | null;
}

/** 模板列表响应 */
export interface TemplateListResponse {
  /** 是否成功 */
  success?: boolean;
  /**
   * 模板数量
   * @format int32
   */
  count?: number;
  /** 模板列表 */
  templates?: TemplateListItem[] | null;
}

export interface TemplateListResponseApiResult {
  /** @format int32 */
  code?: number;
  message?: string | null;
  /** 模板列表响应 */
  data?: TemplateListResponse;
}

/** 模板修改请求 */
export interface TemplateModifyRequest {
  /** 模板信息 */
  results?: TemplateInfo;
}

/** 模板修改响应 */
export interface TemplateModifyResponse {
  /** 模板信息 */
  results?: TemplateInfo;
}

export interface TemplateModifyResponseApiResult {
  /** @format int32 */
  code?: number;
  message?: string | null;
  /** 模板修改响应 */
  data?: TemplateModifyResponse;
}

/** 模板识别请求 */
export interface TemplateRecognizeRequest {
  /** 图片URL列表 */
  image?: string[] | null;
  /** 手动旋转角度，可选字段 */
  manual_rotate?: (number | null)[];
}

/** 模板识别响应 */
export interface TemplateRecognizeResponse {
  /** 模板信息 */
  results?: TemplateInfo;
}

export interface TemplateRecognizeResponseApiResult {
  /** @format int32 */
  code?: number;
  message?: string | null;
  /** 模板识别响应 */
  data?: TemplateRecognizeResponse;
}

/** 文字定位区更新请求 */
export interface UpdateFrontBackAreaRequest {
  /** 模板ID */
  template_id?: string | null;
  /** 区域坐标，xywh格式 */
  area_pos?: string | null;
  /** 正面参考图片URL */
  front_image?: string | null;
  /** 反面参考图片URL */
  back_image?: string | null;
}

/** 文字定位区更新响应 */
export interface UpdateFrontBackAreaResponse {
  /** 是否成功 */
  success?: boolean;
  /** 错误信息 */
  error?: string | null;
  /**
   * 正面比率
   * @format double
   */
  front_ratio?: number | null;
  /**
   * 反面比率
   * @format double
   */
  back_ratio?: number | null;
  /** 模板信息 */
  template?: TemplateInfo;
}

export interface UpdateFrontBackAreaResponseApiResult {
  /** @format int32 */
  code?: number;
  message?: string | null;
  /** 文字定位区更新响应 */
  data?: UpdateFrontBackAreaResponse;
}

/** 颠倒检测区域项 */
export interface UpsideDownAreaItem {
  /**
   * 比率
   * @format double
   */
  ratio?: number;
  /** 区域位置 */
  area_pos?: string | null;
  /**
   * 旋转后比率
   * @format double
   */
  rotated_ratio?: number;
}
