import { PageResult, PageParams } from './common';

export interface AnalysisListFilter {
  // 科目
  subjectCode: string;
}
export type AnalysisListPageParam = PageParams<AnalysisListFilter>;

// 总量分析项目
export interface TotalAnalysisItem {
  // 科目名称
  subjectName: string;
  // 科目代码
  subjectCode: string;
  // 报考人数
  totalCount: number;
  // 缺考人数
  absentCount: number;
  // 违纪人数
  breachCount: number;
  // 有效考试人数
  realityCount: number;
  // 平均分
  avgScore: number;
  // 最高分
  maxScore: number;
  // 最低分
  minScore: number;
  // 及格人数
  passCount: number;
  // 及格率
  passRate: number;
  // 优秀人数
  excellentCount: number;
  // 优秀率
  excellentRate: number;
}
export type TotalAnalysisListRes = PageResult<TotalAnalysisItem>;

// 分段统计项目
export interface ScoreSegmentItem {
  // 分数段
  range: string;
  // 人数
  rangeCount: number;
  // 频率（%）
  rangeRate: number;
}
export type ScoreSegmentListRes = PageResult<ScoreSegmentItem>;

export interface ScoreSegmentFilter {
  // 科目
  subjectCode: string;
  // 分数间隔类型
  range: string;
  // 客观题
  objective: boolean;
}
export type ScoreSegmentListParam = PageParams<ScoreSegmentFilter>;

// 学院分析
export interface CollegeAnalysisItem {
  // 学生院系
  collegeName: string;
  // 报考人数
  totalCount: number;
  // 有效人数
  realityCount: number;
  // 平均分
  avgScore: number;
  // 最高分
  maxScore: number;
  // 最低分
  minScore: number;
  // 及格人数
  passCount: number;
  // 及格率
  passRate: number;
  // 优秀人数
  excellentCount: number;
  // 优秀率
  excellentRate: number;
}
export type CollegeAnalysisListRes = PageResult<CollegeAnalysisItem>;

export interface CollegeAnalysisFilter {
  // 科目
  subjectCode: string;
  // 学生院系
  collegeName: string;
}
export type CollegeAnalysisListParam = PageParams<CollegeAnalysisFilter>;

// 任课老师分析
export interface TeacherAnalysisItem {
  // 任课老师
  teacherName: string;
  // 报考人数
  totalCount: number;
  // 有效人数
  realityCount: number;
  // 及格人数
  passCount: number;
  // 优秀人数
  excellentCount: number;
  // 最高分
  maxScore: number;
  // 最低分
  minScore: number;
  // 及格率
  passRate: number;
  // 优秀率
  excellentRate: number;
  // 平均分
  avgScore: number;
  // 平均相对分
  relativeAvgScore: number;
}
export type TeacherAnalysisListRes = PageResult<TeacherAnalysisItem>;

export interface TeacherAnalysisFilter {
  // 科目
  subjectCode: string;
  // 任课老师
  teacherName: string;
}
export type TeacherAnalysisListParam = PageParams<TeacherAnalysisFilter>;

// 班级分析项目
export interface ClassAnalysisItem {
  // 班级
  className: string;
  // 报考人数
  totalCount: number;
  // 有效人数
  realityCount: number;
  // 平均分
  avgScore: number;
  // 最高分
  maxScore: number;
  // 最低分
  minScore: number;
  // 及格人数
  passCount: number;
  // 及格率
  passRate: number;
  // 优秀人数
  excellentCount: number;
  // 优秀率
  excellentRate: number;
}
export type ClassAnalysisListRes = PageResult<ClassAnalysisItem>;

export interface ClassAnalysisFilter {
  // 科目
  subjectCode: string;
  // 班级
  className: string;
}
export type ClassAnalysisListParam = PageParams<ClassAnalysisFilter>;

// 主、客观题分析项目
export interface QuestionAnalysisItem {
  // 题目名称
  questionName: string;
  // 大题号
  mainNumber: number;
  // 小题号
  subNumber: number;
  // 单题分数
  score: number;
  // 单题平均分
  avgScore: number;
  // 单题标准差
  stdev: number;
  // 得分率
  scoreRate: number;
  // 满分率
  fullScoreRate: number;
  // 试卷类型
  paperType?: string;
}
export type QuestionAnalysisListRes = PageResult<QuestionAnalysisItem>;

export interface QuestionAnalysisFilter {
  // 科目
  subjectCode: string;
  // 试卷类型
  paperType?: string;
  // 是否客观题
  objective: boolean;
}
export type QuestionAnalysisListParam = PageParams<QuestionAnalysisFilter>;

// 大题分析项目
export interface BigQuestionAnalysisItem {
  // 大题名称
  mainTitle: string;
  // 大题号
  mainNumber: number;
  // 满分
  totalScore: number;
  // 最高分
  maxScore: number;
  // 最低分
  minScore: number;
  // 平均分
  avgScore: number;
  // 标准差
  stdev: number;
  // 差异系数
  coefficient: number;
  // 得分率
  scoreRate: number;
  // 零分人数
  zeroCount: number;
  // 满分人数
  fullCount: number;
}
export type BigQuestionAnalysisListRes = PageResult<BigQuestionAnalysisItem>;
