浏览代码

接口字段类型声明文件分模块

Liu.Yang5 2 年之前
父节点
当前提交
9b375f8f73

+ 14 - 0
src/api/api-types/base.d.ts

@@ -0,0 +1,14 @@
+export type BaseDefine<P = null, R = null, O = null> = {
+  params: P
+  result: R
+}
+export type BaseMultiplePageQuery = { pageNumber: number; pageSize: number }
+type BaseMultiplePageResult = {
+  pageCount: number
+  pageNumber: number
+  pageSize: number
+  totalCount: number
+}
+
+export type MultipleQuery<T extends object> = BaseMultiplePageQuery & T
+export type MultipleResult<T> = BaseMultiplePageResult & { result: T[] }

+ 0 - 0
src/api/api-types/exam.d.ts


+ 0 - 0
src/api/api-types/expert.d.ts


+ 0 - 0
src/api/api-types/forceCheck.d.ts


+ 0 - 0
src/api/api-types/marking.d.ts


+ 0 - 0
src/api/api-types/message.d.ts


+ 0 - 0
src/api/api-types/question.d.ts


+ 0 - 0
src/api/api-types/role.d.ts


+ 0 - 0
src/api/api-types/statistics.d.ts


+ 0 - 0
src/api/api-types/subject.d.ts


+ 0 - 0
src/api/api-types/system.d.ts


+ 235 - 0
src/api/api-types/user.d.ts

@@ -0,0 +1,235 @@
+import { BaseDefine, MultipleQuery, MultipleResult } from './base'
+
+/** 用户管理 & 登录 */
+export namespace User {
+  /** >>> user api <<< */
+  /** 用户登录 */
+  interface LoginResponse {
+    accessToken: string
+    activeTime: string
+    allowIP: string[]
+    denyIP: string[]
+    identity: string
+    secret: string
+    sessionId: string
+    /** 名称 */
+    name: string
+    /** 角色 */
+    role: ROLE
+    /** 用户ID */
+    id: number
+    /** 考试批次ID */
+    examId: number
+    /** 大题ID */
+    mainNumber: number
+    /** 评卷员状态 */
+    stage: STAGE
+    /** 科目代码 */
+    subjectCode: string
+    /** needRealName */
+    needRealName: boolean
+  }
+  type UserLogin = BaseDefine<
+    {
+      loginName: string
+      password: string
+    },
+    LoginResponse
+  >
+
+  /** 导出用户 */
+  type ExportUser = BaseDefine<{
+    enable?: boolean
+    role?: ROLE
+    loginName?: string
+    name?: string
+    mainNumber?: number
+    subjectCode?: string
+  }>
+
+  interface BaseUserInfo {
+    examId?: number
+    examName?: string
+    loginName: string
+    mainNumber?: number
+    markingGroupNumber?: number
+    name?: string
+    role: ROLE
+    subjectCode: string
+    enable: boolean
+  }
+
+  interface ResponseUserInfo extends BaseUserInfo {
+    id: number
+    createTime: string
+    groupId: number
+    subjectName: string
+    roleName: string
+    updateTime: string
+    updaterName: string
+  }
+
+  /** 新增修改用户信息 */
+  type SaveUserInfo = BaseDefine<
+    BaseUserInfo & {
+      id?: number
+      password: string
+    }
+  >
+
+  /** 批量创建用户 */
+  type BulkSaveUser = BaseDefine<{
+    /** 启用/禁用 */
+    enable: boolean
+    /** 账号位数 */
+    loginNameLength: number
+    /** 大题ID */
+    mainNumber?: number
+    /** 分组账号数量 */
+    markingGroupAccounts?: number
+    /** 小组号 */
+    markingGroupNumber?: number
+    /** 密码 */
+    password: string
+    /** 自定义前缀 */
+    prefix: string
+    /** 角色 */
+    role: ROLE
+    /** 起始数 */
+    start?: number
+    /** 科目代码 */
+    subjectCode: string
+  }>
+
+  /** 查询用户信息 */
+  type GetUserInfo = BaseDefine<
+    {
+      id: number
+    },
+    ResponseUserInfo
+  >
+  /** 查询当前用户信息 */
+  type GetMyUserInfo = BaseDefine<null, ResponseUserInfo>
+  /** 查询用户列表 */
+  type GetUserList = BaseDefine<
+    MultipleQuery<{
+      enable?: boolean
+      role?: ROLE
+      loginName?: string
+      name?: string
+      mainNumber?: number
+      subjectCode?: string
+    }>,
+    MultipleResult<ResponseUserInfo>
+  >
+  /** 修改用户密码 */
+  type UpdateUserPwd = BaseDefine<{ password: string }>
+  /** 修改用户姓名 */
+  type UpdateUserName = BaseDefine<{ name: string }>
+  /** 重置指定用户密码 */
+  type ResetUsersPwd = BaseDefine<{ userIds: number[] }>
+  /** 启用/禁用用户 */
+  type ToggleEnableUsers = BaseDefine<{ ids: number[]; enable: boolean }>
+
+  interface PrivilegeInfo {
+    code: string
+    id: number
+    name: string
+    nodeCode: string
+    nodeId: string
+    nodeName: string
+    parentId: number
+    parentNodeId: string
+    privilegeType: string
+    privilegeUri: string
+  }
+  /** 获取当前用户菜单 */
+  type GetUserPrivilege = BaseDefine<null, PrivilegeInfo[]>
+
+  /** 超管选择考试 */
+  type CheckExam = BaseDefine<{ examId: number }>
+
+  /** 获取评卷员Tree */
+  interface Marker {
+    createTime: string
+    enable: boolean
+    examId: number
+    examName: string
+    id: number
+    loginName: string
+    mainNumber: number
+    markingGroupNumber: number
+    name: string
+    role: string
+    roleName: string
+    subjectCode: string
+    updateTime: string
+    updaterName: string
+  }
+
+  type GetMarkerTree = BaseDefine<
+    { subjectCode: string; mainNumber?: number; name: string },
+    { markers: Marker[]; markingGroupNumber: number }[]
+  >
+
+  type GetMarkerList = BaseDefine<{ subjectCode: string; mainNumber?: number; markingGroupNumber?: number }, Marker[]>
+
+  interface UserInfo {
+    config: string
+    createTime: string
+    enable: boolean
+    examId: number
+    examName: string
+    id: number
+    loginName: string
+    mainNumber: number
+    markDayCount: number
+    markTotalCount: number
+    markingGroupNumber: number
+    name: string
+    role: string
+    roleName: string
+    subjectCode: string
+    subjectName: string
+    updateTime: string
+    updaterName: string
+  }
+
+  type GetUserGroup = BaseDefine<
+    null,
+    {
+      /** 大组长 */
+      chiffGroup: UserInfo[]
+      /** 小组长 */
+      deputyGroup: UserInfo[]
+      /** 评卷小组 */
+      markerGroup: {
+        markingGroupNumber: number
+        markers: UserInfo[]
+      }[]
+    }
+  >
+
+  /** >>> user api end <<< */
+  export interface ApiMap {
+    userLogin: UserLogin
+    userLogout: null
+    exportUser: ExportUser
+    downloadUserTemplate: null
+    saveUserInfo: SaveUserInfo
+    getUserInfo: GetUserInfo
+    getMyUserInfo: GetMyUserInfo
+    getUserList: GetUserList
+    updateUserPwd: UpdateUserPwd
+    resetUsersPwd: ResetUsersPwd
+    toggleEnableUsers: ToggleEnableUsers
+    checkExam: CheckExam
+    bulkSaveUser: BulkSaveUser
+    updateUserName: UpdateUserName
+    getUserPrivilege: GetUserPrivilege
+    getMarkerTree: GetMarkerTree
+    getMarkerList: GetMarkerList
+    /** 用户分组 - 发消息 */
+    getUserGroup: GetUserGroup
+  }
+}

+ 1649 - 0
src/api/api.d.ts

@@ -0,0 +1,1649 @@
+import type { AxiosRequestConfig } from 'axios'
+import type { BaseDefine, MultipleQuery, MultipleResult, BaseMultiplePageQuery } from '@/api/api-modules/base'
+import { User } from './api-modules/user'
+export { MultipleQuery, MultipleResult, BaseMultiplePageQuery, User }
+export type ApiMap = User.ApiMap &
+  Role.ApiMap &
+  Exam.ApiMap &
+  Subject.ApiMap &
+  Statistics.ApiMap &
+  Question.ApiMap &
+  Marking.ApiMap &
+  System.ApiMap &
+  Message.ApiMap &
+  ForceCheck.ApiMap &
+  Expert.ApiMap
+
+export type ApiKeys = keyof ApiMap
+
+export type DefineApiModule<M extends object> = {
+  [k in keyof M]: string | (AxiosRequestConfig & { url: string })
+}
+
+export type ExtractApiParams<T extends ApiKeys> = ApiMap[T] extends BaseDefine<infer P, any> ? P : never
+
+export type ExtractMultipleApiParams<T extends ApiKeys> = ExtractApiParams<T> extends MultipleQuery<infer P> ? P : never
+
+export type ExtractApiResponse<T extends ApiKeys> = ApiMap[T] extends BaseDefine<any, infer R> ? R : never
+
+export type ExtractMultipleApiResponse<T extends ApiKeys> = ExtractApiResponse<T> extends MultipleResult<infer R>
+  ? R
+  : never
+
+/** 专家卷浏览 */
+
+export namespace Expert {
+  interface SamplePaperListItem {
+    createName: string
+    createTime: string
+    fileName: string
+    filePath: string
+    id: number
+    mainNumber: number
+    paperType: string
+    score: number
+    secretNumber: number
+    type: string
+  }
+  type GetSampleList = BaseDefine<
+    MultipleQuery<{ mainNumber?: number; paperType: 'SAMPLE_A' | 'SAMPLE_B' }>,
+    MultipleResult<SamplePaperListItem>
+  >
+
+  interface RfSampleListItem {
+    createName: string
+    createTime: string
+    filePath: string
+    id: number
+    mainName: string
+    mainNumber: number
+    score: number
+    scoreLevel: string
+    secretNumber: number
+  }
+
+  type GetRfSampleList = BaseDefine<MultipleQuery<{ mainNumber?: number }>, MultipleResult<RfSampleListItem>>
+
+  type UpdateMarkScore = BaseDefine<{ id?: number; scores: number[] }>
+
+  interface StandardListItem {
+    createName: string
+    createTime: string
+    fileName: string
+    filePath: string
+    id: number
+    mainNumber: number
+    score: number
+    secretNumber: number
+    taskId: number
+  }
+
+  type GetStandardList = BaseDefine<
+    MultipleQuery<{
+      mainNumber?: number
+      dispensed: boolean | ''
+      scoreStart?: number | string
+      scoreEnd?: number | string
+    }>,
+    MultipleResult<StandardListItem>
+  >
+
+  type TransformStandardToSample = BaseDefine<{ id?: number }>
+
+  interface ExpertAssessListItem {
+    createName: string
+    createTime: string
+    filePath: string
+    forceGroupNumber: number
+    id: number
+    mainName: string
+    mainNumber: number
+    score: number
+    secretNumber: number
+  }
+
+  type GetExpertAssessList = BaseDefine<
+    MultipleQuery<{
+      mainNumber?: number
+      forceGroupNumber?: number
+    }>,
+    MultipleResult<ExpertAssessListItem>
+  >
+
+  interface ExpertPickListItem {
+    createName: string
+    createTime: string
+    filePath: string
+    forceGroupNumber: number
+    id: number
+    mainName: string
+    mainNumber: number
+    role: string
+    roleName: string
+    score: number
+    secretNumber: number
+  }
+
+  type GetExpertPickList = BaseDefine<
+    MultipleQuery<{
+      mainNumber?: number
+      forceGroupNumber?: number
+      paperType: ExpertPickType
+      role: Exclude<ROLE, 'ADMIN'>
+    }>,
+    MultipleResult<ExpertPickListItem>
+  >
+
+  type DeletePaper = BaseDefine<{ id?: number }>
+
+  export interface ApiMap {
+    /** AB培训卷 */
+    getSampleList: GetSampleList
+    /** RF卷 */
+    getRfSampleList: GetRfSampleList
+    /** 修改分数 */
+    updateMarkScore: UpdateMarkScore
+    /** 获取标准卷 */
+    getStandardList: GetStandardList
+    /** 标准卷转样卷 */
+    transformStandardToSample: TransformStandardToSample
+    /** 强制考核卷列表 */
+    getExpertAssessList: GetExpertAssessList
+    /** 专家挑选卷 */
+    getExpertPickList: GetExpertPickList
+    /** 删除 */
+    deletePaper: DeletePaper
+  }
+}
+
+/** 强制考核接口 */
+export namespace ForceCheck {
+  /** 分发考核卷 */
+  type HandOutForceCheck = BaseDefine<{
+    forceGroupNumber?: number
+    mainNumber?: number
+    markerIds: number[]
+    subjectCode: string
+  }>
+  /** 获取考核卷组 */
+  interface ForceCheckGroup {
+    createTime: string
+    creatorId: number
+    examId: number
+    forceGroupNumber: number
+    id: number
+    mainNumber: number
+    subjectCode: string
+    updateTime: string
+    updaterId: number
+  }
+  type GetForceCheckGroupList = BaseDefine<{ mainNumber?: number; subjectCode: string }, ForceCheckGroup[]>
+  /** 获取分发进度 */
+  interface HandOutProgress {
+    /** 已评量 */
+    finishCount: number
+    /** 强制卷组号 */
+    forceGroupNumber: number
+    /** 大题 */
+    mainQuestion: string
+    /** 评卷员 */
+    marker: string
+    /** 小组号 */
+    markingGroupNumber: number
+    /** 未评量 */
+    pendingCount: number
+    /** 科目 */
+    subject: string
+    /** 总量 */
+    totalCount: number
+  }
+  type GetHandOutProgressList = BaseDefine<
+    { mainNumber?: number; subjectCode: string; forceGroupNumber?: number },
+    HandOutProgress[]
+  >
+  export interface ApiMap {
+    /** 分发考核卷 */
+    handOutForceCheck: HandOutForceCheck
+    /** 获取考核卷组 */
+    getForceCheckGroupList: GetForceCheckGroupList
+    /** 获取分发进度 */
+    getHandOutProgressList: GetHandOutProgressList
+  }
+}
+
+/** 消息接口 */
+
+export namespace Message {
+  interface BaseMessageResponse {
+    id: number
+    content: string
+    receiveUserId: number
+    receiveUserName: string
+    sendTime: string
+    sendUserId: number
+    sendUserName: string
+    unReadCount: number
+  }
+  /** 历史消息 */
+  type GetMessageHistory = BaseDefine<{ sendUserId: number }, BaseMessageResponse[]>
+  /** 消息列表 */
+  type GetMessageList = BaseDefine<null, BaseMessageResponse[]>
+  /** 发送/回复消息 */
+  type SendMessage = BaseDefine<{ content: string; receiveUserIds: number[] }>
+  /** 未读消息 - 最新5条 */
+  type GetUnReadMessage = BaseDefine<null, { newCount: number; messages: BaseMessageResponse[] }>
+  /** 已读 */
+  type HandleReadMessage = BaseDefine<{ id: number }>
+  export interface ApiMap {
+    /** 历史消息 */
+    getMessageHistory: GetMessageHistory
+    /** 消息列表 */
+    getMessageList: GetMessageList
+    /** 发送/回复消息 */
+    sendMessage: SendMessage
+    /** 未读消息 - 最新5条 */
+    getUnReadMessage: GetUnReadMessage
+    /** 已读 */
+    handleReadMessage: HandleReadMessage
+  }
+}
+
+/** meta data  基础数据导入配置 */
+export namespace System {
+  /** 评卷数据导入 */
+  interface MarkingDataImport {
+    dayNumber?: number
+    file?: File
+    mainNumber?: number
+    separator: string
+    subjectCode: string
+  }
+
+  type ImportMarkingData = BaseDefine<MarkingDataImport>
+
+  /** 获取导入文件路径 */
+  type GetImportFilePath = BaseDefine<
+    {
+      filePathType: 'SLICE' | 'SAMPLE_A' | 'SAMPLE_B' | 'RF' | 'MARK_STANDARD'
+      mainNumber?: number
+      subjectCode: string
+    },
+    { rfPath: string; sampleAPath: string; sampleBPath: string; markStandardPath: string }
+  >
+
+  interface SamplePaperImport {
+    file?: File
+    /** 大题号 */
+    mainNumber?: number
+    /** 试卷类型 */
+    paperType?: SamplePaperType
+    /** 试卷密码前缀 */
+    prefix: string
+    /** 分隔符 */
+    separator: string
+    /** 科目代码 */
+    subjectCode: string
+  }
+
+  type ImportSamplePaper = BaseDefine<SamplePaperImport>
+
+  interface RfPaperImport {
+    file?: File
+    /** 试卷密码前缀 */
+    prefix: string
+    /** 大题号 */
+    mainNumber?: number
+    /** 科目代码 */
+    subjectCode: string
+    /** 分隔符 */
+    separator: string
+  }
+
+  type ImportRfPaper = BaseDefine<RfPaperImport>
+
+  interface ScoreListItem {
+    /** 作文评卷员代码 */
+    compositionMarker: string
+    /** 作文雷同标记 */
+    compositionSame: string
+    /** 作文分 */
+    compositionScore: string
+    /** 作文评卷标志 */
+    compositionTag: string
+    /** 准考证号 */
+    examNumber: string
+    id: number
+    /** 科目代码 */
+    subjectCode: string
+    /** 主观分 */
+    subjectScore: string
+    /** 翻译评卷员代码 */
+    translateMarker: string
+    /** 翻译雷同标记 */
+    translateSame: string
+    /** 翻译分 */
+    translateScore: string
+    /** 翻译评卷标志 */
+    translateTag: string
+  }
+
+  type GetCetScoreList = BaseDefine<MultipleQuery<{ subjectCode: string }>, MultipleResult<ScoreListItem>>
+
+  type ExportCetScoreList = BaseDefine<{ subjectCode: string }, null>
+
+  /** 任务设置 - 按评卷员设置 */
+  type MarkerSetCount = BaseDefine<{ markDayCount?: number; markTotalCount?: number; userId: number[] }>
+
+  /** 任务设置 - 按小组追加 */
+  type MarkGroupUpdateCount = BaseDefine<{
+    markCount?: number
+    markingGroupNumber?: number
+    mainNumber?: number
+    subjectCode?: string
+  }>
+
+  /** 任务设置-获取任务计划 */
+  interface TaskDetail {
+    finishCount: number
+    markCount: number
+    markingGroupNumber: number
+  }
+  type GetTaskDetail = BaseDefine<
+    {
+      mainNumber?: number
+      markingGroupNumber?: number
+      subjectCode?: string
+    },
+    TaskDetail[]
+  >
+  /** 任务设置-获取剩余任务 */
+  type GetUnMarkTasks = BaseDefine<
+    {
+      mainNumber?: number
+      markingGroupNumber?: number
+      subjectCode?: string
+    },
+    {
+      unmarkCount: 0
+    }
+  >
+  export interface ApiMap {
+    importMarkingData: ImportMarkingData
+    getImportFilePath: GetImportFilePath
+    importSamplePaper: ImportSamplePaper
+    importRfPaper: ImportRfPaper
+    getCetScoreList: GetCetScoreList
+    exportCetScoreList: ExportCetScoreList
+    /** 任务设置 - 按评卷员设置 */
+    markerSetCount: MarkerSetCount
+    /** 任务设置 - 按小组追加 */
+    markGroupUpdateCount: MarkGroupUpdateCount
+    /** 任务设置-获取任务计划 */
+    getTaskDetail: GetTaskDetail
+    /** 任务设置-获取剩余任务 */
+    getUnMarkTasks: GetUnMarkTasks
+  }
+}
+
+/** 评卷相关 */
+export namespace Marking {
+  /** 自定义查询 - 抽查 */
+
+  // 查询参数
+  interface CustomQuery {
+    /** 是否包含仲裁 */
+    arbitration?: boolean
+    /** 是否已抽查 */
+    checked?: boolean
+    /** 大题号 */
+    mainNumber?: number
+    /** 评卷员id */
+    markerId?: number
+    /** 小组号 */
+    markingGroupNumber?: number
+    /** 分数截止 */
+    scoreEnd?: number
+    /** 分数开始 */
+    scoreStart?: number
+    /** 科目代码 */
+    subjectCode?: string
+    /** 时间截止 */
+    timeEnd?: string
+    /** 时间开始 */
+    timeStart?: string
+    /** 密号 */
+    secretNumber?: string
+  }
+
+  /** 自定义抽查任务列表 */
+  interface CustomQueryTask {
+    customCheckNumber: number
+    examNumber: string
+    filePath: string
+    mainNumber: number
+    markTime: string
+    markerName: string
+    headerScore: number
+    markerScore: number
+    secretNumber: string
+    taskId: number
+  }
+  type GetCustomQueryTasks = BaseDefine<MultipleQuery<CustomQuery>, MultipleResult<CustomQueryTask>>
+
+  type SetCustomQueryConfig = BaseDefine<{ name: string; params: CustomQuery }>
+
+  type GetCustomQueryConfigList = BaseDefine<{ name: string }, { name: string; params: CustomQuery }[]>
+
+  /** 自定义查询 - 浏览 */
+  type ViewCustomQuery = BaseDefine<{ taskId: number }>
+
+  /** 自定义查询 - 修改卷型 */
+  type UpdateCustomPaperType = BaseDefine<{
+    taskId?: number
+    paperType: ExpertPickType
+    forceGroupNumber?: number
+  }>
+
+  /** 自定义查询 - 修改分数 */
+  type UpdateCustomPaperScore = BaseDefine<{
+    taskId?: number
+    scores: number[]
+  }>
+
+  type GetMarkingStandard = BaseDefine<null, { examId: number; mainNumber: number; subjectCode: string; url: string }>
+
+  interface Question {
+    intervalScore: number
+    subNumber: string
+    totalScore: number
+  }
+  interface Task {
+    /** 大题号 */
+    mainNumber: number
+    /** 大题名称 */
+    mainTitle: string
+    /** 小题列表 */
+    questionList: Question[]
+    /** 密号 */
+    secretNumber: string
+    /** 科目代码 */
+    subjectCode: string
+    /** 任务ID */
+    taskId: number
+    /** 任务类型 */
+    taskType: TaskType
+    /** 最小阅卷时长 */
+    minMarkTime: number
+    /** 试卷 path */
+    url: string
+  }
+
+  type GetMarkingTask = BaseDefine<null, Task[]>
+
+  /** 清除评卷任务缓存 */
+  type ClearCachedTasks = BaseDefine
+
+  interface MarkStatus {
+    markedCount: number
+    personCount: number
+    problemCount: number
+    totalCount: number
+  }
+
+  type GetMarkStatus = BaseDefine<null, MarkStatus>
+
+  interface SubmitMark {
+    markScore: number
+    markScores: number[]
+    spentTime: number
+    taskId: number
+    problem: boolean
+    problemType?: ProblemType
+  }
+
+  type SubmitMarkTask = BaseDefine<SubmitMark, MarkStatus>
+
+  interface HistoryTask {
+    mainNumber: number
+    mainTitle: number
+    markScore: number
+    markTime: string
+    markerScores: number[]
+    questionList: Question[]
+    secretNumber: string
+    subjectCode: string
+    taskId: number
+    taskType: string
+    url: string
+  }
+
+  type GetMarkHistory = BaseDefine<null, HistoryTask[]>
+
+  interface ProblemListParams {
+    mainNumber?: number
+    problemType: ProblemType | ''
+    status: '' | 'INITIAL' | 'PROCESSED'
+  }
+
+  interface ProblemListItem {
+    createTime: string
+    examNumber: string
+    filePath: string
+    headerName: number
+    headerScore: number
+    headerScores: number[]
+    id: number
+    mainNumber: number
+    mainName: string
+    markerName: string
+    markerRatio: string
+    markerScore: number
+    objectiveScore: number
+    problemSolveType: string
+    problemType: string
+    secretNumber: string
+    solveTime: string
+    taskId: number
+  }
+
+  type GetProblemHistory = BaseDefine<MultipleQuery<ProblemListParams>, MultipleResult<ProblemListItem>>
+
+  type MarkProblemPaper = BaseDefine<{ id?: number; scores: number[] }>
+
+  interface MarkScoreHistory {
+    id: number
+    markScore: number
+    markerName: string
+    scoreLevel: 'LEVEL_1' | 'LEVEL_2' | 'LEVEL_3' | 'LEVEL_4' | 'LEVEL_5'
+    markTime: string
+    secretNumber: string
+    status: string
+    taskId: number
+    url: string
+  }
+
+  type GetMarkScoreHistoryListWithTask = BaseDefine<{ taskId: number | string }, MarkScoreHistory[]>
+
+  type RejectMarkHistory = BaseDefine<{ description: string; id: number; reason: string }>
+
+  interface ArbitrationListItem {
+    chiefName: string
+    chiefRatio: string
+    chiefScore: number
+    deputyName: string
+    deputyRatio: string
+    deputyScore: number
+    filePath: string
+    groupLeaderName: string
+    groupLeaderRatio: string
+    groupLeaderScore: number
+    id: number
+    mainName: string
+    mainNumber: number
+    markerName: string
+    markerRatio: string
+    markerScore: number
+    objectiveScore: number
+    secretNumber: string
+    status: string
+    taskId: number
+    teamLeaderName: string
+    teamLeaderRatio: string
+    teamLeaderScore: number
+  }
+
+  type GetArbitrationList = BaseDefine<
+    MultipleQuery<{ mainNumber?: number; status: ArbitrationStatus | '' }>,
+    MultipleResult<ArbitrationListItem>
+  >
+
+  type MarkArbitrationPaper = BaseDefine<{ id?: number; scores: number[] }>
+
+  type ViewArbitrationPaper = BaseDefine<{ id?: number }>
+
+  interface ReMarkPaperListItem {
+    confirm: string
+    confirmScore: number
+    filePath: string
+    id: number
+    mainNumber: number
+    mainName: string
+    markerName: string
+    markerScore: number
+    reMarkTime: string
+    secretNumber: string
+    taskId: number
+  }
+
+  type GetReMarkPaperList = BaseDefine<
+    MultipleQuery<{ mainNumber?: number; confirm: boolean }>,
+    MultipleResult<ReMarkPaperListItem>
+  >
+
+  type MarkReMarkPaper = BaseDefine<{ id?: number; scores: number[] }>
+
+  type ConfirmReMarkPaper = BaseDefine<{ id?: number }>
+
+  interface TrainingRecord {
+    examId: number
+    markScore: number
+    score: number
+    secretNumber: string
+    subjectCode: string
+    taskId: number
+    taskType: string
+    url: string
+  }
+
+  type ViewTrainingRecord = BaseDefine<null, TrainingRecord[]>
+
+  interface SamplePaper {
+    description: string
+    examId: number
+    id: number
+    mainNumber: number
+    mainTitle: string
+    markTime: string
+    markerName: string
+    score: number
+    secretNumber: number
+    subjectCode: string
+    url: string
+  }
+
+  type ViewSamplePaper = BaseDefine<null, SamplePaper[]>
+
+  interface SamePaperListItem {
+    examNumber: string
+    filePath: string
+    id: number
+    mainNumber: number
+    markerName: string
+    sameExamNumber: string
+    sameFilePath: string
+    sameSecretNumber: string
+    secretNumber: number
+    status: 'INITIAL' | 'NOT_SAME' | 'SAME'
+    taskId: number
+  }
+
+  type GetSimilarPaperList = BaseDefine<
+    MultipleQuery<{
+      mainNumber?: number
+      status: 'INITIAL' | 'NOT_SAME' | 'SAME'
+    }>,
+    MultipleResult<SamePaperListItem>
+  >
+
+  type ConfirmIsSimilar = BaseDefine<{ id?: number; same: boolean }>
+
+  type ExportSimilarPaper = BaseDefine<
+    MultipleQuery<{
+      mainNumber?: number
+      status: 'INITIAL' | 'NOT_SAME' | 'SAME'
+    }>
+  >
+
+  type SubmitSimilarPaper = BaseDefine<{ sameTaskId: number | string; taskId: number | string }>
+
+  export interface ApiMap {
+    /** 自定义查询 - 抽查 */
+    getCustomQueryTasks: GetCustomQueryTasks
+    /** 自定义查询 - 保存为快捷查询 */
+    setCustomQueryConfig: SetCustomQueryConfig
+    /** 自定义查询 - 获取快捷查询列表 */
+    getCustomQueryConfigList: GetCustomQueryConfigList
+    /** 自定义查询 - 浏览 */
+    viewCustomQuery: ViewCustomQuery
+    /** 自定义查询 - 修改卷型 */
+    updateCustomPaperType: UpdateCustomPaperType
+    /** 自定义查询 - 修改分数 */
+    updateCustomPaperScore: UpdateCustomPaperScore
+    /** 查看评分标准 */
+    getMarkingStandard: GetMarkingStandard
+    /** 获取评卷任务 */
+    getMarkingTask: GetMarkingTask
+    /** 清除评卷任务缓存 */
+    clearCachedTasks: ClearCachedTasks
+    /** 获取评卷进度 */
+    getMarkStatus: GetMarkStatus
+    /** 提交评卷任务 */
+    submitMarkTask: SubmitMarkTask
+    /** 获取回评历史 */
+    getMarkHistory: GetMarkHistory
+    /** 问题卷列表 */
+    getProblemHistory: GetProblemHistory
+    /** 问题卷打分 */
+    markProblemPaper: MarkProblemPaper
+    /** 通过taskId 查询给分记录 */
+    getMarkScoreHistoryListWithTask: GetMarkScoreHistoryListWithTask
+    /** 打回 */
+    rejectMarkHistory: RejectMarkHistory
+    /** 仲裁卷列表 */
+    getArbitrationList: GetArbitrationList
+    /** 仲裁卷打分 */
+    markArbitrationPaper: MarkArbitrationPaper
+    /** 仲裁卷浏览 */
+    viewArbitrationPaper: ViewArbitrationPaper
+    /** 重评卷列表 */
+    getReMarkPaperList: GetReMarkPaperList
+    /** 重评卷打分 */
+    markReMarkPaper: MarkReMarkPaper
+    /** 重评卷确认 */
+    confirmReMarkPaper: ConfirmReMarkPaper
+    /** 查看培训记录 */
+    viewTrainingRecord: ViewTrainingRecord
+    /** 查看样卷 */
+    viewSamplePaper: ViewSamplePaper
+    /** 雷同卷列表 */
+    getSimilarPaperList: GetSimilarPaperList
+    /** 是否雷同 */
+    confirmIsSimilar: ConfirmIsSimilar
+    /** 导出雷同 */
+    exportSimilarPaper: ExportSimilarPaper
+    /** 提交雷同卷 */
+    submitSimilarPaper: SubmitSimilarPaper
+  }
+}
+
+/** 题目管理 */
+export namespace Question {
+  /** 删除小题 */
+  type DeleteSubQuestion = BaseDefine<{
+    id: number
+  }>
+
+  /** 编辑小题 */
+  type EditSubQuestion = BaseDefine<{
+    id?: number
+    /** 小题间隔分 */
+    intervalScore?: number
+  }>
+
+  /** 小题列表信息 */
+  interface SubQuestionInfo {
+    id: number
+    intervalScore: number
+    mainNumber: number
+    mainTitle: string
+    subNumber: number
+    totalScore: number
+  }
+
+  /** 获取小题列表 */
+  type GetSubQuestionList = BaseDefine<{ subjectCode: string }, SubQuestionInfo[]>
+
+  interface MainQuestionListItem {
+    createTime: string
+    creatorId: number
+    examId: number
+    groupNumber: number
+    id: number
+    levelRange: number[]
+    mainNumber: number
+    minMarkTime: number
+    remarkNumber: number
+    remarkType: string
+    standardRate: number
+    selfRate: number
+    subjectCode: string
+    systemRate: number
+    title: string
+    totalScore: number
+    updateTime: string
+    updaterId: number
+  }
+
+  /** 获取大题列表 */
+  type GetMainQuestionList = BaseDefine<{ subjectCode: string }, MainQuestionListItem[]>
+
+  interface SubQuestionStruct {
+    intervalScore: number
+    score: number
+    subNumber: number
+    totalScore: number
+  }
+  /** 获取大题评卷结构 */
+  type GetQuestionStruct = BaseDefine<
+    { mainNumber?: number },
+    { mainNumber: number; mainTitle: string; questionList: SubQuestionStruct[] }
+  >
+
+  /** 大题设置 (新增/编辑) */
+  interface MainQuestionMeta {
+    /** 大题号 */
+    mainNumber?: number
+    /** 大题名称 */
+    mainTitle: string
+    /** 分组数量 */
+    groupNumber?: number
+    /** 间隔分 */
+    intervalScore?: number
+    /** 最小阅卷时间 */
+    minMarkTime?: number
+    /** 小题数量 */
+    questionCount?: number
+    /** 小题满分 */
+    questionScore?: number
+    /** 回评数量 */
+    remarkNumber?: number
+    /** 标准卷频度 */
+    standardRate?: number
+    /** 自查卷频度 */
+    selfRate?: number
+    /** 系统抽查频度 */
+    systemRate?: number
+    /** 起始题号 */
+    startNumber: number
+    /** 档次比例 */
+    levelRange: number[]
+    /** 回评方式,可用值:TIME,QUANTITY */
+    remarkType: RemarkType
+    /** 科目代码 */
+    subjectCode: string
+    /** 成绩表对应题目类型,可用值:WRITING,TRANSLATION */
+    category?: QuestionCategory
+  }
+
+  /** 新增大题 */
+  type AddMainQuestion = BaseDefine<MainQuestionMeta>
+
+  /** 大题设置 */
+  type EditMainQuestion = BaseDefine<MainQuestionMeta>
+
+  /** 获取大题信息 */
+  type GetMainQuestionInfo = BaseDefine<
+    { mainNumber: number; subjectCode: string },
+    MainQuestionMeta & { examId: number }
+  >
+
+  export interface ApiMap {
+    deleteSubQuestion: DeleteSubQuestion
+    editSubQuestion: EditSubQuestion
+    getSubQuestionList: GetSubQuestionList
+    addMainQuestion: AddMainQuestion
+    editMainQuestion: EditMainQuestion
+    getMainQuestionInfo: GetMainQuestionInfo
+    getMainQuestionList: GetMainQuestionList
+    /** 获取大题评卷结构 */
+    getQuestionStruct: GetQuestionStruct
+  }
+}
+
+/** 科目管理 */
+export namespace Subject {
+  /** 删除科目 */
+  type DeleteSubject = BaseDefine<{ id: number }>
+
+  interface BaseSubjectInfo {
+    /** 科目代码 */
+    code: string
+    /** 科目名称 */
+    name: string
+    /** 启用/禁用 */
+    enable: boolean
+  }
+
+  interface SubjectInfo extends BaseSubjectInfo {
+    /** 科目ID */
+    id: number
+    /** 考试ID */
+    examId: number
+    /** 考试名称 */
+    examName: string
+    /** 客观分 */
+    objectiveScore: number
+    /** 主观分 */
+    subjectiveScore: number
+    /** 试卷总分 */
+    totalScore: number
+  }
+
+  /** 获取科目信息 */
+  type GetSubjectInfo = BaseDefine<{ id: number }, SubjectInfo>
+
+  /** 查询科目列表 */
+  type GetSubjectList = BaseDefine<
+    MultipleQuery<{
+      /** 科目代码 */
+      code?: string
+      /** 科目名称 */
+      name?: string
+      /** 启用/禁用 */
+      enable?: boolean
+    }>,
+    MultipleResult<SubjectInfo>
+  >
+  /** 新增/修改科目 */
+  type SaveSubjectInfo = BaseDefine<BaseSubjectInfo & { id?: number }>
+
+  /** 启用/禁用科目 */
+  type ToggleEnableSubject = BaseDefine<{ ids: number[]; enable: boolean }>
+  export interface ApiMap {
+    /** 删除考试 */
+    deleteSubject: DeleteSubject
+    /** 获取考试信息 */
+    getSubjectInfo: GetSubjectInfo
+    /** 查询考试列表 */
+    getSubjectList: GetSubjectList
+    /** 新增/修改考试 */
+    saveSubjectInfo: SaveSubjectInfo
+    /** 启用/禁用科目 */
+    toggleEnableSubject: ToggleEnableSubject
+  }
+}
+
+/** 考试管理 */
+export namespace Exam {
+  /** 删除考试 */
+  type DeleteExam = BaseDefine<{ id: number }>
+
+  /** 获取考试信息 */
+  type GetExamInfo = BaseDefine<{ id: number }, Required<BaseExamInfo>>
+
+  /** 查询考试列表 */
+  type GetExamList = BaseDefine<
+    MultipleQuery<{
+      /** 考试状态 */
+      enable?: boolean
+      /** 考试名称 */
+      name?: string
+    }>,
+    MultipleResult<{
+      /** 考试状态 */
+      enable: boolean
+      /** 考试ID */
+      id: number
+      /** 考试名称 */
+      name: string
+      /** 更新时间 */
+      updateTime: string
+    }>
+  >
+  interface BaseExamInfo {
+    id?: number
+    /** 问题卷允许打回 */
+    doubtReject: boolean
+    /** 评卷模式 */
+    markingMode: MarkMode
+    /** 在线评卷时长 */
+    maxMarkingDuration: number
+    /** 自动回收任务(分钟) */
+    maxTaskRecover: number
+    /** 考试名称 */
+    name: string
+    /** 抽查卷允许打回 */
+    spotCheckReject: boolean
+    /** 用户姓名收集 */
+    userNameCollect: boolean
+    enable: boolean
+  }
+
+  /** 新增/修改考试 */
+  type SaveExamInfo = BaseDefine<Partial<BaseExamInfo>>
+
+  /** 启用/禁用考试 */
+  type ToggleEnableExam = BaseDefine<{ ids: number[]; enable: boolean }>
+  export interface ApiMap {
+    /** 删除考试 */
+    deleteExam: DeleteExam
+    /** 获取考试信息 */
+    getExamInfo: GetExamInfo
+    /** 查询考试列表 */
+    getExamList: GetExamList
+    /** 新增/修改考试 */
+    saveExamInfo: SaveExamInfo
+    /** 启用/禁用考试 */
+    toggleEnableExam: ToggleEnableExam
+  }
+}
+
+/** 角色管理 */
+export namespace Role {
+  /** role api  */
+  interface RawRole {
+    code: ROLE
+    roleName: string
+    updateTime: string
+    updaterName: string
+  }
+
+  type GetRoleList = BaseDefine<{ role?: ROLE }, RawRole[]>
+  type GetRolePrivilege = BaseDefine<
+    { role: ROLE },
+    {
+      code: string
+      hasPrivilege: boolean
+      id: number
+      name: string
+      nodeCode: string
+      nodeId: number
+      nodeName: string
+      parentId: number
+      parentNodeId: number
+    }[]
+  >
+
+  type SetRolePrivilege = BaseDefine<{ role: ROLE; privilegeIds: number[] }>
+
+  /** role api end */
+
+  export interface ApiMap {
+    getRoleList: GetRoleList
+    getRolePrivilege: GetRolePrivilege
+    setRolePrivilege: SetRolePrivilege
+  }
+}
+
+/** 监控分析 */
+export namespace Statistics {
+  interface BaseFilterOption {
+    subjectCode?: string
+    questionMainNumber?: number
+    markingGroupNumbers?: number[]
+  }
+
+  /** 质量统计-自查一致性分析 */
+  interface SelfCheckAnalysisReq {
+    /** 结束时间,格式:yyyyMMddHHmmss */
+    endTime: string
+    /** 小组号 */
+    markingGroupNumber?: number
+    /** 大题号 */
+    questionMainNumber?: number
+    /** 开始时间,格式:yyyyMMddHHmmss */
+    startTime: string
+    /** 科目代码 */
+    subjectCode: string
+  }
+  interface SelfCheckAnalysisResponse {
+    /** 平均离差 */
+    avgDiff: number
+    /** 自查份数 */
+    checkCount: number
+    /** 评卷员ID */
+    markerId: number
+    /** 评卷员名称 */
+    markerName: string
+  }
+
+  type SelfCheckAnalysis = BaseDefine<SelfCheckAnalysisReq, SelfCheckAnalysisResponse[]>
+
+  interface elfCheckAnalysisDiffListItemPaper {
+    diff: number
+    lastMarkScore: number
+    markScore: number
+    markTime: string
+    secretNumber: string
+    taskId: number
+  }
+
+  interface SelfCheckAnalysisDiffListItem {
+    diff: number
+    papers: elfCheckAnalysisDiffListItemPaper[]
+  }
+
+  type SelfCheckAnalysisDiffList = BaseDefine<
+    {
+      markerId?: number
+      questionMainNumber?: number
+      subjectCode: string
+    },
+    SelfCheckAnalysisDiffListItem[]
+  >
+
+  /** 质量分析 - 自查数据详情 */
+  interface SelfCheckDataDetail {
+    diff: number
+    filePath: string
+    mainName: string
+    mainNumber: number
+    markTime: string
+    markerName: string
+    markerScore: number
+    secretNumber: string
+    selfScore: number
+    taskId: number
+  }
+  type GetSelfCheckDataDetail = BaseDefine<
+    {
+      subjectCode: string
+      mainNumber: number | string
+      markingGroupNumber: number | string
+      startTime: string
+      endTime: string
+    },
+    SelfCheckDataDetail[]
+  >
+
+  /** 质量统计-自查数据打分 */
+  type MarkSelfCheckData = BaseDefine<{ taskId?: number; scores: number[] }>
+
+  /** 质量统计-自查数据打回 */
+  type RejectSelfCheckData = BaseDefine<{ id?: number; reason: string; description: string }>
+
+  /** 质量分析- 抽查情况统计 */
+  interface StatisticCheckInfo {
+    customCheckCount: number
+    customCheckReScoreCount: number
+    markerId: number
+    markerName: string
+    questionMainName: string
+    questionMainNumber: number
+    rejectCount: number
+    sysCheckCount: number
+    sysCheckReScoreCount: number
+  }
+
+  type StatisticCheckOverview = BaseDefine<
+    {
+      questionMainNumber?: number
+      subjectCode: string
+      markingGroupLeaderId?: number
+    },
+    StatisticCheckInfo[]
+  >
+  /** 质量统计-主观题校验列表 */
+  interface SubjectiveListItem {
+    filePath: string
+    headerName: string
+    headerScore: number
+    mainName: string
+    mainNumber: number
+    markerScore: number
+    secretNumber: number
+    status: string
+    taskId: number
+    updateTime: string
+  }
+
+  type GetSubjectiveCheckList = BaseDefine<
+    MultipleQuery<{
+      subjectCode: string
+      mainNumber?: number
+      checked?: boolean
+      rule: 'RULE1' | 'RULE2' | 'RULE3' | 'RULE4'
+    }>,
+    MultipleResult<SubjectiveListItem>
+  >
+
+  type SubjectiveCheckMark = BaseDefine<{ taskId?: number; scores: number[] }>
+
+  type SubjectiveCheckConfirm = BaseDefine<{ taskId?: number }>
+
+  /** 决策分析-评卷进度统计(整体) */
+  interface MarkProgressResponse {
+    /** 已完成数 */
+    finishCount: number
+    /** 完成比率 */
+    finishRate: number
+    /** 大题名称 */
+    questionMainName: string
+    /** 大题号 */
+    questionMainNumber: number
+    /** 预计耗时(秒) */
+    takeTime: number
+    /** 试卷总量 */
+    totalPaper: number
+  }
+
+  type GetMarkProgress = BaseDefine<{ subjectCode: string }, MarkProgressResponse[]>
+
+  /** 决策分析-评卷进度统计(按小组) */
+  interface MarkProgressByGroup {
+    dayFinishCount: number
+    dayFinishRate: number
+    finishCount: number
+    finishRate: number
+    markingGroupNumber: number
+  }
+
+  type GetMarkProgressByGroup = BaseDefine<{ subjectCode: string; questionMainNumber?: number }, MarkProgressByGroup[]>
+
+  /** 决策分析-评卷进度统计(按评卷员) */
+  interface MarkProgressByMarker {
+    dayFinishCounts: { count: number; date: string }[]
+    markerId: number
+    markerName: string
+    markingGroupNumber: number
+    totalFinishCount: number
+  }
+  type GetMarkProgressByMarker = BaseDefine<
+    { subjectCode: string; questionMainNumber?: number; markingGroupNumbers?: number },
+    MarkProgressByMarker[]
+  >
+
+  type ExportMarkProgressByMarker = BaseDefine<{
+    subjectCode: string
+    questionMainNumber?: number
+    markingGroupNumber?: number
+  }>
+
+  /** 科目进度收尾 */
+  interface SubjectProgressEndInfo {
+    arbitrationPaperRate: number
+    checkPaperCount: number
+    checkPaperRate: number
+    finishCount: number
+    finishRate: number
+    questionMainName: string
+    questionMainNumber: number
+    subjectiveUnVerifyPaperCount: number
+    todoArbitrationPaperCount: number
+    todoProblemPaperCount: number
+    todoSamePaperCount: number
+    totalPaper: number
+  }
+
+  type SubjectProgressEnd = BaseDefine<{ subjectCode: string }, SubjectProgressEndInfo[]>
+
+  interface BaseParams {
+    subjectCode: string
+    questionMainNumber?: number
+    markingGroupNumber?: number
+  }
+
+  /** 质量统计-收尾检查-评卷员未评卷列表(分页) */
+
+  interface UnMarkPaper {
+    markerId: number
+    markerName: string
+    questionMainName: string
+    questionMainNumber: number
+    secretNumber: string
+    taskId: number
+  }
+  type UnMarkPaperList = BaseDefine<MultipleQuery<BaseParams>, MultipleResult<UnMarkPaper>>
+  /** 质量统计-收尾检查-未处理雷同卷列表 */
+  interface UnProcessSimilar {
+    questionMainName: string
+    questionMainNumber: number
+    sameSecretNumber: string
+    secretNumber: string
+  }
+  type UnProcessSimilarList = BaseDefine<BaseParams, UnProcessSimilar[]>
+  /** 质量统计-收尾检查-未处理问题卷列表 */
+  interface UnProcessProblem {
+    questionMainName: string
+    questionMainNumber: number
+    secretNumber: string
+  }
+  type UnProcessProblemList = BaseDefine<BaseParams, UnProcessProblem[]>
+
+  type ChangeTaskMarker = BaseDefine<{ loginName: string; taskId?: number }>
+
+  /** 小组监控 */
+  interface GroupMonitor {
+    /** 已浏览自定义抽查卷数 */
+    customCheckCount: number
+    /** 已浏览问题卷数 */
+    problemCount: number
+    /** 已浏览系统抽查卷数 */
+    sysCheckCount: number
+    /** 组长 */
+    markingGroupLeader: string
+    /** 组长ID */
+    markingGroupLeaderId: string
+    /** 小组号 */
+    markingGroupNumber: number
+    /** 已给分自定义抽查卷数 */
+    customCheckReScoreCount: number
+    /** 已给分问题卷数 */
+    problemReScoreCount: number
+    /** 已给分系统抽查卷数 */
+    sysCheckReScoreCount: number
+    /** 已浏览试卷总数 */
+    totalCount: number
+    /** 已给分试卷总数 */
+    totalReScoreCount: number
+  }
+  type GetGroupMonitor = BaseDefine<BaseFilterOption, GroupMonitor[]>
+
+  /** 小组监控 - 抽查详情 */
+  interface GroupMonitorDetail {
+    filePath: string
+    headerRatio: string
+    headerScore: number
+    mainName: string
+    mainNumber: number
+    markTime: string
+    markerName: string
+    markerScore: number
+    objectiveScore: number
+    scoreLevel: string
+    secretNumber: string
+    taskId: number
+  }
+
+  type GetGroupMonitorDetail = BaseDefine<
+    MultipleQuery<{ operateType: 'VIEW' | 'MARK'; headerId: string | number }>,
+    MultipleResult<GroupMonitorDetail>
+  >
+
+  type MarkMonitorDetailTask = BaseDefine<{ taskId?: number; scores: number[] }>
+
+  /** 决策分析- 统计 */
+  interface StatisticItem {
+    markerId: number
+    markerName: string
+    value: number
+  }
+
+  type GetStatistics = BaseDefine<BaseFilterOption, Record<string, StatisticItem[]>>
+
+  /** 决策分析-监控统计(按小组) */
+  interface GetStatisticsByGroupParams {
+    endTime?: string
+    hasJudge?: boolean
+    markerId?: number
+    markingGroupNumbers?: number[]
+    questionMainNumber?: number
+    startTime?: string
+    subjectCode: string
+  }
+
+  interface GetStatisticsByGroupResponseItem {
+    /** 平均分 */
+    avg: number
+    /** 抽查改正量 */
+    checkCorrectCount: number
+    /** 抽查量 */
+    checkCount: number
+    /** 综合指数 */
+    integration: number
+    /** 评卷员ID */
+    markerId: number
+    /** 评卷员名称 */
+    markerName: string
+    /** 小组号 */
+    markingGroupNumber: number
+    /** 评卷份数 */
+    markingPaperCount: number
+    /** 评卷速度(n秒每个) */
+    markingRate: number
+    /** 评卷状态 */
+    markingStatus: string
+    /** 平均客主比 */
+    objSubAvgRate: number
+    /** 客主比(近N分钟) */
+    objSubRate: number
+    /** 客观平均分 */
+    objectiveAvg: number
+    /** 客观标准差 */
+    objectiveStd: number
+    /** 客观0分量 */
+    objectiveZero: number
+    /** 是否在线 */
+    online: boolean
+    /** 重评待确认量 */
+    reMarkConfirmCount: number
+    /** 重评量 */
+    reMarkCount: number
+    /** 最低分(近N分钟) */
+    scoreLow: number
+    /** 最高分(近N分钟) */
+    scoreTop: number
+    /** 方差 */
+    sd: number
+    /** 标准差 */
+    std: number
+    /** 相关系数 */
+    xyRelate: number
+    /** 评卷员明细统计列表 */
+    markerDetails: GetStatisticsByGroupResponseItem[] | null
+  }
+
+  type GetStatisticsByGroup = BaseDefine<GetStatisticsByGroupParams, GetStatisticsByGroupResponseItem[]>
+
+  /** 决策分析-监控统计导出(按小组) */
+  type ExportStatisticsByGroup = BaseDefine<GetStatisticsByGroupParams>
+
+  /** 培训监控 */
+  interface TrainingMonitorParams {
+    subjectCode: string
+    mainNumber?: number
+    markingGroupNumber?: number
+    markStage: 'SAMPLE_A' | 'SAMPLE_B' | 'FORCE'
+    forceGroupNumber?: number
+  }
+  interface TrainingMonitorResponse {
+    /** 平均分 */
+    avg: number
+    /** 差异份数 */
+    diffCount: number
+    forceGroupMarkerId: number
+    /** 评卷员ID */
+    markerId: number
+    /** 评卷员名称 */
+    markerName: string
+    /** 打分列表 */
+    scoreList: number[]
+    /** 状态 */
+    stage: 'SAMPLE_A' | 'SAMPLE_B' | 'FORCE'
+    /** 状态名称 */
+    status: string
+    /** 标准差 */
+    std: number
+    /** 相关系数 */
+    xyRelate: number
+  }
+  type GetTrainingMonitor = BaseDefine<TrainingMonitorParams, { data: TrainingMonitorResponse[]; header: number[] }>
+
+  interface MonitorDetail {
+    fileName: string
+    filePath: string
+    forceGroupNumber: number
+    group: string
+    mainNumber: number
+    markTime: string
+    markerName: string
+    markScore: number
+    score: number
+    secretNumber: string
+    taskId: number
+  }
+
+  /**培训监控 - 培训卷调卷详情 */
+  type GetTrainingMonitorDetail = BaseDefine<{ markerId: string; taskType: SamplePaperType }, MonitorDetail[]>
+
+  /**培训监控 - 强制考核卷调卷详情 */
+  type GetAssessMonitorDetail = BaseDefine<{ forceGroupMarkerId: string }, MonitorDetail[]>
+
+  /**培训监控 - 强制考核卷审核 */
+  type PutAssessMonitorPass = BaseDefine<{ forceGroupMarkerIds: number[]; pass: boolean }>
+
+  /**培训监控 - 培训卷审核 */
+  type PutSampleMonitorPass = BaseDefine<{ markerIds: number[]; markStage: SamplePaperType; pass: boolean }>
+
+  /** 个人统计 */
+  interface PersonalStatistic {
+    avg: number
+    markerId: number
+    markerName: string
+    markingPaperCount: number
+    markingRate: number
+    questionMainName: string
+    questionMainNumber: number
+  }
+  type GetPersonalStatistic = BaseDefine<{ startTime: string; endTime: string; markerId?: number }, PersonalStatistic>
+
+  /** 提取阅卷明细 */
+  interface PersonalMarkDetail {
+    filePath: string
+    mainName: string
+    mainNumber: number
+    markTime: string
+    markerName: string
+    markerRatio: string
+    markerScore: number
+    objectiveScore: number
+    secretNumber: string
+    status: string
+    taskId: number
+  }
+
+  type GetPersonalMarkDetail = BaseDefine<
+    MultipleQuery<{
+      markerId?: number | string
+      score?: number | string
+    }>,
+    MultipleResult<PersonalMarkDetail>
+  >
+
+  type UpdatePersonalMarkDetailScore = BaseDefine<{ taskId?: number; scores: number[] }>
+
+  interface SystemSpotListItem {
+    examNumber: string
+    filePath: string
+    id: number
+    mainNumber: number
+    markScore: number
+    markTime: string
+    markerName: string
+    secretNumber: number
+    status: string
+    taskId: number
+  }
+
+  type GetSystemSpotList = BaseDefine<
+    MultipleQuery<{
+      level: 'LEVEL_1' | 'LEVEL_2' | 'LEVEL_3' | 'LEVEL_4' | 'LEVEL_5' | ''
+      status: 'INITIAL' | 'VIEWED' | 'GRADED' | 'REJECT'
+      mainNumber?: number
+    }>,
+    MultipleResult<SystemSpotListItem>
+  >
+
+  /** 系统抽查卷打分 */
+  type MarkSystemSpotPaper = BaseDefine<{ id?: number; scores: number[] }>
+
+  /** 系统抽查卷打回 */
+  type RejectSystemSpotPaper = BaseDefine<{ description: string; id: number; reason: string }>
+
+  /** 系统抽查卷浏览 */
+  type ViewSystemSpotPaper = BaseDefine<{ id?: number }>
+
+  interface StatisticByGroup {
+    subjectCode: string
+    questionMainNumber?: number
+    markingGroupNumber?: number
+    startTime: string
+    endTime: string
+  }
+
+  interface StatisticByMarker {
+    markerId?: number
+    endTime: string
+    startTime: string
+  }
+
+  interface StatisticInfo {
+    count: number
+    rate: number
+    scoreEnd: number
+    scoreStart: number
+  }
+
+  interface StatisticResult {
+    segmentsByAll: StatisticInfo[]
+    segmentsByGroup: StatisticInfo[]
+    segmentsByUser: StatisticInfo[]
+  }
+
+  /** 决策分析-监控统计-客观题分数分布(按小组) */
+  type GetStatisticObjectiveByGroup = BaseDefine<StatisticByGroup, StatisticResult>
+
+  /** 决策分析-监控统计-客观题分数分布(按评卷员) */
+  type GetStatisticObjectiveByMarker = BaseDefine<StatisticByMarker, StatisticResult>
+
+  /** 决策分析-监控统计-主观题分数分布(按小组) */
+  type GetStatisticSubjectiveByGroup = BaseDefine<StatisticByGroup, StatisticResult>
+
+  /** 决策分析-监控统计-主观题分数分布(按评卷员) */
+  type GetStatisticSubjectiveByMarker = BaseDefine<StatisticByMarker, StatisticResult>
+
+  interface ApiMap {
+    /** 质量统计-自查一致性分析 */
+    selfCheckAnalysis: SelfCheckAnalysis
+    /** 质量统计-自查一致性分析-离差列表 */
+    selfCheckAnalysisDiffList: SelfCheckAnalysisDiffList
+    /** 质量统计- 自查数据详情 */
+    getSelfCheckDataDetail: GetSelfCheckDataDetail
+    /** 质量统计-自查数据打分 */
+    markSelfCheckData: MarkSelfCheckData
+    /** 质量统计-自查数据打回 */
+    rejectSelfCheckData: RejectSelfCheckData
+    /** 质量统计-抽查情况统计 */
+    statisticCheckOverview: StatisticCheckOverview
+    /** 质量统计-主观题校验 */
+    getSubjectiveCheckList: GetSubjectiveCheckList
+    /** 质量统计-主观题校验打分 */
+    subjectiveCheckMark: SubjectiveCheckMark
+    /** 质量统计-主观题校验确认 */
+    subjectiveCheckConfirm: SubjectiveCheckConfirm
+    /** 决策分析-评卷进度统计(整体) */
+    getMarkProgress: GetMarkProgress
+    /** 决策分析-评卷进度统计(按小组) */
+    getMarkProgressByGroup: GetMarkProgressByGroup
+    /** 决策分析-评卷进度统计(按评卷员) */
+    getMarkProgressByMarker: GetMarkProgressByMarker
+    /** 决策分析-评卷进度统计导出(按评卷员) */
+    exportMarkProgressByMarker: ExportMarkProgressByMarker
+    /** 质量统计-科目进度收尾 */
+    subjectProgressEnd: SubjectProgressEnd
+    /** 质量统计-收尾检查-评卷员未评卷列表(分页) */
+    unMarkPaperList: UnMarkPaperList
+    /** 质量统计-收尾检查-未处理雷同卷列表 */
+    unProcessSimilarList: UnProcessSimilarList
+    /** 质量统计-收尾检查-未处理问题卷列表 */
+    unProcessProblemList: UnProcessProblemList
+    /** 任务指定新评卷员 */
+    changeTaskMarker: ChangeTaskMarker
+    /** 决策分析-小组监控 */
+    getGroupMonitor: GetGroupMonitor
+    /** 决策分析-小组监控-抽查详情 */
+    getGroupMonitorDetail: GetGroupMonitorDetail
+    /** 决策分析-小组监控-抽查详情给分 */
+    markMonitorDetailTask: MarkMonitorDetailTask
+    /** 决策分析-监控统计(整体) */
+    getStatistics: GetStatistics
+
+    /** 决策分析-监控统计(按小组) */
+    getStatisticsByGroup: GetStatisticsByGroup
+    /** 决策分析-监控统计导出(按小组) */
+    exportStatisticsByGroup: ExportStatisticsByGroup
+    /** 决策分析-监控统计客观题&主观题分数分布 */
+    /**培训监控 */
+    getTrainingMonitor: GetTrainingMonitor
+    /**培训监控 - 培训卷调卷详情 */
+    getTrainingMonitorDetail: GetTrainingMonitorDetail
+    /**培训监控 - 强制考核卷调卷详情 */
+    getAssessMonitorDetail: GetAssessMonitorDetail
+    /**培训监控 - 强制考核卷审核 */
+    putAssessMonitorPass: PutAssessMonitorPass
+    /**培训监控 - 培训卷审核 */
+    putSampleMonitorPass: PutSampleMonitorPass
+    /** 个人统计 */
+    getPersonalStatistic: GetPersonalStatistic
+    /** 提取阅卷明细 */
+    getPersonalMarkDetail: GetPersonalMarkDetail
+    /** 提取阅卷明细 - 给分 */
+    updatePersonalMarkDetailScore: UpdatePersonalMarkDetailScore
+    /** 系统抽查卷 */
+    getSystemSpotList: GetSystemSpotList
+    /** 系统抽查卷打分 */
+    markSystemSpotPaper: MarkSystemSpotPaper
+    /** 系统抽查卷打回 */
+    rejectSystemSpotPaper: RejectSystemSpotPaper
+    /** 系统抽查卷浏览 */
+    viewSystemSpotPaper: ViewSystemSpotPaper
+    /** 决策分析-监控统计-客观题分数分布(按小组) */
+    getStatisticObjectiveByGroup: GetStatisticObjectiveByGroup
+    /** 决策分析-监控统计-客观题分数分布(按评卷员) */
+    getStatisticObjectiveByMarker: GetStatisticObjectiveByMarker
+    /** 决策分析-监控统计-主观题分数分布(按小组) */
+    getStatisticSubjectiveByGroup: GetStatisticSubjectiveByGroup
+    /** 决策分析-监控统计-主观题分数分布(按评卷员) */
+    getStatisticSubjectiveByMarker: GetStatisticSubjectiveByMarker
+  }
+}