Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

05 — Screen Inventory (Results Module)

Every screen maps 1:1 to a real endpoint or DTO. No screen is invented; five screens cover the module. (forward-looking) = client screens against the implemented API.


#ScreenRoute (client)Primary endpointSource
S1Marks Entry Grid (per exam-subject)/examinations/:examId/subjects/:examSubjectId/marksGET /api/v1/results/exam-subject/:examSubjectId + POST …/marksresult.controller.ts:21-31
S2Exam-Subject Detail/examinations/:examId/subjects/:examSubjectIdGET /api/v1/examinations/:id/subjects (+ entry counts via S1)examination.controller.ts:51-53, examination-subject.schema.ts:8-31
S3Student Results List/students/:studentId/resultsGET /api/v1/results/student/:studentIdresult.controller.ts:16-20
S4Report Card View/students/:studentId/results/:examIdGET /api/v1/results/report-card/:studentId/:examIdresult.controller.ts:32-37
S5Grade Summary (per exam, per class — completion overview)/examinations/:examId/gradesDerived: GET /api/v1/examinations/:id/subjects → per-subject resultsexamination.controller.ts:51-53, result.controller.ts:21-25

Screen purposes

S1 — Marks Entry Grid

  • Data: all ExaminationResult rows for one exam-subject (examination-result.repository.ts:20-24), one editable row per student: marksObtained, grade (client-supplied string), remarks (optional).
  • Writes: per-row POST /api/v1/results/exam-subject/:examSubjectId/marks (idempotent upsert, examination.service.ts:147-175).
  • Context header: subject date, startTime/endTime, maximumMarks, passingMarks (examination-subject.schema.ts:18-31).

S2 — Exam-Subject Detail

  • Data: one ExaminationSubject row; entry coverage (entered/total students — computed client-side from S1 data).
  • Actions: navigate to S1; shows subject schedule info.

S3 — Student Results List

  • Data: all ExaminationResult rows for a student (examination-result.repository.ts:26-28) — flat rows, not grouped by exam (no grouping endpoint exists; client groups by examinationSubjectId or via exam lookup).
  • Action: open S4 for any exam with a report card.

S4 — Report Card View

  • Data: ReportCard object (result.service.ts:8-26): subject rows, totals, percentage, overallGrade, generatedAt.
  • Read-only. Errors: 404 when exam has no subjects (result.service.ts:51-52).

S5 — Grade Summary (completion & distribution overview)

  • Data: subjects of exam (S2 endpoint) + results per subject (S1 endpoint).
  • Shows per-class/per-subject: entries entered vs students, marks distribution; publish readiness.
  • No dedicated backend endpoint — (proposed) for a server-side aggregation (blueprint GET /api/v1/results/analytics, Results.md:28); today client-side aggregation only.

Gaps vs. screens

GapImpactStatus
No bulk marks POST (one request per student)S1 must serialize N upserts(planned)marks-import IMPLEMENTATION_PLAN.md:219
No per-exam grouping endpoint for student rowsS3 groups client-side(planned)
No rankS4 cannot show rank(planned)Results.md:54
No publish-lockS1 stays editable after publish(planned)
No analyticsS5 is client-aggregated(proposed)
No PDF report cardS4 share/export is web-only(planned)Results.md:57