Skip to content

[HCR-420] v1.7.3#274

Merged
rettooo merged 4 commits into
mainfrom
hotfix/HSC-420
Mar 31, 2026
Merged

[HCR-420] v1.7.3#274
rettooo merged 4 commits into
mainfrom
hotfix/HSC-420

Conversation

@rettooo
Copy link
Copy Markdown
Contributor

@rettooo rettooo commented Mar 31, 2026

📝작업 내용


👀변경 사항


🎫 Jira Ticket

  • Jira Ticket: HCR-420

#️⃣관련 이슈


tkv00 and others added 4 commits March 28, 2026 15:02
[HSC-416] customer 런타임 async executor 등록 경로 고정
Recommendation Kafka Consumer의 비즈니스 오케스트레이션을 UseCase로 이동해 레이어 책임을 분리하고, trace_id 기반 단계 로그와 테스트를 정비해 운영 추적성을 강화한다.

Made-with: Cursor
@rettooo rettooo added 🗂️ area: BE 백엔드 영역 🚑 hotfix 프로덕션 긴급 수정(우회/긴급 패치 포함) 🔥 priority: P0 즉시 처리 필요(서비스/데모 블로커) 🏷️ release 릴리즈 준비/버전 태깅/릴리즈 노트/릴리즈 브랜치 작업 release:patch 버전 patch bump: X.Y.(Z+1) labels Mar 31, 2026
@github-actions github-actions Bot added the deploy:api-server 배포 대상: customer-api label Mar 31, 2026
@github-actions github-actions Bot changed the title v1.7.3 [HCR-420] v1.7.3 Mar 31, 2026
@rettooo rettooo added the 🚀 deploy 배포/런칭 작업(배포 스크립트, 환경 배포, 롤백 포함) label Mar 31, 2026
Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

이번 풀 리퀘스트는 추천 시스템의 Kafka 소비 로직을 RecommendationKafkaConsumeUseCase로 이관하고, 여러 서비스 및 설정 클래스에서 수동으로 관리하던 Micrometer 메트릭 코드를 제거하여 구조를 단순화했습니다. 또한 Kafka 메시지에 traceId를 추가하고 상세 로깅을 도입하여 추적성을 높였습니다. 리뷰 과정에서 RecommendationKafkaConfig의 빈 등록 시 RuntimeModule 전략을 통한 활성화 체크가 누락되어 아키텍처 규칙(Rule 58)을 위반한 점이 지적되었습니다.

@@ -35,16 +33,12 @@ public ConcurrentKafkaListenerContainerFactory<String, String> recommendationKaf
@Bean
public RecommendationKafkaConsumer recommendationKafkaConsumer(
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

🛡️ Code Review Report

1. 🔍 요약 (Summary)

추천 시스템의 Kafka 연동 로직 리팩토링 및 모니터링 코드 정리를 수행하였습니다. 아키텍처 규칙 준수 및 비동기 작업의 안정성 확보를 위한 개선이 필요합니다.

2. 🛑 Blocking Issues (Must Fix)

  • [위반 규칙]: Infrastructure Layer Registration (Rule 58)
  • [위치]: RecommendationKafkaConfig.java (Line 34)
  • [문제 이유]: 아키텍처 규칙에 따라 모든 인프라 어댑터는 RuntimeModule ENUM 전략을 통해 명시적으로 활성화 여부를 체크해야 합니다. 현재 RecommendationKafkaConsumer 빈 등록 시 해당 모듈이 활성화되어 있는지 확인하는 로직이 누락되었습니다. 이는 시스템의 모듈별 제어 능력을 저하시키는 BLOCKER 이슈입니다.
  • [해결 제안]: RuntimeModule을 사용하여 해당 모듈이 활성화된 경우에만 빈이 생성되도록 수정하세요.
References
  1. 인프라 어댑터 등록 시 RuntimeModule ENUM 전략을 통해 활성화 여부를 체크해야 함 (Rule 58) (link)

@github-actions
Copy link
Copy Markdown

🧪 Test Coverage Report (JaCoCo)

overall__line overall__branch changed__line changed__branch

기준(soft, workflow는 실패 안 함): Overall line 70% / branch 50%, Changed line 80% / branch 60% · Generated: 2026-03-31 05:56 UTC

Scope Line Branch Line Graph Branch Graph Verdict
Overall 40.6% 29.4% ████████░░░░░░░░░░░░ ██████░░░░░░░░░░░░░░ ⚠️⚠️
Changed 18.3% 8.1% ████░░░░░░░░░░░░░░░░ ██░░░░░░░░░░░░░░░░░░ ⚠️⚠️

Package line spark (sample): ▃▂▁▂▂▄▄·▇█▁▆▆▆·▆▁▁▆█▇▃▁▁▁██▁▁▃
Package branch spark (sample): ▃▁·▁▁·▁·▇··▅▆▅·▅▁▁▅▇▇▂▁·▁·█▁▁▁

📦 Package coverage (worst 10)

Rank Package Line Branch Lines Line Graph Branch Graph
1 site.holliverse.shared.monitoring 0.0% N/A 76 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
2 site.holliverse.customer.application.usecase.log 0.0% 0.0% 69 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
3 site.holliverse.customer.coupon.application 0.0% 0.0% 61 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
4 site.holliverse.infra.kafka.consumer 0.0% 0.0% 44 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
5 site.holliverse.customer.integration.fastapi 0.0% 0.0% 28 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
6 site.holliverse.customer.integration.external 0.0% 0.0% 28 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
7 site.holliverse.customer.application.usecase.counsel 0.0% 0.0% 14 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
8 site.holliverse.customer.coupon.web 0.0% 0.0% 12 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
9 site.holliverse.shared.config.runtime 0.0% N/A 11 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
10 site.holliverse.customer.web.util 0.0% 0.0% 8 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░

🧨 Lowest coverage classes (worst 10)

Rank Class Line Branch Lines Line Graph Branch Graph
1 site.holliverse.customer.application.usecase.log.UserLogService 0.0% 0.0% 52 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
2 site.holliverse.shared.monitoring.CustomerMetrics 0.0% N/A 50 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
3 site.holliverse.infra.kafka.consumer.RecommendationKafkaConsumer 0.0% 0.0% 44 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
4 site.holliverse.customer.application.usecase.recommendation.RecommendationKafkaConsumeUseCase 0.0% 0.0% 42 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
5 site.holliverse.admin.application.usecase.CalculateLogChurnScoreService 0.0% 0.0% 38 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
6 site.holliverse.admin.application.usecase.CalculateChurnScoreService 0.0% 0.0% 37 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
7 site.holliverse.customer.coupon.application.UseMemberCouponUseCase 0.0% 0.0% 34 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
8 site.holliverse.admin.application.usecase.ChurnRiskReason$ReasonCode 0.0% 0.0% 31 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
9 site.holliverse.customer.integration.fastapi.FastApiRecommendationClient 0.0% 0.0% 28 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
10 site.holliverse.customer.integration.external.AdminLogFeaturesClient 0.0% 0.0% 28 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
🧩 Changed files coverage breakdown (12 files)
File Line Branch Lines Verdict Line Graph Branch Graph
src/main/java/site/holliverse/customer/application/usecase/log/UserLogService.java 0.0% 0.0% 52 ⚠️⚠️ ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
src/main/java/site/holliverse/customer/application/usecase/recommendation/RecommendationKafkaConsumeUseCase.java 0.0% 0.0% 42 ⚠️⚠️ ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
src/main/java/site/holliverse/customer/application/usecase/recommendation/RecommendationPendingFutureRegistry.java 0.0% N/A 5 ⚠️ ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
src/main/java/site/holliverse/infra/kafka/consumer/RecommendationKafkaConsumer.java 0.0% 0.0% 44 ⚠️⚠️ ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
src/main/java/site/holliverse/customer/application/usecase/recommendation/RecommendationService.java 50.6% 25.0% 81 ⚠️⚠️ ██████████░░░░░░░░░░ █████░░░░░░░░░░░░░░░
src/main/java/site/holliverse/admin/config/SolapiConfig.java N/A N/A 0 ✅✅ ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
src/main/java/site/holliverse/customer/config/AdminLogFeaturesConfig.java N/A N/A 0 ✅✅ ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
src/main/java/site/holliverse/customer/config/FastApiConfig.java N/A N/A 0 ✅✅ ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
src/main/java/site/holliverse/customer/integration/kafka/dto/RecommendationMessagePayload.java N/A N/A 0 ✅✅ ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
src/main/java/site/holliverse/infra/kafka/config/RecommendationKafkaConfig.java N/A N/A 0 ✅✅ ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
src/main/java/site/holliverse/shared/monitoring/OperationMonitoringAspect.java N/A N/A 0 ✅✅ ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
src/main/java/site/holliverse/shared/monitoring/http/ObservedRestTemplateInterceptor.java N/A N/A 0 ✅✅ ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░

🔎 HTML 리포트: Actions → Artifacts → jacoco-html · XML: jacoco-xml

@rettooo rettooo merged commit ebd1090 into main Mar 31, 2026
11 of 17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🗂️ area: BE 백엔드 영역 deploy:api-server 배포 대상: customer-api 🚀 deploy 배포/런칭 작업(배포 스크립트, 환경 배포, 롤백 포함) 🚑 hotfix 프로덕션 긴급 수정(우회/긴급 패치 포함) 🔥 priority: P0 즉시 처리 필요(서비스/데모 블로커) release:patch 버전 patch bump: X.Y.(Z+1) 🏷️ release 릴리즈 준비/버전 태깅/릴리즈 노트/릴리즈 브랜치 작업

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants