Quiz Builder
SCR-CCM.06 ยท Course: Introduction to Python Programming โ Lesson: Module 2 โบ Lesson 5- Section 1 "Core Concepts" has no questions or draw rules
- Total points estimate (0) is less than passing score (60)
Screen Flow (SUC-CCM-11):
๐ Spec notes โ SUC-CCM-11 / SCR-CCM.06 Quiz Builder
- Screen: SCR-CCM.06 โ Quiz Builder
- Sub-use case: SUC-CCM-11 โ Build Quiz (demoted from UC-CCM.02 on 2026-06-23 โ no standalone actor goal, always invoked from a caller UC)
- Type: page ยท Primary actor: instructor role (see caller UC's
primary_actors)
Current returnUrl: /author-course/
Fallback: / when returnUrl is empty.
Propagation: all in-SUC links carry returnUrl. AF 4B "New blank" links carry nested returnUrl: /build-quiz/?returnUrl=<encoded outer ru> so the question-author SUC returns here, not to the outer caller.
Finish: redirects to /author-course/. Cancel sub-flow: redirects to /author-course/?sub_cancelled=1.
SUC-CCM-11 โ Build Quiz
Invoked by (Backoffice Portal โ mockup-plan.md): UC-CCM.01 (Author Course Content โ "Quiz โ Create New" / "Edit Quiz" in the Add Content dialog / lesson content list) ยท UC-CCM.10 (Manage Course Assets โ Asset Library tab "Build Quiz").
AF 4B "New blank": navigates out to the matching question-author SUC (MC/TF โ SUC-CCM-07, Short Answer โ SUC-CCM-08, Matching โ SUC-CCM-09, Numerical โ SUC-CCM-10) with returnUrl pointing back here. On save, the newly authored question is added to the current course's question bank and linked as a fixed question in the active section; on cancel, control returns here unchanged.
titleโ text ยท required ยท max 255instructionsโ textarea ยท optional ยท max 2000time_limit_minutesโ number ยท optional ยท min 1 max 999max_attemptsโ number ยท optional ยท default 1passing_scoreโ number ยท required ยท min 0total_pointsโ number ยท read-only ยท computed from all sectionsquiz_draw_countโ number ยท optional ยท must not exceed total assembled question countshuffle_questionsโ boolean ยท default false ยท seed stored per attemptshuffle_optionsโ boolean ยท default falseis_summativeโ enum [Practice/Summative] ยท required ยท default false (Practice)
Delivery settings โ assessment type, time limit, maximum attempts, and passing score can also be configured per placement on the content item in the lesson editor (UC-CCM.01 AF 7A); the same quiz can be summative in one lesson and practice in another.
section_nameโ text ยท required ยท max 100 ยท default "Section N" (auto-incremented)section_descriptionโ textarea ยท optional ยท max 500
draw_tagโ enum ยท requireddraw_countโ number ยท required ยท min 1draw_scopeโ enum [course_draft / institute / both] ยท required ยท default course_draft
picker_searchโ text ยท optional ยท max 255 ยท only active questions shownpicker_type_filterโ enum [all / mc_tf / short_answer / matching / numerical] ยท default all- Cross-course: source course name shown alongside question stem when the question comes from a different course
- Every section must have at least 1 fixed question or draw rule
- total_points must be >= passing_score
- If quiz_draw_count is set, it must not exceed total assembled question count
- AF 3B/3C/3D/3E/3F โ section management: add / rename-edit / remove / reorder / split (resume at step 4 or 6)
- AF 4A โ add questions via random draw by tag (resume at 5)
- AF 4B โ author a new question inline (resume at 5) โ SCR-CCM.07
- AF 6A/6B/6C โ item management within a section: reorder / remove fixed question / edit-remove draw rule
- AF 8A โ quiz fails validation at save (resume at 7)
- AF 1A โ cancel before saving (end_failure)
- AF 1B โ delete the entire quiz (end_failure)
- Working-draft save only โ permanent version created on course review submission (UC-CCM.05) [SUC-CCM-11 AR#5]
- Shuffle seed stored per attempt โ returning learner sees same order as when they started [SS-CCM.08]
- "Remove section" disabled when only one section remains [SUC-CCM-11 AR#2 / SCR AR#9]
- "Split section" (AF 3F) available only when the section has at least 2 items [SUC-CCM-11 AF 3F / SCR AR#9]
- Draw rule pool warning if question bank has fewer active questions than draw_count โ inline warning, does not block save [SUC-CCM-11 AR#11, SS-CCM.10]
- Random draw and fixed-question picks resolve only against active (non-retired) questions [SUC-CCM-11 AR#7, SS-CCM.34]
- WCAG AA compliance โ drag handles keyboard-accessible [NFR-09]
- Atomic save โ all section/question/draw-rule changes saved together; partial save not permitted [SUC-CCM-11 AR#8, SS-CCM.07]
- Questions authored inline (AF 4B) are added to the current course's question bank and available to other quizzes/sections in the same course