Skip to content

[FIX] 마이페이지 진도율 계산 시 미리보기 레슨이 분모에서 제외되지 않음 #394

Description

@dlxodus02

📊 버그 심각도 및 우선순위

  • P0 : 서비스 핵심 동작 장애 (긴급 핫픽스 필요)
  • P1 : 주요 기능 오작동 및 예외 처리 누락
  • P2 : 마이너한 버그 및 시스템 영향이 적은 오류

🐛 문제 상황 (현상)

  • 연관 이슈 번호 : #
  • 연관 도메인 : enrollment_management
  • 문제 설명 : 마이페이지 수강중 목록의 진도율이 미리보기 레슨을 분모에 포함해 실제보다 낮게 표시됨. 학습화면(CourseProgressQueryAdapter)은 미리보기를 분모에서 제외하지만 마이페이지(MyEnrolledCourseQueryAdapter)는 미적용 상태. 미리보기 레슨은 완료 처리가 불가하므로 해당 강의는 영원히 100%에 도달할 수 없음.

🔄 재현 방법 (Steps to Reproduce)

  1. 미리보기 레슨이 포함된 강의 수강 신청
  2. 미리보기를 제외한 나머지 레슨 전부 완료
  3. 마이페이지 수강중 탭 진도율 확인 → 100% 미만으로 표시

🕵️‍♂️ 원인 분석 및 수정 내역

  • Model / Policy :
  • UseCase / Command :
  • Service :
  • Port / Adapter : MyEnrolledCourseQueryAdapter.javalessons.size()가 미리보기 레슨을 포함한 전체 레슨 수를 분모로 사용. CourseProgressQueryAdapter:48PreviewLessonPolicy.isPreview 필터가 이 어댑터에는 미적용.
  • Repository :
  • Controller :
  • Response / Request :

🚨 검증 및 회귀 방지 (TestCode)

  • 버그를 재현하는 실패 테스트 케이스 작성 (수정 전 빨간불 확인)
  • 로직 수정 후 정상 통과 확인
  • 예외(Exception) 처리 로직 보완 및 assertThrows 검증 완료

📸 로그 및 참고 자료

  • 정상 동작 참고: CourseProgressQueryAdapter.java:48.filter(lesson -> !PreviewLessonPolicy.isPreview(section, lesson))
  • 수정 대상: MyEnrolledCourseQueryAdapter.javalessons.size() 및 완료 수 계산부

Metadata

Metadata

Assignees

Labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions