๐ฌ Simulate:
Select Cohort
โ BackCourse Summary
Python Programming for TVET
v2.1
Dr. Sumali Hakrian
Free
Learning Mode & Cohort Selection
Cohort-based
Set by admin โ not changeable by learner
Order Summary
Enrollment fee
Free
Total
Free
Free or subscription-covered โ access starts immediately after confirmation.
Screen Flow (from flow.puml):
๐ Spec notes โ UC-LMS.07 / SCR-LMS.05 (fields, actions, requirements)
Identity
- Screen: SCR-LMS.05 โ Enrollment Confirmation
- Use case: UC-LMS.07 โ Enroll in Course (M-3 to M-10 / AF-1A / AF-7A / AF-10A)
Brief description
Opens after learner clicks "Enroll" from Course Detail (SCR-LMS.04) or Specialization Detail (SCR-LMS.25). Displays course/specialization summary and shows the admin-configured learning mode (read-only). If cohort-based โ shows available cohort list for learner to pick. For Specialization โ shows member course list with per-course cohort selectors. On confirm: free/subscription โ enrollment created immediately (โ M-10 return to SCR-LMS.04 with ?enrolled=1); paid โ redirect to UC-BIL.01.
Fields
enrollment_subject_title"Course / Specialization Name" โ text ยท Course.title or Specialization.title ยท always ยท read-onlycontent_version"Content Version" โ text ยท CourseVersion.version_major ยท visible when is_specialization == false ยท read-onlyinstructor_name"Instructor Name" โ text ยท cross-module InstructorProfile.display_name ยท visible when is_specialization == false ยท read-onlyprice_display"Price" โ text ยท cross-module Billing ยท fallback "Free" ยท always ยท read-onlylearning_mode"Learning Mode" โ enum [self_paced, cohort] ยท configured by Program Admin, read-only to learner ยท visible when !is_specializationavailable_cohorts"Open Cohorts" โ list ยท Cohort.id ยท visible when learning_mode == cohort ยท filter: open, not full, not startedselected_cohort"Selected Cohort" โ enum ยท CohortMember.cohort_id ยท required when cohort modecohort_full_alert"Cohort Full Message" โ text ยท visible when cohort_full_race_condition == true (AF-7A)specialization_member_courses"Member Course List" โ list ยท SpecializationCourse.course_id ยท visible when is_specialization == true ยท read-only + cohort dropdown per course
Actions
select_cohort"Select Cohort" โ enabled when learning_mode == cohort ยท triggers UC-LMS.07-M-7confirm_enrollment"Confirm Enrollment" โ enabled when required_fields_valid ยท triggers UC-LMS.07-M-8 (โ M-10 if free; โ AF-10A if paid)cancel"Cancel" โ always enabled
Additional requirements
- Cohort filter: status=open, member_count < max_members, start_date > today โ sorted by start_date ASC
- Specialization member row: course name + admin-set learning mode badge + cohort dropdown (if cohort-based)
- Race condition (AF-7A): cohort full during confirm โ refresh cohort list + clear selected_cohort + show cohort_full_alert in-page without redirect
- Price rule: price=0 โ "Free"; covered by subscription โ "Covered by membership package"; paid โ "Paid" badge (no amount shown here โ amount shown on SCR-BIL.04 after redirect) (cross-module: Billing)
- Specialization enrollment is atomic โ if any member course fails to register, no enrollments are saved
โ Open issues (UC-LMS.07)
- Subscription entitlement check โ verified by LMS directly or received from Billing module?
- Enrollment stuck at "Awaiting payment" โ auto-cancel after 24h or keep indefinitely?
- Re-enrollment after course completion โ allowed or not?