package domain // LMSEntityAccess describes learner gating for a program, course, module, or lesson. // It is omitted (nil) for non-learner roles in API responses. // Progress fields count completed lessons vs total lessons in that entity’s scope (lesson: 0 or 1 of 1). type LMSEntityAccess struct { IsAccessible bool `json:"is_accessible"` IsCompleted bool `json:"is_completed"` Reason string `json:"reason,omitempty"` CompletedCount int `json:"completed_count"` TotalCount int `json:"total_count"` ProgressPercent int `json:"progress_percent"` } // LMSUserProgress lists entity IDs the authenticated user has fully completed // (lessons as marked complete; module/course/program when rollup conditions were met). type LMSUserProgress struct { LessonIDs []int64 `json:"lesson_ids"` ModuleIDs []int64 `json:"module_ids"` CourseIDs []int64 `json:"course_ids"` ProgramIDs []int64 `json:"program_ids"` }