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:
2026-07-02 22:35:35 +00:00
co-authored by Claude Opus 4.8
parent d47e0205c9
commit f4be133069
6 changed files with 195 additions and 1 deletions
+7
View File
@@ -14,6 +14,7 @@ import type {
AutoMapJobStatus,
AutoMapResponse,
BankResponse,
CorpusResponse,
BatchQueueResponse,
BatchResultsResponse,
CreateBatchPayload,
@@ -303,6 +304,12 @@ export const examRepository = {
return res.data;
},
async getCorpus(): Promise<CorpusResponse> {
const headers = await authHeaders();
const res = await axios.get<CorpusResponse>(`${EXAM_BASE}/corpus`, { headers });
return res.data;
},
async getBank(params: { specRef?: string; subject?: string } = {}): Promise<BankResponse> {
const headers = await authHeaders();
const res = await axios.get<BankResponse>(`${EXAM_BASE}/bank`, {