Skip to content

revert: WEEK9 랭킹 시스템 커밋 제거 (WEEK8 PR에 잘못 포함된 부분)#350

Merged
letter333 merged 1 commit intoLoopers-dev-lab:letter333from
letter333:fix/revert-week9
Apr 9, 2026
Merged

revert: WEEK9 랭킹 시스템 커밋 제거 (WEEK8 PR에 잘못 포함된 부분)#350
letter333 merged 1 commit intoLoopers-dev-lab:letter333from
letter333:fix/revert-week9

Conversation

@letter333
Copy link
Copy Markdown

@letter333 letter333 commented Apr 9, 2026

Summary

PR #315 (WEEK8 대기열 시스템) 머지 시 origin/main에 포함되어 있던 WEEK9 랭킹 시스템 커밋 16개가 함께 들어갔습니다.

WEEK9 내용을 별도 PR로 제출하기 위해 먼저 revert합니다.

Revert 대상

변경 목적

PR #315(WEEK8 대기열 시스템) 머지 시 실수로 포함된 WEEK9 랭킹 시스템(머지 커밋 a1d4647) 코드를 제거하여 WEEK8 순수 상태로 복구합니다.

핵심 변경점

Redis ZSET 기반 실시간 랭킹 시스템 관련 39개 파일을 완전 삭제합니다.

  • 애플리케이션 영역: RankingFacade, RankingService, ProductRankingRedisRepository, RankingV1 API 컨트롤러/DTO, RankingDetailInfo, ProductRankingInfo 제거
  • 이벤트 처리: ProductViewedEvent 발행 및 OutboxEventRecorder의 handleProductViewed 메서드 제거
  • 메트릭 서비스: 랭킹 점수 계산 로직(RankingWeight) 및 스케줄된 점수 이월 태스크(ScoreCarryOverScheduler) 제거
  • API: GET /api/v1/rankings 엔드포인트 완전 삭제

리스크/주의사항

프로덕션 환경에서 WEEK9 랭킹 기능이 현재 활성화되어 있다면, 이 PR 머지 후 /api/v1/rankings 호출 불가, 상품 조회 이벤트 처리 중단, 랭킹 점수 집계 중단 등이 발생합니다. 배포 전 환경 상태와 영향도를 재확인 필요합니다.

테스트/검증

WEEK9 관련 26개의 단위/통합/E2E 테스트 케이스(RankingFacadeTest, ProductRankingRedisRepositoryTest, RankingV1ApiE2ETest, RankingServiceTest, RankingWeightTest 등)도 함께 제거되어 테스트 일관성이 유지됩니다.

This reverts commit a1d4647, reversing
changes made to db2ae32.
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 9, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: de98335d-e334-4f30-ab26-459db7607582

📥 Commits

Reviewing files that changed from the base of the PR and between 872e594 and afcc5e5.

📒 Files selected for processing (39)
  • apps/commerce-api/src/main/java/com/loopers/application/event/ProductViewedEvent.java
  • apps/commerce-api/src/main/java/com/loopers/application/kafka/OutboxEventRecorder.java
  • apps/commerce-api/src/main/java/com/loopers/application/kafka/OutboxEventType.java
  • apps/commerce-api/src/main/java/com/loopers/application/product/ProductCacheEvictListener.java
  • apps/commerce-api/src/main/java/com/loopers/application/product/ProductFacade.java
  • apps/commerce-api/src/main/java/com/loopers/application/ranking/RankingDetailInfo.java
  • apps/commerce-api/src/main/java/com/loopers/application/ranking/RankingFacade.java
  • apps/commerce-api/src/main/java/com/loopers/application/ranking/RankingInfo.java
  • apps/commerce-api/src/main/java/com/loopers/domain/product/ProductRepository.java
  • apps/commerce-api/src/main/java/com/loopers/domain/product/ProductService.java
  • apps/commerce-api/src/main/java/com/loopers/domain/ranking/ProductRankingInfo.java
  • apps/commerce-api/src/main/java/com/loopers/domain/ranking/ProductRankingRepository.java
  • apps/commerce-api/src/main/java/com/loopers/infrastructure/product/ProductJpaRepository.java
  • apps/commerce-api/src/main/java/com/loopers/infrastructure/product/ProductRepositoryImpl.java
  • apps/commerce-api/src/main/java/com/loopers/infrastructure/ranking/ProductRankingRedisRepository.java
  • apps/commerce-api/src/main/java/com/loopers/interfaces/api/product/ProductV1Controller.java
  • apps/commerce-api/src/main/java/com/loopers/interfaces/api/product/ProductV1Dto.java
  • apps/commerce-api/src/main/java/com/loopers/interfaces/api/ranking/RankingV1ApiSpec.java
  • apps/commerce-api/src/main/java/com/loopers/interfaces/api/ranking/RankingV1Controller.java
  • apps/commerce-api/src/main/java/com/loopers/interfaces/api/ranking/RankingV1Dto.java
  • apps/commerce-api/src/test/java/com/loopers/application/kafka/OutboxEventRecorderTest.java
  • apps/commerce-api/src/test/java/com/loopers/application/product/ProductCacheEvictListenerTest.java
  • apps/commerce-api/src/test/java/com/loopers/application/product/ProductFacadeTest.java
  • apps/commerce-api/src/test/java/com/loopers/application/ranking/RankingFacadeTest.java
  • apps/commerce-api/src/test/java/com/loopers/infrastructure/ranking/ProductRankingRedisRepositoryTest.java
  • apps/commerce-api/src/test/java/com/loopers/interfaces/api/ranking/RankingV1ApiE2ETest.java
  • apps/commerce-streamer/src/main/java/com/loopers/CommerceStreamerApplication.java
  • apps/commerce-streamer/src/main/java/com/loopers/application/MetricsService.java
  • apps/commerce-streamer/src/main/java/com/loopers/application/RankingService.java
  • apps/commerce-streamer/src/main/java/com/loopers/application/ScoreCarryOverScheduler.java
  • apps/commerce-streamer/src/main/java/com/loopers/domain/ranking/RankingRepository.java
  • apps/commerce-streamer/src/main/java/com/loopers/domain/ranking/RankingWeight.java
  • apps/commerce-streamer/src/main/java/com/loopers/infrastructure/ranking/RankingRedisRepository.java
  • apps/commerce-streamer/src/test/java/com/loopers/application/MetricsServiceTest.java
  • apps/commerce-streamer/src/test/java/com/loopers/application/RankingServiceTest.java
  • apps/commerce-streamer/src/test/java/com/loopers/application/ScoreCarryOverSchedulerTest.java
  • apps/commerce-streamer/src/test/java/com/loopers/domain/ranking/RankingWeightTest.java
  • apps/commerce-streamer/src/test/java/com/loopers/infrastructure/ranking/RankingRedisRepositoryTest.java
  • http/ranking-v1.http

📝 Walkthrough

Walkthrough

ProductViewedEvent 기반의 상품 순위 추적 시스템 전체를 제거한다. 이벤트 발행, 순위 계산, Redis 저장소, 관리 API, 관련 DTO, 캐시 무효화 로직을 모두 삭제한다.

Changes

Cohort / File(s) Summary
ProductViewedEvent 제거
apps/commerce-api/src/main/java/com/loopers/application/event/ProductViewedEvent.java, apps/commerce-api/src/main/java/com/loopers/application/kafka/OutboxEventRecorder.java, apps/commerce-api/src/main/java/com/loopers/application/kafka/OutboxEventType.java
ProductViewedEvent 레코드 및 관련 이벤트 리스너 제거. 해당 이벤트의 outbox 기록 로직 삭제.
ProductFacade 및 Product 서비스 변경
apps/commerce-api/src/main/java/com/loopers/application/product/ProductFacade.java, apps/commerce-api/src/main/java/com/loopers/domain/product/ProductService.java, apps/commerce-api/src/main/java/com/loopers/domain/product/ProductRepository.java, apps/commerce-api/src/main/java/com/loopers/infrastructure/product/ProductRepositoryImpl.java, apps/commerce-api/src/main/java/com/loopers/infrastructure/product/ProductJpaRepository.java
ProductFacade에서 ProductViewedEvent 발행 제거, getProduct를 읽기 전용 트랜잭션으로 변경. 대량 조회 메서드(findByIds/getProductsByIds) 제거.
Ranking 시스템 전체 제거
apps/commerce-api/src/main/java/com/loopers/application/ranking/RankingFacade.java, apps/commerce-api/src/main/java/com/loopers/application/ranking/RankingInfo.java, apps/commerce-api/src/main/java/com/loopers/application/ranking/RankingDetailInfo.java, apps/commerce-api/src/main/java/com/loopers/domain/ranking/ProductRankingInfo.java, apps/commerce-api/src/main/java/com/loopers/domain/ranking/ProductRankingRepository.java, apps/commerce-api/src/main/java/com/loopers/infrastructure/ranking/ProductRankingRedisRepository.java
상품 순위 조회, 캐싱, Redis 기반 저장소 로직 전체 제거. 순위 정보 DTO 및 데이터 구조 삭제.
Ranking API 엔드포인트 제거
apps/commerce-api/src/main/java/com/loopers/interfaces/api/ranking/RankingV1ApiSpec.java, apps/commerce-api/src/main/java/com/loopers/interfaces/api/ranking/RankingV1Controller.java, apps/commerce-api/src/main/java/com/loopers/interfaces/api/ranking/RankingV1Dto.java
GET /api/v1/rankings 엔드포인트 및 관련 스펙, 컨트롤러, DTO 삭제.
Product API 응답 수정
apps/commerce-api/src/main/java/com/loopers/interfaces/api/product/ProductV1Controller.java, apps/commerce-api/src/main/java/com/loopers/interfaces/api/product/ProductV1Dto.java
ProductV1Controller에서 RankingFacade 의존성 제거. ProductDetailResponse에서 ranking 필드 제거, 해당 팩토리 메서드 시그니처 변경.
캐시 처리 변경
apps/commerce-api/src/main/java/com/loopers/application/product/ProductCacheEvictListener.java
ProductRankingRepository 의존성 제거, ranking 캐시 무효화 로직 삭제.
Streamer 애플리케이션 순위 제거
apps/commerce-streamer/src/main/java/com/loopers/application/MetricsService.java, apps/commerce-streamer/src/main/java/com/loopers/application/RankingService.java, apps/commerce-streamer/src/main/java/com/loopers/application/ScoreCarryOverScheduler.java, apps/commerce-streamer/src/main/java/com/loopers/domain/ranking/RankingRepository.java, apps/commerce-streamer/src/main/java/com/loopers/domain/ranking/RankingWeight.java, apps/commerce-streamer/src/main/java/com/loopers/infrastructure/ranking/RankingRedisRepository.java, apps/commerce-streamer/src/main/java/com/loopers/CommerceStreamerApplication.java
이벤트 기반 순위 점수 계산 및 매일 자정의 점수 이월 스케줄러 제거. @EnableScheduling 제거.
API 테스트 제거
apps/commerce-api/src/test/java/com/loopers/application/kafka/OutboxEventRecorderTest.java, apps/commerce-api/src/test/java/com/loopers/application/product/ProductCacheEvictListenerTest.java, apps/commerce-api/src/test/java/com/loopers/application/product/ProductFacadeTest.java, apps/commerce-api/src/test/java/com/loopers/application/ranking/RankingFacadeTest.java, apps/commerce-api/src/test/java/com/loopers/infrastructure/ranking/ProductRankingRedisRepositoryTest.java, apps/commerce-api/src/test/java/com/loopers/interfaces/api/ranking/RankingV1ApiE2ETest.java
ProductViewedEvent 및 순위 관련 테스트 케이스 제거. 캐시 무효화 테스트에서 ranking 저장소 검증 제거.
Streamer 애플리케이션 테스트 제거
apps/commerce-streamer/src/test/java/com/loopers/application/MetricsServiceTest.java, apps/commerce-streamer/src/test/java/com/loopers/application/RankingServiceTest.java, apps/commerce-streamer/src/test/java/com/loopers/application/ScoreCarryOverSchedulerTest.java, apps/commerce-streamer/src/test/java/com/loopers/domain/ranking/RankingWeightTest.java, apps/commerce-streamer/src/test/java/com/loopers/infrastructure/ranking/RankingRedisRepositoryTest.java
순위 점수 계산 및 이월 관련 단위 테스트 제거.
HTTP 요청 파일 제거
http/ranking-v1.http
순위 API 엔드포인트 테스트 요청 파일 삭제.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 분

Possibly related PRs

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

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