Result page shows a why-lost row (concept gap / calculation slip / misread / out of time / blind guess) on every wrong or blank question. POST /result/:attempt/tag/:qid toggles one tag; ownership checked, vocabulary enforced server-side. Dashboard gains a 'why you lose marks' section aggregating tags across all submitted attempts. Verified live: tag persists, rollup renders. |
||
|---|---|---|
| .. | ||
| exam.js | ||
| style.css | ||