Performance
Performance
Performance
The student-facing ‘how am I doing?’ snapshot
GET
Performance
Answers “how am I doing?” — one snapshot of the student’s mastery, drawn from the
engine_mastery.how_am_i_doing table (one row per student, refreshed when the model re-scores).
Identity is the verified token’s lms_user_id; there’s no request body.
The four fields
The headline / gauge:
mastery_pct (0–100), band, trend, student_name, programme.A one-line read naming the student’s strongest competencies, with tone that shifts on their band —
e.g. “You’re crushing Data Analysis (Advanced) and Research Methods (Mastered). Keep that going.”
What the student is strong in — competencies the model marks
Advanced or Mastered. Each carries
competency, mastery_pct, band, status, course.What to keep an eye on — competencies marked
Gap (including ones with no activity yet). Same shape.How strong vs weak is decided
The mastery model already labels every competency instatus — Advanced / Mastered /
In progress / Gap — so we use that directly: Advanced/Mastered become highlights, Gap
becomes a gap, and In progress sits in neither. A percentage threshold is only a fallback for when
status is absent.
summary is a deterministic template today — it varies per student but costs nothing to produce. It
can be swapped for an LLM-written line later, cached per (student, score_date) since the underlying
data only changes when the model re-scores — no change to anything that calls it.
Identity is the verified
lms_user_id claim. A token with no lms_user_id returns 400; a student
who hasn’t been scored yet returns 404.