Question Bank — operator runbook (full)
/question-bank (alias deep link /question-bank/review-queue redirects with ?tabId=review-queue)
Operators: Platform admin + Directory admin (canManageQuestionBank). Others may browse but lose destructive / review queue powers.
A. Open the hub
- Sidebar → Question Bank (if absent, you lack
canAccessQuestionBank). - Land on default Question List tab unless URL query
tabIddictates otherwise.
Tabs:
| Tab | Purpose |
|---|---|
| Question List | Master catalogue grid + filters + CRUD. |
| Review Queue | Prioritised moderation list. |
| Usage Dashboard | Live unvalidated / flagged distribution analytics. |
Staff viewer may read details but cannot push status transitions.
B. Question List — search & slice
- Use SearchBar (distinct from server filter set).
- Open Filters drawer / panel (job family, variant group, status, skill type, format, cognitive level, tooling tags, primary role, sourcing channel, bank id).
- Adjust sort (defaults
updatedAt descin code). - Change page size if supported.
- Select rows via checkboxes for bulk operations (where operator).
C. Create item (operator)
- Create / Add button (top area) opens modal with
QuestionBankDraftFormFields. - Populate parent skill labels, formats (
mcq,scenario,short_answer,oeq), level (L0_1…L6,NA), source lineage, optional industry context & tools tags. - Enter question text plus options A–D / rationales depending on format schema.
- Save — new row becomes
draftunless you choose another permitted status in modal. - Observe validation errors inline; fix before retry.
D. Edit / change status / delete (operator)
- Row action → Edit (opens modal with
draftValuesFromQuestionItemhydration). - Adjust copy; change status among:
draft,review,live_unvalidated,live_validated,retired(operator);flaggedis automation-first. - Save.
- Delete permanently removes row—confirm destructive intent.
- Bulk status update: select many → choose target status in bulk bar → submit; watch
bulkStatusErrorstyle errors. - Bulk retire parallel path for deprecation campaigns.
E. Review Queue tab
- Switch to Review Queue (or visit
/question-bank/review-queuewhich redirects into same page). - Page through queue (page size 50).
- For each row trigger Approve / Reject analogue (implementation:
submitQuestionBankReviewDecision). - If empty, message No items in queue displays.
F. Usage Dashboard tab
- Switch to Usage Dashboard.
- Read cards titled along the lines of
- Live unvalidated — by job family
- Live unvalidated — by level
- Flagged — by job family
- Flagged — by level
- Use insights to schedule content clean-up or validation sprints.
G. CSV import (operator)
- Import modal (
QuestionBankImportModal). - Attach CSV following internal template; confirm mapping preview.
- Submit; read
QuestionBankImportResultsummary (counts, row errors). - Download / copy error report if provided; fix source file; re-run partial import policy per CS guidance.
H. Post-import / usage tracking
When assessment authors insert bank rows, usage counters (usageCount) increment server-side—trust dashboard numbers for governance, not spreadsheets.
Common failure modes
| Symptom | Check |
|---|---|
| Forbidden on save | Session role not actually operator (MCA ≠ operator). |
| Filter returns empty | Over-restrictive combination—reset filters. |
| Import partial | Row-level schema violations—inspect summary table. |