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

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

// 总量分析项目
export interface TotalAnalysisItem {
  // 科目名称
  subject: string;
  // 报考人数
  totalStudents: number;
  // 缺考人数
  absentStudents: number;
  // 违纪人数
  violationStudents: number;
  // 有效考试人数
  validStudents: number;
  // 平均分
  averageScore: number;
  // 最高分
  highestScore: number;
  // 最低分
  lowestScore: number;
  // 及格人数
  passStudents: number;
  // 及格率
  passRate: number;
  // 优秀人数
  excellentStudents: number;
  // 优秀率
  excellentRate: number;
}
export type TotalAnalysisListRes = PageResult<TotalAnalysisItem>;

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

export interface ScoreSegmentFilter {
  // 科目
  subject: string;
  // 分数间隔类型
  intervalType: string;
}
export type ScoreSegmentListParam = PageParams<ScoreSegmentFilter>;

// 学院分析
export interface CollegeAnalysisItem {
  // 学生院系
  college: string;
  // 报考人数
  totalStudents: number;
  // 有效人数
  validStudents: number;
  // 平均分
  averageScore: number;
  // 最高分
  highestScore: number;
  // 最低分
  lowestScore: number;
  // 及格人数
  passStudents: number;
  // 及格率
  passRate: number;
  // 优秀人数
  excellentStudents: number;
  // 优秀率
  excellentRate: number;
}
export type CollegeAnalysisListRes = PageResult<CollegeAnalysisItem>;

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

// 任课老师分析
export interface TeacherAnalysisItem {
  // 任课老师
  teacher: string;
  // 报考人数
  totalStudents: number;
  // 有效人数
  validStudents: number;
  // 及格人数
  passStudents: number;
  // 优秀人数
  excellentStudents: number;
  // 最高分
  highestScore: number;
  // 最低分
  lowestScore: number;
  // 及格率
  passRate: number;
  // 优秀率
  excellentRate: number;
  // 平均分
  averageScore: number;
  // 平均相对分
  averageRelativeScore: number;
}
export type TeacherAnalysisListRes = PageResult<TeacherAnalysisItem>;

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

// 班级分析项目
export interface ClassAnalysisItem {
  // 班级
  className: string;
  // 报考人数
  totalStudents: number;
  // 有效人数
  validStudents: number;
  // 平均分
  averageScore: number;
  // 最高分
  highestScore: number;
  // 最低分
  lowestScore: number;
  // 及格人数
  passStudents: number;
  // 及格率
  passRate: number;
  // 优秀人数
  excellentStudents: number;
  // 优秀率
  excellentRate: number;
}
export type ClassAnalysisListRes = PageResult<ClassAnalysisItem>;

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

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

export interface QuestionAnalysisFilter {
  // 科目
  subject: string;
  // 试卷类型
  paperType?: string;
}
export type QuestionAnalysisListParam = PageParams<QuestionAnalysisFilter>;

// 大题分析项目
export interface BigQuestionAnalysisItem {
  // 大题名称
  bigQuestionName: string;
  // 大题号
  bigQuestionNo: number;
  // 满分
  totalScore: number;
  // 最高分
  highestScore: number;
  // 最低分
  lowestScore: number;
  // 平均分
  averageScore: number;
  // 标准差
  standardDeviation: number;
  // 差异系数
  differenceCoefficient: number;
  // 得分率
  scoreRate: number;
  // 零分人数
  zeroScoreStudents: number;
  // 满分人数
  fullScoreStudents: number;
}
export type BigQuestionAnalysisListRes = PageResult<BigQuestionAnalysisItem>;
