Skip to content

6주차 과제 코드 리팩토링#169

Closed
hyujikoh wants to merge 375 commits intoLoopers-dev-lab:mainfrom
hyujikoh:feat/failure-ready
Closed

6주차 과제 코드 리팩토링#169
hyujikoh wants to merge 375 commits intoLoopers-dev-lab:mainfrom
hyujikoh:feat/failure-ready

Conversation

@hyujikoh
Copy link
Copy Markdown
Collaborator

@hyujikoh hyujikoh commented Dec 7, 2025

📌 Summary

💬 Review Points

✅ Checklist

📎 References

hyujikoh and others added 30 commits November 11, 2025 19:22
- ProductInfo에 생성일시(ZonedDateTime) 필드 추가
- 상품 생성 시 생성일시를 포함하도록 수정
- 테스트 코드에서 상품 생성 로직 개선
- 테스트 파일에서 불필요한 공백 제거
- 주석 정리 및 일관성 있는 코드 스타일 유지
- ProductInfo 클래스에서 likesCount 필드명을 likeCount로 수정
- 관련된 테스트 코드에서 필드명 변경 반영
- ProductQueryRepository에서 정렬 기준에 likeCount 추가
상품 도메인 기능 구현
- LikeEntity 클래스 추가: 사용자와 상품 간의 좋아요 관계를 표현
- LikeService 클래스 추가: 좋아요 등록 및 취소 로직 구현
- LikeJpaRepository 인터페이스 추가: 데이터베이스와의 상호작용 정의
- LikeRepository 인터페이스 및 구현체 추가: 좋아요 관련 비즈니스 로직 처리
- ErrorType 클래스 수정: 좋아요 관련 오류 타입 추가
- 좋아요 등록 및 취소 기능에 대한 테스트 케이스 구현
- 좋아요 관계의 생성, 복원, 중복 방지 로직 검증
- 존재하지 않는 좋아요 관계에 대한 취소 로직 추가
- 코드 간결성을 위해 Optional을 활용한 삭제 처리
- 사용자명으로 조회 시 존재하지 않는 경우 CoreException을 던지도록 수정
- 관련 테스트 케이스를 수정하여 예외 발생 여부 검증
- 브랜드 도메인 생성 요청을 위한 DTO 생성
- 브랜드 등록 기능을 구현하여 비즈니스 로직 처리
- ProductDomainCreateRequest 클래스 추가
- ProductService에 상품 등록 메서드 추가
- ProductDomainCreateRequest 생성 메서드 추가
- 상품 생성 및 저장 메서드에 대한 설명 주석 추가
- 기존 ProductDomainRequest를 ProductDomainCreateRequest로 변경
- LikeFacade 클래스에 좋아요 upsert 메서드 추가
- LikeInfo DTO를 생성하여 좋아요 정보 반환
- LikeService에 좋아요 조회 및 upsert 메서드 추가
- LikeIntegrationTest를 통해 좋아요 등록 기능 검증
- 좋아요 등록 통합 테스트 작성
- 좋아요 삭제 테스트 케이스 메소드 작성
- 멱등성 테스트 케이스 메소드 생성
- 사용자가 좋아요를 취소할 수 있는 메서드 추가
- 유효한 사용자 및 상품 검증 로직 포함
- 좋아요가 존재하지 않을 경우 무시하는 로직 구현
- 관련 테스트 케이스 추가
- 여러 사용자가 동시에 좋아요 등록 및 취소 시 멱등성 보장
- 중복 좋아요 생성 방지 및 삭제 상태 검증
- 좋아요 등록 및 취소 시 발생할 수 있는 예외 처리
- 좋아요 등록 시 상품의 좋아요 수를 증가시키는 로직 추가
- 좋아요 취소 시 상품의 좋아요 수를 감소시키는 로직 추가
- 관련 테스트 케이스 추가 및 검증
- 사용자의 좋아요 여부를 포함한 상품 상세 정보 조회 기능 추가
- 비로그인 사용자의 경우 좋아요 여부는 false로 설정
- 로그인 사용자의 경우 좋아요 여부를 데이터베이스에서 조회하여 반영
- 주문 생성 요청 DTO 및 엔티티 구현
- 주문 항목 생성 요청 DTO 및 엔티티 구현
- 주문 상태 열거형 추가
- 주문 생성 시 필수 값 검증 로직 추가
- 주문 항목 생성 요청의 유효성 검증 메서드 구현
- 주문 일시 필드 제거 (createdAt 으로 제거)
- 주문 엔티티 생성 및 상태 확인 테스트 구현
- 유효성 검증 및 예외 처리 테스트 추가
- 주문 항목 생성 및 검증 로직에 대한 단위 테스트 구현
- 유효성 검증 및 총 가격 계산 관련 테스트 포함
- 테스트 메서드의 이름을 영어로 변경하여 가독성 향상
- 각 테스트의 목적을 명확히 하기 위해 메서드 이름을 수정
- 주문 생성 커맨드 및 주문 항목 커맨드 추가
- 주문 생성 로직을 처리하는 OrderFacade 구현
- 주문 정보 DTO 및 주문 항목 정보 DTO 추가
- 주문 및 주문 항목 관련 리포지토리 및 서비스 구현
- 주문 생성 시 상품의 주문 가능 여부를 엔티티 메서드로 확인
- 총액 계산 시 판매가 조회 방식을 개선
- 주문 항목 생성 시 정적 팩토리 메서드 사용
- 콜백 데이터 검증 주석 수정
- PG 콜백 처리 메서드 반환 타입을 Boolean으로 변경
- URI 상수를 사용하여 코드 가독성 향상
- PG 클라이언트의 재시도 설정을 3회로 변경하고, 특정 예외에 대해서만 재시도하도록 수정
- 주문 항목 조회 시 페이징 기능을 추가하여 성능 개선
- 결제 완료 이벤트 및 실패 이벤트 처리 로직 수정
- 주문 생성 요청에 주문 번호 필드 추가
- 주문 번호가 null 또는 빈 문자열일 경우 예외 처리
- 주문 번호 길이가 6자 미만일 경우 예외 처리
- 주문 엔티티에 주문 번호 필드 추가 및 생성 로직 수정
- 결제 재시도 시 PG API 응답 실패에 대한 예외 처리 추가
- 주문 생성 및 결제 관련 클래스에서 주문 번호 필드 추가
- 결제 실패 시 보상 처리 로직 개선
- 연결 및 읽기 타임아웃을 300ms에서 500ms로 증가시켜
  안정성을 향상시킴
- 결제 정보에서 카드 종류를 "CREDIT"에서
  "SAMSUNG", "KB"로 변경하여 테스트 케이스 업데이트
- Circuit Breaker, Retry, Fallback 패턴 구현
- 장애 전파 방지 및 자동 복구 전략 설명
- E2E 테스트 및 통합 테스트 전략 포함
- Circuit Breaker, Retry, Fallback 패턴 구현
- 장애 전파 방지 및 자동 복구 전략 설명
- E2E 테스트 및 통합 테스트 전략 포함
- 카드 번호 마스킹 유틸리티 추가
- 주문 생성 커맨드에 유효성 검증 추가
- 결제 명령 DTO에 카드 번호 마스킹 로직 추가
- 결제 결과 처리 로직 개선 및 이벤트 발행 추가
- 결제 타임아웃 처리 메서드를 분리하여 가독성 향상
- 트랜잭션 관리 개선으로 안정성 강화
- 결제 타임아웃을 처리하는 PaymentTimeoutProcessor 클래스 추가
- 스케줄러에서 PENDING 상태의 결제를 TIMEOUT 처리하는 로직 구현
- 각 결제 건마다 독립적인 트랜잭션으로 처리하여 부분 실패 허용
- PG 응답 상태를 문자열에서 enum으로 변환하는 메서드 추가
- 카드 번호 마스킹 로직 위치 변경으로 보안 강화
- 결제 관련 클래스에서 DTO 타입을 명확히 지정
- 주석에서 불필요한 HTML 태그 제거
- 코드 가독성 향상 및 유지보수성 개선
- 결제 관련 클래스에서 DTO 타입을 명확히 지정
- 주석에서 불필요한 HTML 태그 제거
- 코드 가독성 향상 및 유지보수성 개선
- PG 결제 처리 메서드에 회로 차단기 추가
- 결제 요청 실패 시 Fallback 메서드 구현
- 결제 시스템 응답 지연 시 실패 결제 생성 로직 추가
- 주문 ID를 orderNumber로 변경하여 일관성 유지
- 관련 메서드 및 로그 메시지 수정
- BrandEntity에 Builder 추가
- 실패 비율 임계값을 5초로 변경하여 빠른 회복 가능
- SocketTimeoutException 예외를 추가하여 타임아웃 처리 강화
- 여러 클래스의 주석 포맷을 통일하여 가독성 향상
- 불필요한 import 문 제거 및 코드 정리
- PG 결제 처리 시 실패 시 재시도 로직 구현
- 특정 예외 발생 시 최대 3회 재시도 설정
- 실패 시 결제 요청 처리 로직 개선
결제 처리 관련 테스트에서 주문 ID 대신 주문 번호를 사용하도록 수정하여
일관성을 높이고 가독성을 향상시킴
@hyujikoh hyujikoh self-assigned this Dec 7, 2025
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Dec 7, 2025

Important

Review skipped

More than 25% of the files skipped due to max files limit. The review is being skipped to prevent a low-quality review.

69 files out of 249 files are above the max files limit of 100. Please upgrade to Pro plan to get higher limits.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@hyujikoh hyujikoh closed this Dec 7, 2025
@hyujikoh hyujikoh changed the title 코드 리팩토링 6주차 과제 코드 리팩토링 Dec 7, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant