import { ExamType, MarkingMode } from '@/constants/enumerate';
import { PageResult, PageParams } from './common';

export interface ExamBaseItem {
  id: number;
  // 考试名称
  name: string;
  // 类型
  type: ExamType;
  // 扫描图片类型
  scanImageType: number;
  // 考试日期
  examDate: string;
  // 评卷开始日期
  markingStartDate: string;
  // 评卷结束日期
  markingEndDate: string;
  // 评卷模式
  markingMode: MarkingMode;
  // 强制标记
  forceMark: boolean;
  // 禁止其他人查看考生信息
  forbidViewStudentInfo: boolean;
  // 禁止科组长成绩查询
  forbidLeaderScoreQuery: boolean;
  // 全卷多次复核不能同一账号
  preventSameAccountRecheck: boolean;
  // 全卷复核强制试卷拉到底部
  forceScrollToBottom: boolean;
  // 全卷复核进度100%时才能再次复核
  requireFullProgressForRecheck: boolean;
  // 评卷端是否显示客观分
  showObjectiveScore: boolean;
  // 打回后显示原分值
  showOriginalScoreAfterReturn: boolean;
  // 回评卷数
  recheckCount: number;
  // 及格分
  passingScore: number;
  // 优秀分
  excellentScore: number;
  // 原卷显示
  showOriginalPaper: boolean;
  // 评卷提交自动定位
  autoPositionAfterSubmit: boolean;
  // 自动对切题卡
  autoAlignAnswerSheet: boolean;
  // 描述
  description: string;
  // 状态
  status: string;
  // 创建时间
  createTime: string;
}

// 高级配置
export interface ExamAdvancedConfig {
  // 评卷时强制试卷拉到底部
  forceScrollToBottom: boolean;
  // 最小阅卷时长(秒)
  minMarkingDuration: number | undefined;
  // 单卷回评次数
  singlePaperRecheckCount: number | undefined;
  // 给分次数限制类型：等于 小于等于
  scoringLimitType: 'eq' | 'le' | null;
  // 启用条码粘贴AI检测
  enableBarcodeAIDetection: boolean;
  // 启用题卡作答AI检测
  enableAnswerSheetAIDetection: boolean;
}

export type ExamItem = ExamBaseItem & ExamAdvancedConfig;

export type ExamQueryItem = Pick<
  ExamBaseItem,
  | 'id'
  | 'name'
  | 'type'
  | 'examDate'
  | 'markingStartDate'
  | 'markingEndDate'
  | 'status'
  | 'forceMark'
>;

export type ExamListPageRes = PageResult<ExamQueryItem>;

export interface ExamListFilter {
  // 考试名称
  name: string;
  // 类型
  type: string;
  // 状态
  status: string;
}
export type ExamListPageParam = PageParams<ExamListFilter>;

// 基础配置
export type ExamUpdateParam = Omit<ExamItem, 'id' | 'createTime'>;

// 统计详情
export interface ExamStatDetailInfo {
  // 考生数量
  studentCount: number;
  // 科目数量
  subjectCount: number;
  // 扫描进度
  scanProgress: number;
  // 扫描张数量
  scanImageCount: number;
  // 评卷进度
  markingProgress: number;
}
