Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[2차] test1 과제 제출합니다. #12

Open
nar0ng opened this issue Oct 14, 2024 · 0 comments
Open

[2차] test1 과제 제출합니다. #12

nar0ng opened this issue Oct 14, 2024 · 0 comments
Labels
2차 과제 2차 과제입니다.

Comments

@nar0ng
Copy link
Member

nar0ng commented Oct 14, 2024

구름톤 유니브 연합 스터디 백엔드 2차 과제

  • 해당 저장소의 ISSUE에 본인이 작업한 레포 주소와 과제 내용을 올려주세요!

이번 2차 과제에서는 수강신청 시스템에 핵심 기능들을 구현하고, TDD 방식을 적용하여 시스템의 신뢰성을 높이는 것을 목표로 합니다.

🥅 과제 목표

TDD(Test-Driven Development) 방식을 적용하여 수강신청 시스템의 주요 기능을 개발하고, 동시성 문제를 해결합니다

필수 구현 사항

선택 1. 수강신청 기능 구현

  • 학생이 수강신청을 추가할 수 있는 기능을 구현하세요.
  • 동일한 시간대에 중복으로 수강신청을 할 수 없도록 제한하세요.
    • 여러 학생이 동시에 동일한 강좌를 신청할 때 발생할 수 있는 문제를 고려해보세요!
  • 학생은 신청한 수강신청을 취소할 수 있어야 합니다.
  • 학생은 자신이 신청한 수강신청 목록을 조회할 수 있어야 합니다.

요구 사항

  • 학생은 동일한 강좌에 여러 번 신청할 수 없습니다!

선택 2. 강좌 목록 조회 기능 구현

  • 모든 사용자는 강좌 목록을 조회할 수 있어야 합니다.
  • 강좌 목록은 강의명, 강의 시간, 담당 교수, 수강 가능 인원수 등의 정보를 포함해야 합니다.
  • 수강신청 가능 상태(잔여 인원)에 따라 필터링할 수 있는 기능을 추가하세요.
    • 필터링 옵션은 수강 가능 강좌와 마감된 강좌로 나누어 제공하세요.
    • 강좌에는 capacity (정원)와 enrolled (수강 신청한 인원) 필드가 존재하며, enrolled < capacity인 경우 수강신청이 가능하다고 간주합니다.

요구 사항

  • 강좌 정보는 강의명, 강의 시간, 담당 교수, 수강 가능 인원수 등을 포함해야 합니다.

설계 가이드 예시

수강신청 정보

  • id
  • student_id
  • course_id
  • 신청 시간
  • 상태(신청 완료/취소)

강좌

  • id
  • 강좌명
  • 강의 시간
  • 담당 교수
  • 정원

3. 나의 이해와 의견

  • 각 기능을 TDD 방식으로 개발하면서 어떤 테스트를 먼저 작성했는지, 그리고 해당 테스트를 통과하기 위해 어떤 코드를 작성했는지에 대한 설명을 포함하세요.
  • 동시성 문제를 해결하기 위한 방법과 그 과정에서의 어려움 또는 고민을 함께 서술해주세요.

과제 제출 예시

ISSUE 제목: [2차] test1 과제 제출합니다.

@nar0ng nar0ng added the 2차 과제 2차 과제입니다. label Oct 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
2차 과제 2차 과제입니다.
Projects
None yet
Development

No branches or pull requests

1 participant