안녕하세요! 여러분의 관심과 지원에 감사드립니다.🤗
아래 내용을 꼼꼼히 읽고 조건에 맞춰 과제를 완성해주세요.
과제 진행 중 🤖 AI 도구 사용을 허용합니다. 사용하신 경우 반드시 사용 내역을 문서화해주세요.
(자세한 안내는 하단 참고)
Private Repository를 생성한 뒤 과제를 진행해주세요.
Repository명은 allra-backend-assignment로 설정해주세요.
과제가 완성되면 README.md 상단에 지원자분의 성함을 적어주세요.
그리고 dev@allra.co.kr 계정을 멤버로 초대하여 과제를 제출해주세요.
- GitHub 과제 Repository 접속
- Settings 탭 클릭
- 좌측 Collaborators and teams 메뉴 클릭
- add people 클릭하여 'dev@allra.co.kr' 초대
✔️ 문제 해결 과정에서 고민이 있었던 부분은 Issue로 남겨주시면 더욱 좋아요.
올라 마켓의 백엔드 시스템을 구축합니다. 이 시스템은 다음과 같은 기능을 제공해야 합니다.
-
상품 조회 : 구매 가능한 상품 목록을 불러옵니다.
-
장바구니 : 상품을 장바구니에 추가하고 수량을 관리합니다.
-
주문 및 결제 : 주문을 제출하고 결제를 처리합니다.
- Java 17 이상을 사용해주세요.
- SpringBoot 버전은 3.x 이상을 사용해주세요.
- Database는 MySQL 8.0 이상을 사용해주세요.
- Database 접근에는 JPA 또는 QueryDSL을 사용해주세요.
- RDB 외에 필요한 경우 NoSQL, 메시지큐 등 추가적인 기술 및 도구 사용을 허용합니다.
- Pull Request 단위로 개발해주세요. 기능별로 브랜치를 생성하여 작업하고 PR을 통해 main 브랜치에 머지해주세요.
- README.md를 반드시 작성해주세요.
- 테스트 코드 작성을 권장합니다.
상품 목록을 불러오는 API를 구현해주세요.
상세 요구사항:
- 상품은 카테고리, 상품명, 가격 범위로 검색할 수 있어야 합니다.
- 페이징 처리를 구현해주세요.
- 상품의 품절 여부가 표시되어야 합니다.
- 데이터베이스 스키마는 자유롭게 설계해주세요.
사용자별 장바구니 기능을 구현해주세요.
상세 요구사항:
- 장바구니에 상품을 추가, 수정, 삭제, 조회할 수 있어야 합니다.
- 장바구니 조회 시 각 상품의 현재 품절 상태를 확인할 수 있어야 합니다.
- 회원가입 기능은 별도로 구현하지 않으셔도 됩니다. 사용자 테이블에 더미 데이터를 미리 넣어두고, 이미 사용자가 존재한다는 가정 하에 과제를 진행해주세요.
- 데이터베이스 스키마는 자유롭게 설계해주세요.
주문을 처리하는 API를 구현해주세요.
상세 요구사항:
- 주문 요청 시 장바구니에 담긴 모든 상품들의 금액을 합산하여 결제를 진행해야 합니다.
- 주문 요청 시 상품의 재고를 관리해야 합니다.
- 결제 요청은 외부 결제 API를 사용하여 처리해야 합니다. (하단 모의 API 스펙 참고)
- 결제 요청 이력을 관리할 수 있어야 합니다.
- 결제 성공 및 실패 여부에 따라 적절한 응답을 반환해야 합니다.
- 재고 부족 시 적절한 처리를 구현해주세요.
- 주문 상태 관리 (주문 생성, 결제 대기, 결제 완료, 주문 취소 등)를 구현해주세요.
- 데이터베이스 스키마는 자유롭게 설계해주세요.
✔️ 과제 진행 중 AI 도구 사용을 허용합니다.
✔️ AI를 사용하신 경우, Pull Request 작성 시 다음 내용을 반드시 포함 해주세요
포함 필수 사항
- 어떤 문제를 해결하기 위해 AI를 사용했는지
- 어떤 부분에서 AI를 활용했는지 (예: 코드 작성, 디버깅, 설계, 리팩토링 등)
- AI와 나눈 주요 프롬프트와 응답 내용
💡 대화 내용을 첨부하기 힘들다면 아래 프롬프트로 생성된 마크다운 텍스트를 복사해서 사용하세요
현재 세션에서 너와 내가 나눈 대화 내용을 아래 형식으로 정리한 후, 마크다운 텍스트를 작성해서 복사할 수 있도록 제공해줘
형식:
## 해결하려던 문제
[문제 상황을 간단히 설명]
## 대화 요약
### Q: [내가 한 질문을 원문 그대로]
**A:** [AI가 제안한 내용과 사용자가 수락한 내용을 2-3줄로 요약, 코드가 있다면 핵심 부분만]
### Q: [내가 추가로 한 질문을 원문 그대로]
**A:** [AI가 제안한 내용과 사용자가 수락한 내용을 2-3줄로 요약, 코드가 있다면 핵심 부분만]
[이런 식으로 모든 질문과 답변을 정리]
## 최종 적용 결과
[실제로 코드에 적용한 내용]
결제 처리를 위한 모의 API를 생성하여 사용해주세요.
모의 API 생성 사이트:
- https://beeceptor.com/
- 익숙한 방식이 있다면 다른 방식을 사용해도 괜찮습니다.
모의 결제 API 스펙:
HTTP Method : POST
URL : '/api/v1/payment'
[Request Header]
Content-Type: application/json
[Request Body]
{
"orderId": String, // 주문 ID
"amount": Number // 결제 금액
}
[Response - 성공]
{
"status": "SUCCESS",
"transactionId": "txn_{{faker 'number.bigInt'}}",
"message": "Payment processed successfully"
}
[Response - 실패]
{
"status": "FAILED",
"transactionId": null,
"message": "Something wrong!"
}