/**
 * AI 识别相关类型定义（从 web 端同步）
 */

/** 坐标格式 xywh (x, y, width, height) */
export type AICoordinate = string

/** 方向枚举 */
export type AIDirection = '0' | '90' | '180' | '270'

/** 题目得分类型 */
export type QuestionScoringType = 'total' | 'step'

/** 题目块 */
export interface AIQuestionBlock {
  /** 此题目位于传入图片列表中的第几张图 */
  image_index: number
  /** 大题号 */
  question_major: string
  /** 小题号 */
  question_minor: string
  /** 题目组合号（用于匹配） */
  question_number?: string
  /** AI识别的题目类型 */
  ai_question_type: string
  /** 题型 */
  question_type: string
  /** 题目总分 */
  full_score: number
  /** 题目半分 */
  half_score: number
  /** 题目得分类型 */
  scoring_type?: QuestionScoringType
  /** 标准答案 */
  standard_answer: string
  /** 识别答题卡返回的答案 */
  answer: string
  /** 题目坐标信息 */
  area_pos: AICoordinate
  /** 客观题选项框坐标（仅客观题有） */
  select_boxes?: AICoordinate[]
  /** 低风险字段（可选） */
  risk_low?: boolean
  /** 题目ID */
  question_id?: number
}

/** 区域块 */
export interface AIAreaBlock {
  /** 区域坐标 */
  area_pos: AICoordinate
  /** 识别的内容 - 动态字段 */
  [key: string]: string
}

/** 学生考号填涂块 */
export interface AIStudentIdBlock {
  /** 区域坐标 */
  area_pos: AICoordinate
  /** 识别的考号内容 */
  student_idhand: string
  /** 按列给出的所有填涂框的坐标 */
  student_idfilling_detect?: any[]
}

/** 学生条形码块 */
export interface AIStudentBarcodeBlock {
  /** 区域坐标 */
  area_pos: AICoordinate
  /** 识别的条形码内容 */
  student_idzbar: string
}

/** 通知块 */
export interface AINotationBlock {
  notation?: boolean
  area_pos: AICoordinate
}

/** 模板数据 */
export interface AITemplateData {
  absence_notation?: boolean
  paper_a_notation?: boolean | null
  paper_b_notation?: boolean | null
  additional_question_notation?: boolean | null
  exam_title_block?: AIAreaBlock
  student_hand_block?: AIAreaBlock
  student_idfilling_block?: AIStudentIdBlock
  student_idzbar_block?: AIStudentBarcodeBlock
  student_name_block?: AIAreaBlock
  question_block: AIQuestionBlock[]
}

/** 模板生成结果 */
export interface AITemplateResults {
  success: boolean
  modify_time?: string
  template_id?: string
  md5_digest?: string
  image?: string[]
  template_images?: string[]
  resolution?: [number, number][]
  is_blank?: boolean[]
  is_folded?: boolean[]
  is_upside_down?: boolean[]
  direction?: AIDirection[]
  rotate_angle?: number[]
  flip?: boolean
  flip_exception?: boolean
  upside_down_exception?: boolean[]
  risk_high?: boolean[]
  data: AITemplateData
}

/** 内容识别结果（可能包含在响应中） */
export interface AIRecognizeResult {
  md5_digest?: string
  image?: string[]
  success: boolean
  is_blank?: boolean[]
  is_folded?: boolean[]
  is_upside_down?: boolean[]
  rotate_angle?: number[]
  risk_high?: boolean[]
  absence_notation?: boolean
  paper_a_notation?: boolean | null
  paper_b_notation?: boolean | null
  additional_question_notation?: boolean | null
  flip?: boolean
  flip_exception?: boolean
  upside_down_exception?: boolean[]
  direction?: AIDirection[]
  data: AITemplateData
}

