/**
 * 我的试卷 / 在线考试答卷状态（与后端 TmsExamStatus 一致）
 * - notStarted：未开考（待考壳已生成，尚未点开考）
 * - doing：答题中
 * - submitted：已交卷
 * （cancelled 一般不出现在「我的试卷」列表）
 */
export type MyPaperStatus = 'notStarted' | 'doing' | 'submitted';

/** 列表行：我的试卷 */
export interface MyPaperListItem {
  id: string;
  paperId: string;
  paperName: string;
  /** 答卷状态：notStarted / doing / submitted */
  status: MyPaperStatus;
  examStart?: string;
  examEnd?: string;
  /** 展示用考试时间文案 */
  examTimeText?: string;
  totalScore: number;
  passScore?: number;
  durationMin?: number;
  /** 已交卷时的得分 */
  gotScore?: number;
  /** 1合格 / 0不合格 / pass/fail / 空=未出结果 */
  passFlag?: string;
  examId?: string;
  /** 当前/最近一次考试序号，1=首考 */
  attemptNo?: number;
  /** 首考 / 补考（第1次）…（补考序号不含首考） */
  attemptLabel?: string;
  submittedCount?: number;
  retakeLimit?: number;
  remainingRetakes?: number;
  canRetake?: boolean;
}

export interface MyPaperPageQuery {
  currentPage?: number;
  pageSize?: number;
  keyword?: string;
  status?: MyPaperStatus | '';
  /** pass/fail（兼容 1/0）/ none未出结果 */
  passFlag?: string;
  /** first首考 / retake补考 */
  attemptType?: 'first' | 'retake' | '';
  /** 1可补考 / 0不可补考 */
  canRetake?: '0' | '1' | '';
  examTimeFrom?: string;
  examTimeTo?: string;
}

/** 开考后试卷内容 */
export interface OnlineExamPaper {
  examId: string;
  paperId: string;
  paperName: string;
  totalScore: number;
  passScore?: number;
  durationMin?: number;
  /** 开考时间，倒计时按此续算 */
  startTime?: string;
  /** 服务端剩余秒数 */
  remainSeconds?: number | null;
  /** 开考接口发现已超时并完成自动交卷 */
  autoSubmitted?: boolean;
  attemptNo?: number;
  attemptLabel?: string;
  questions: OnlineExamQuestionItem[];
}

export type OnlineQuestionType = 'single' | 'multi' | 'judge' | 'blank' | 'essay';

export interface OnlineExamQuestionItem {
  id: string;
  questionId?: string;
  questionNo?: string;
  questionType: OnlineQuestionType;
  stem: string;
  score: number;
  gotScore?: number | null;
  userAnswer?: string;
  options: { optionLabel: string; optionContent: string; isCorrect?: '0' | '1' }[];
  /** 交卷后回填 */
  right?: boolean | null;
  correctAnswer?: string;
  /** 试题解析（回顾） */
  analysis?: string;
  subjective?: boolean;
}

export interface OnlineExamSubmitResult {
  objectiveScore?: number;
  totalScore?: number;
  passFlag?: string;
  gradeStatus?: string;
  pendingGrade?: boolean;
  items?: {
    id: string;
    correctAnswer?: string;
    analysis?: string;
    gotScore?: number | null;
    right?: boolean | null;
    subjective?: boolean;
  }[];
}

export interface OnlineExamAttempt {
  examId: string;
  attemptNo?: number;
  attemptLabel?: string;
  status?: MyPaperStatus;
  gradeStatus?: string;
  startTime?: string;
  submitTime?: string;
  gotScore?: number | null;
  passFlag?: string;
}

export interface OnlineExamDetail {
  id: string;
  paperId: string;
  paperName: string;
  status: MyPaperStatus;
  examTimeText?: string;
  totalScore: number;
  passScore?: number;
  durationMin?: number;
  gotScore?: number;
  startTime?: string;
  submitTime?: string;
  passFlag?: string;
  gradeStatus?: string;
  examId?: string;
  attemptNo?: number;
  attemptLabel?: string;
  submittedCount?: number;
  retakeLimit?: number;
  remainingRetakes?: number;
  canRetake?: boolean;
  /** 历史答卷 */
  attempts?: OnlineExamAttempt[];
  /** 已交卷回顾 */
  questions?: OnlineExamQuestionItem[];
}
