Exam bank: corpus coverage dashboard (/exam-marker/corpus)
New "Exam bank" page displaying the state of the collected past-paper corpus: per-specification coverage of question papers / mark schemes / examiner reports, with global + filtered rollups, board/level/subject filters, a "sciences only" default, and an expandable per-session table (QP/MS/ER present ✓/–). Reads GET /api/exam/corpus. Dashboard gets an "Exam bank" entry point. examRepository.getCorpus + corpus types. tsc clean on the changed files. Co-Authored-By: Claude Opus 4.8 <[email protected]>
This commit is contained in:
@@ -371,3 +371,28 @@ export interface CreateCustomPaperResult {
|
||||
n_questions: number;
|
||||
n_response_areas: number;
|
||||
}
|
||||
|
||||
// ── Exam-bank corpus coverage (state of the collected bank) ───────────────────
|
||||
export type CorpusDocType = 'QP' | 'MS' | 'ER';
|
||||
export interface CorpusPaper {
|
||||
paper_code: string | null;
|
||||
session: string | null;
|
||||
tier: string | null;
|
||||
docs: Partial<Record<CorpusDocType, boolean>>;
|
||||
exam_codes: Partial<Record<CorpusDocType, string>>;
|
||||
}
|
||||
export interface CorpusSpec {
|
||||
spec_code: string;
|
||||
subject: string;
|
||||
level: string;
|
||||
board: string;
|
||||
first_teach: string | null;
|
||||
n_papers: number;
|
||||
counts: Record<CorpusDocType, number>;
|
||||
papers: CorpusPaper[];
|
||||
}
|
||||
export interface CorpusBoard { board: string; n_specs: number; specs: CorpusSpec[] }
|
||||
export interface CorpusResponse {
|
||||
totals: { specs: number; papers: number; sessions: number; QP: number; MS: number; ER: number };
|
||||
boards: CorpusBoard[];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user