forked from Loopers-dev-lab/loop-pack-be-l2-vol2-java
-
Notifications
You must be signed in to change notification settings - Fork 0
10주간 작업된 내용 반영 #41
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
Merged
Merged
10주간 작업된 내용 반영 #41
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
* Feature/user (#1) * test: User 단위테스트 추가 * feat: User 도메인 구현 * test: 회원 가입 통합테스트 추가 * feat: 회원가입 서비스 로직 구현 * test: 회원가입 E2E 테스트 추가 * feat: 회원가입 API 구현 * test: gender필드를 저장할 수 있도록 테스트 코드 수정 * refactor: User도메인에 성별 필드 추가 * test: 회원 정보 조회 통합 테스트 작성 * feat: 회원 정보 조회 서비스 로직 구현 * test: 회원 정보 조회 E2E 테스트 작성 * feat: 회원 정보 조회 API 추가 * Feature/point (#2) * test: 회원가입 관련 테스트 코드가 SignUpFacade를 참조하도록 수정 * refactor: 회원가입을 처리하는 SignUpFacade 구현 * test: 포인트 조회 통합테스트 추가 * feat: 포인트 조회 서비스 로직 구현 * test: 포인트 조회 E2E 테스트 코드 추가 * feat: 포인트 조회 API 로직 추가 * test: 포인트 충전 단위 테스트 추가 * feat: 포인트 충전 도메인 로직 추가 * test: 포인트 충전 테스트 코드 추가 * feat: 포인트 충전 서비스 로직 추가 * test: 포인트 충전 E2E 테스트 코드 추가 * feat: 포인트 충전 API 추가 * docs: 회원가입, 내 정보 조회, 포인트 조회, 포인트 충전 기능 관련 docstring 추가 (#3)
* Feature/user (#1) * test: User 단위테스트 추가 * feat: User 도메인 구현 * test: 회원 가입 통합테스트 추가 * feat: 회원가입 서비스 로직 구현 * test: 회원가입 E2E 테스트 추가 * feat: 회원가입 API 구현 * test: gender필드를 저장할 수 있도록 테스트 코드 수정 * refactor: User도메인에 성별 필드 추가 * test: 회원 정보 조회 통합 테스트 작성 * feat: 회원 정보 조회 서비스 로직 구현 * test: 회원 정보 조회 E2E 테스트 작성 * feat: 회원 정보 조회 API 추가 * Feature/point (#2) * test: 회원가입 관련 테스트 코드가 SignUpFacade를 참조하도록 수정 * refactor: 회원가입을 처리하는 SignUpFacade 구현 * test: 포인트 조회 통합테스트 추가 * feat: 포인트 조회 서비스 로직 구현 * test: 포인트 조회 E2E 테스트 코드 추가 * feat: 포인트 조회 API 로직 추가 * test: 포인트 충전 단위 테스트 추가 * feat: 포인트 충전 도메인 로직 추가 * test: 포인트 충전 테스트 코드 추가 * feat: 포인트 충전 서비스 로직 추가 * test: 포인트 충전 E2E 테스트 코드 추가 * feat: 포인트 충전 API 추가 * docs: 회원가입, 내 정보 조회, 포인트 조회, 포인트 충전 기능 관련 docstring 추가 (#3)
* [volume-1] 회원가입, 내 정보 조회, 포인트 조회, 포인트 충전 기능 구현 (#4) * Feature/user (#1) * test: User 단위테스트 추가 * feat: User 도메인 구현 * test: 회원 가입 통합테스트 추가 * feat: 회원가입 서비스 로직 구현 * test: 회원가입 E2E 테스트 추가 * feat: 회원가입 API 구현 * test: gender필드를 저장할 수 있도록 테스트 코드 수정 * refactor: User도메인에 성별 필드 추가 * test: 회원 정보 조회 통합 테스트 작성 * feat: 회원 정보 조회 서비스 로직 구현 * test: 회원 정보 조회 E2E 테스트 작성 * feat: 회원 정보 조회 API 추가 * Feature/point (#2) * test: 회원가입 관련 테스트 코드가 SignUpFacade를 참조하도록 수정 * refactor: 회원가입을 처리하는 SignUpFacade 구현 * test: 포인트 조회 통합테스트 추가 * feat: 포인트 조회 서비스 로직 구현 * test: 포인트 조회 E2E 테스트 코드 추가 * feat: 포인트 조회 API 로직 추가 * test: 포인트 충전 단위 테스트 추가 * feat: 포인트 충전 도메인 로직 추가 * test: 포인트 충전 테스트 코드 추가 * feat: 포인트 충전 서비스 로직 추가 * test: 포인트 충전 E2E 테스트 코드 추가 * feat: 포인트 충전 API 추가 * docs: 회원가입, 내 정보 조회, 포인트 조회, 포인트 충전 기능 관련 docstring 추가 (#3) * docs: 설계 문서 추가
* Feature/refactor user (#7) * refactor: 사용자 및 포인트에 대한 단위 테스트 수정 * refactor: point도메인을 user 도메인으로 통합 * refactor: user 도메인 관련 통합테스트 로직 수정 * refactor: user 도메인 관련 서비스 로직 구현 * refactor: user 도메인 관련 E2E 테스트 로직 수정 * refactor: user 도메인 관련 API 구현 * Feature/brand product (#8) * test: product 도메인 단위 테스트 추가 * feat: product, brand 도메인 구현 * Feature/like (#9) * feat: like 도메인 구현 * test: like에 대한 단위 테스트 코드 추가 * feat: like에 대한 서비스 로직 추가 * Feature/order (#10) * Feature/like (#9) * feat: like 도메인 구현 * test: like에 대한 단위 테스트 코드 추가 * feat: like에 대한 서비스 로직 추가 * test: order 도메인에 대한 단위 테스트 추가 * feat: order 도메인 구현 * test: 주문에 대한 통합 테스트 코드 추가 * feat: 주문에 대한 서비스 로직 구현 * Feature/product detail (#11) * test: 상품 정보에 대한 도메인 서비스 테스트 코드 추가 * feat: 상품 정보 도메인 서비스 구현 * feat: 상품 정보 조회 서비스 로직 구현 * feat: 테이블명에 `이 포함되는 경우에도 DatabaseCleanUp로직에서 오류 발생하지 않도록 수정 (#12) * refactor: 설계 문서 업데이트 및 구현 내용 반영 (#13)
* Add GitHub Actions workflow for PR Agent * Feature/misc api (#15) * refactor: product 도메인의 likeCount 집계 방식을 배치 방식으로 변경 * refactor: CatalogProductFacade에서 발생하는 n+1 쿼리 수정 * refactor: SignUpFacade의 NPE 가능성 제거 * refactor: Brand 도메인 name 필드의 입력 검증 로직 추가 * refactor: Order도메인 내의 OrderItem을 불변 객체로 설정 * feat: 브랜드 정보 조회 API 추가 * feat: 상품 조회 API 추가 * feat: 좋아요 수 집계 로직 추가 * feat: 좋아요 API 추가 * feat: 구매 API 추가 * Feature/concurrency like (#16) * test: 좋아요 동시성 테스트 로직 추가 * feat: like에 unique constraint 적용해서 동시성 이슈 발생하지 않도록 함 * Feature/coupon (#17) * test: 쿠폰 관련 테스트 코드 추가 * feat: coupon 구현 * Feature/concurrency purchasing (#18) * test: 주문 동시성 테스트 로직 추가 * test: 주문 흐름의 원자성을 검증하는 테스트 코드 추가 * feat: 비관적 락 적용하여 주문 동시성 이슈 발생하지 않도록 함 * refactor: deadlock 문제 수정 --------- Co-authored-by: simplify-len <joenggyu0@gmail.com>
* Feature/refactor purchasing (#30) * feat: PG 모듈 추가 (#24) * Feature/pg client (#27) * test: PG 호출 테스트 코드 추가 * feat: PG 호출 로직 구현 * test: PG CircuitBreaker 테스트 코드 추가 * feat: CircuitBreaker 로직 구현 * test: payment 도메인 단위 테스트 추가 * feat: payment 도메인 구현 * test: PaymentService 도메인 서비스 테스트 코드 추가 * feat: PaymentService 도메인 서비스 구현 * refactor: payment 도메인의 책임이지만 order 도메인에 있던 로직들 이동 * test: Order 도메인 서비스 로직 테스트 코드 작성 * refactor: Order 도메인의 도메인 서비스 로직 재구성 * refactor: purchasing facade에서 처리하고 있던 내용 중 도메인 레이어로 위임할 수 있는 내용들 재배치 * refactor: DIP 원칙에 맞춰 PG 로직에서 infra 레이어가 domain 레이어를 의존하도록 재구성 * refactor: payment 관련 스케줄링 로직들은 infra 레이어로 이동 * refactor: PurchasingFacade가 repository를 직접 사용하지 않도록 도메인 서비스 로직 재구성 * refactor: PuhrchasingFacade가 도메인 서비스를 조합해서 사용하는 역할만 담당하도록 재구성 * refactor: 재구성한 도메인 서비스 로직에 맞춰 테스트 코드 재구성 * refactor: 주문 결제시 포인트 또는 카드만을 사용하여 결제 할 수 있도록 수정 * refactor: 포인트 또는 카드를 사용하여 결제할 수 있도록 테스트 코드 재구성 * refactor: 다른 application레이어와 동일하게 command의 위치를 domain에서 application으로 이동 * refactor: Order도메인 서비스에 대한 테스트 코드 중 application 레이어에 더 적합한 부분 분리 * refactor: Order 도메인 서비스에 있던 내용 중 어플리케이션 서비스에 해당하는 부분들은 application 레이어로 이동시킴 * refactor: infrastructure 레이어에 domain레이어와 달리 payment와 paymentgateway가 구분되어있어 통일함 * chore: 중복되는 로그 정리, 불필요하게 높은 level인 로그는 debug 로그로 전환 * Feature/refactor application (#31) * refactor: application 레이어를 도메인별 어플리케이션 서비스와 어플리케이션의 조합인 facade로 분리하여 구성 * refactor: application가 도메인별 어플리케이션 서비스와 파사드로 구분된 것에 맞춰 테스트 코드 수정 * refactor: scheduler를 infrastructure 레이어로 이동 * refactor: 도메인의 캡슐화가 부족한 부분 개선 * refactor: 캐시 사용할 때 dip 적용하여 application레이어가 infrastructure 레이어를 참조하지 않도록 수정 (#32) * Feature/event (#34) * feat: 도메인별 event 추가 * feat: DIP 적용하여 event publisher 구현 * refactor: 좋아요 수 집계를 스케줄 기반 처리하는 것에서 이벤트 기반 처리하는 것으로 변경 * feat: 쿠폰 이벤트 처리하는 로직 추가 * feat: order 도메인의 이벤트 처리 로직 추가 * feat: payment 도메인의 이벤트 처리 로직 추가 * feat: point 도메인의 이벤트 처리 로직 추가 * feat: product 도메인의 이벤트 처리 로직 추가 * 도메인이벤트 * refactor: HeartFacade에서 좋아요 처리시 Product 어플리케이션 서비스를 직접호출하지 않고 이벤트 사용하는 방식으로 재구성 * refactor: PurchasingFacade에서 주문 처리시 어플리케이션 서비스를 직접호출하지 않고 이벤트 사용하는 방식으로 재구성 * test: eventhandler에 대한 테스트 추가 * refactor: event handler 테스트에 맞춰 코드 수정 * feat: 데이터 플랫폼으로 주문 데이터 전송하는 로직 추가 * feat: event 및 command 재구성 (#35) * feat: event 및 command 재구성 (#35) event * code rabbit
* chore:kafka producer 설정 * chore: kafka 토픽 자동 생성 설정 추가 * feat: kafka event publisher, comsumer 추가 * test: 집계 도메인 단위 테스트 코드 추가 * feat: 집계 도메인 domain 레이어 구현 * feat: 집계 도메인 infra 레이어 구현 * chore: kafka 토픽 자동 생성 설정 추가 * chore: kafka 빌드 의존성 추가 * test: 집계 통합 테스트 추가 * feat: 집계 서비스 로직 구현 * test: kafka consumer 테스트 코드 추가 * feat: kafka comsumer 구현 * outbox 패턴 적용위해 기존 kafka 설정 삭제 * test: outboxevent 단위 테스트 추가 * feat: outbox 도메인 구현 * feat: outbox infrastructure repository구현 * metric 오타 수정 * refactor: consumer 관련 로직들은 commerce-streamer 모듈로 이동 * test: outbox 테스트 코드 추가 * test: outbox 구현 * outbox event listener 구현 * feat: 상품 조회 이벤트 추가 * feat: 상품 조회시 이벤트 발행 * chore: kafka 설정 수정 * fix: outbox 처리되지 않는 오류 수정 * chore: 테스트 코드 실행시 kafka 사용할 수 있도록 test container 설정 추가 * test: offset.reset: latest 설정이 제대로 적용되는지 확인하는 테스트 코드 추가 * test: kafka 파티션 키 설정에 대한 테스트 코드 추가 * chore: commerce-api 테스트 환경에서 카프카 사용하도록 설ㄹ정 * test: event id 기준으로 한 번만 publish, consume하는 것을 검증하는 테스트 코드 추가 * chore: 충돌 발생한 테스트 코드 수정 * feat: event id 기준 1회 처리되도록 로직 구현 * test: 버전 기준으로 최신 이벤트만 처리하도록 테스트 코드 수정 * feat: version 기준으로 최신 이벤트만 처리하도록 함 * test: 중복 메시지 재전송 시 한 번만 처리되는지 검증하는 테스트 코드 추가 * feat: kafka 이벤트 publish 할 때 콜백 사용하여 이벤트 유실 방지 * feat: kafka메시지 헤더에 event type 추가 * feat: 버전 조회와 저장 사이의 경쟁 조건 가능성 해결 * feat: 신규 상품 등록시 event 발행에서 발생하는 경합 문제 수정
* Feature/ranking (#37) * feat: zset 모듈 추가 zset * test: 랭킹 계산에 대한 테스트 코드 추가 * feat: 랭킹 계산 서비스 구현 * test: 랭킹 이벤트 컨슈머 테스트 로직 추가 * feat: 랭킹 컨슈머 구현 * test: 랭킹 조회 통합 테스트 코드 추가 * feat: 랭킹 조회 서비스 로직 구현 * feat: 랭킹 조회 엔드포인트 추가 * test: 랭킹 정보 포함하여 상품 조회하는 테스트 코드 작성 * feat: 랭킹 포함하여 상품 정보 조회하도록 api 수정 --------- Co-authored-by: 이건영 <> * Feature/ranking event (#38) * feat: zset 모듈에 zunionstore 연산 처리 메소드 추가 * test: 랭킹 집계에 필요한 데이터 수집과 랭킹 계산 로직을 application event 기준으로 분리하도록 테스트 코드 수정 * feat: 랭킹 집계에 필요한 데이터 수집과 랭킹 계산 로직을 application event 기준으로 분리하도록 함 * Feature/ranking exception (#39) * test: 랭킹 조회 실패할 때의 테스트코드 추가 * feat: 랭킹 조회 실패시 전날 혹은 좋아요 순 데이터로 응답하도록 보완 * feat: 랭킹 fallback 전략 구현 * test: 랭킹 fallback 전략에 맞춰 테스트코드 수정 * refactor: 일자 단위 carry over 도입에 따라 unionstore 제거 * chore: 클래스명과 동일하게 파일 이름 변경 * refactor: 랭킹 이벤트 컨슈머에서 멱등성 체크 로직, 에러 처리 로직, 배치 커밋 로직 반복 제거 * refactor: 불필요한 stubbing 제거 * chore: 시간대 설정 추가
* feat: batch 처리 모듇 분리 * feat: batch 모듈에 ProductMetrics 도메인 추가 * feat: ProudctMetrics의 Repository 추가 * test: Product Metrics 배치 작업에 대한 테스트 코드 추가 * feat: ProductMetrics 배치 작업 구현 * test: Product Rank에 대한 테스트 코드 추가 * feat: Product Rank 도메인 구현 * feat: Product Rank Repository 추가 * test: Product Rank 배치에 대한 테스트 코드 추가 * feat: Product Rank 배치 작업 추가 * feat: 일간, 주간, 월간 랭킹을 제공하는 api 추가 * refractor: 랭킹 집계 로직을 여러 step으로 분리함 * chore: db 초기화 로직에서 발생하는 오류 수정 * test: 랭킹 집계의 각 step에 대한 테스트 코드 추가
* 트랜젝션 어노테이션 추가 * 랭킹 대상 항목이 100개 미만일 때의 배치 에외 처리 * @StepScope를 적용하여 Step 실행마다 새 인스턴스를 생성 * 랭크 계산 후 싱글톤 인스턴스 내의 필드 초기화하여 데이터 오염 및 메모리 누수 문제 방지 * 배치 실행 파라미터에서 발생할 수 있는 null pointer exeception 수정 * n+1 쿼리 개선
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
📌 Summary
💬 Review Points
✅ Checklist
📎 References