- 당신은 회의실을 예약할 수 있는 API를 개발하려 합니다.
- 다음의 조건과 요구사항에 부합하게 API와 테스트 코드(유닛테스트, e2e 테스트)를 작성해주세요.
- Git 활용, 커밋 메시지, 코딩 컨벤션 등 여러분의 모든 개발 실력을 보여주세요.
(필수)
- Temurin JDK 11, Spring Boot 2.7.13를 사용합니다.
- Nginx를 사용하며 버전의 제약은 없습니다.
- Docker v2를 사용합니다.
(선택)
- Gradle 7.6을 권장합니다.
- H2 DB 또는 MariaDB 10을 사용합니다.
다음의 API를 구현합니다.
- API 헬스체크
- 모든 회의실 목록 가져오기
- 회의실 정보 가져오기
- 모든 예약 정보 가져오기
- ID 로 예약 정보 가져오기
- 예약 생성
- 예약 업데이트
- ID 로 예약 삭제
다음의 요구조건을 충족시켜야 합니다.
- 상기 제약조건이 동작하는 모든 로컬 환경에서 API 가 동작해야 합니다.
- 하나의 ID로 하루에 최대 6시간을 예약할 수 있습니다.
- 예약은 하루 24시간 단위로 이루어지며 여러 날짜에 걸쳐 예약할 수 없습니다.
- 매일 00시부터 01시까지는 점검시간으로 예약을 할 수 없습니다.
회의실은 다음의 조건을 갖습니다.
- 대, 중, 소의 회의실이 있습니다.
- 각 회의실은 크기에 따라 연속으로 예약할 수 있는 시간에 제한이 있습니다.
- 대: 연속 최대 2시간, 중: 연속 최대 4시간, 소: 연속 최대 6시간
- 미처 개발하지 못한 API를 프로젝트 루트 경로의 answer01.md에 작성해주세요.
- API의 고도화 방안을 answer02.md에 작성해주세요.