Skip to content

Main#288

Closed
bon0512 wants to merge 344 commits into
devfrom
main
Closed

Main#288
bon0512 wants to merge 344 commits into
devfrom
main

Conversation

@bon0512
Copy link
Copy Markdown
Contributor

@bon0512 bon0512 commented Apr 3, 2026

📝작업 내용


👀변경 사항


🎫 Jira Ticket

  • Jira Ticket: HCR-

#️⃣관련 이슈

  • closes #

YeongHyeonHeo and others added 30 commits February 15, 2026 19:37
[HSC-65] feat: 상품 조회 Web 계층 (api 응답 dto, mapper, controller)
[HCR-64] feat: 회원 & 상품 관련 스키마 설계 및 JPA 엔티티 매핑
tkv00 and others added 27 commits April 1, 2026 10:17
[HSC-423] admin log-feature dispatch rejection 정책 변경 및 reject 계측 추가
[HSC-424] user-log admin dispatch outbox 저장 및 재처리 경로 구성
[HSC-424] user-log admin dispatch 아웃박스 적재 경량화 및 재시도 완화
[HSC-424] 로그 feature dispatch 날짜 및 enum 매핑 보완
[HSC-424] 로그 outbox 서비스 컴파일 오류 정리
[HSC-424] 로그 feature 배치 엔드포인트 추가
@bon0512 bon0512 closed this Apr 3, 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

이번 PR은 지역별 통계 조회를 위한 Caffeine 캐시 도입과 사용자 로그의 안정적인 전송을 위한 아웃박스(Outbox) 패턴 및 배치 처리 로직을 구현합니다. AdminRegionalTopPlanDao의 jOOQ 쿼리 최적화와 추천 로직의 UseCase 분리가 포함되었습니다. 리뷰 피드백으로는 관리자 API 엔드포인트 명명 규칙 준수, 하드코딩된 타임존 상수의 shared 패키지 공통화, 카프카 컨슈머의 과도한 로그 레벨 변경, 그리고 application.yaml에서 의도치 않게 주석 처리된 로깅 설정 복구를 요청했습니다.

return ResponseEntity.accepted().build();
}

@PostMapping("/batch")
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

프로젝트 아키텍처 규칙(Rule 36) 및 일반 규칙에 따라 Admin API 엔드포인트는 반드시 /api/admin/... 경로를 포함해야 하며, 버전 정보가 앞에 와야 합니다 (/api/{version}/admin/...). 현재 클래스의 베이스 경로(/internal/v1/log-features)가 이 규칙을 위반하고 있으므로 수정이 필요합니다.

References
  1. Admin 엔드포인트는 @Profile("admin")과 @RequestMapping("/api/admin/...")을 가져야 함 (link)

@RequiredArgsConstructor
public class UserLogAdminDispatchOutboxService {

private static final ZoneId BASE_DATE_ZONE = ZoneId.of("Asia/Seoul");
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

시간대 설정(Asia/Seoul)이 HandleLogFeatureUseCase 등 여러 클래스에서 중복되어 하드코딩되어 있습니다. 아키텍처 규칙(Rule 27)에 따라 공통 상수는 shared 패키지로 추출하여 관리하는 것이 유지보수 측면에서 바람직합니다.

References
  1. 공통 유틸리티는 shared 또는 shared.domain에 위치해야 함 (link)

Comment on lines +45 to +48
log.info(
"[REC][trace_id={}][member_id={}] stage={} elapsed_ms={} topic={} offset={}",
traceId, "unknown", "received", elapsedMs(consumeStartedAt), topic, offset
);
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

Kafka 컨슈머에서 메시지 처리 단계별로 info 레벨 로그를 과도하게 출력하고 있습니다. 처리량이 많은 환경에서는 성능 저하 및 로그 저장 비용 증가를 초래할 수 있습니다. 상세 추적 로그는 debug 레벨로 변경하거나, 처리가 완료된 시점에 하나의 통합된 로그를 남기는 방식을 권장합니다.

Comment on lines +108 to +119
#logging:
# level:
# root: WARN
# ACCESS_LOG: INFO
# structured:
# format:
# console: logstash
# json:
# stacktrace:
# max-length: 5000
# include-common-frames: true
# include-hashes: true
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

logging 설정이 주석 처리되어 있습니다. 이로 인해 운영 환경에서 구조화된 로그 형식이 적용되지 않거나 로그 레벨 제어가 어려워질 수 있습니다. 의도된 변경이 아니라면 주석을 해제해야 합니다.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 3, 2026

🧪 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-04-03 18:42 UTC

Scope Line Branch Line Graph Branch Graph Verdict
Overall 39.0% 28.2% ████████░░░░░░░░░░░░ ██████░░░░░░░░░░░░░░ ⚠️⚠️
Changed 10.5% 7.7% ██░░░░░░░░░░░░░░░░░░ ██░░░░░░░░░░░░░░░░░░ ⚠️⚠️

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 125 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
2 site.holliverse.customer.coupon.application 0.0% 0.0% 61 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
3 site.holliverse.infra.kafka.consumer 0.0% 0.0% 44 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
4 site.holliverse.customer.integration.fastapi 0.0% 0.0% 28 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
5 site.holliverse.customer.application.usecase.counsel 0.0% 0.0% 14 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
6 site.holliverse.customer.coupon.web 0.0% 0.0% 12 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
7 site.holliverse.shared.config.runtime 0.0% N/A 11 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
8 site.holliverse.customer.web.util 0.0% 0.0% 8 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
9 site.holliverse.auth.handler 0.0% N/A 8 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
10 site.holliverse.admin.domain.model.churn.feature 0.0% N/A 8 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░

🧨 Lowest coverage classes (worst 10)

Rank Class Line Branch Lines Line Graph Branch Graph
1 site.holliverse.shared.monitoring.CustomerMetrics 0.0% N/A 98 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
2 site.holliverse.customer.application.usecase.log.UserLogService 0.0% 0.0% 62 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
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.shared.monitoring.CustomerMonitoringBinder 0.0% N/A 27 ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
🧩 Changed files coverage breakdown (24 files)
File Line Branch Lines Verdict Line Graph Branch Graph
src/main/java/site/holliverse/admin/application/usecase/RetrieveRegionalTopPlanUseCase.java 0.0% 0.0% 19 ⚠️⚠️ ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
src/main/java/site/holliverse/customer/application/usecase/log/UserLogAdminDispatchScheduler.java 0.0% N/A 2 ⚠️ ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
src/main/java/site/holliverse/customer/application/usecase/log/UserLogService.java 0.0% 0.0% 62 ⚠️⚠️ ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
src/main/java/site/holliverse/customer/application/usecase/recommendation/RecommendationKafkaConsumeUseCase.java 0.0% 0.0% 42 ⚠️⚠️ ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
src/main/java/site/holliverse/customer/persistence/entity/UserLogAdminDispatchOutbox.java 0.0% N/A 17 ⚠️ ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
src/main/java/site/holliverse/infra/kafka/consumer/RecommendationKafkaConsumer.java 0.0% 0.0% 44 ⚠️⚠️ ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
src/main/java/site/holliverse/shared/monitoring/CustomerMetrics.java 0.0% N/A 98 ⚠️ ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
src/main/java/site/holliverse/shared/monitoring/CustomerMonitoringBinder.java 0.0% N/A 27 ⚠️ ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
src/main/java/site/holliverse/customer/application/usecase/log/UserLogAdminDispatchOutboxStateService.java 2.0% 0.0% 51 ⚠️⚠️ ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
src/main/java/site/holliverse/customer/integration/external/AdminLogFeaturesClient.java 3.8% 0.0% 53 ⚠️⚠️ █░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
src/main/java/site/holliverse/admin/application/usecase/HandleLogFeatureUseCase.java 6.7% N/A 15 ⚠️ █░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
src/main/java/site/holliverse/customer/application/usecase/log/UserLogAdminDispatchOutboxService.java 26.9% 16.7% 78 ⚠️⚠️ █████░░░░░░░░░░░░░░░ ███░░░░░░░░░░░░░░░░░
src/main/java/site/holliverse/customer/application/usecase/log/AdminLogFeatureDispatchService.java 87.5% 66.7% 24 ✅✅ ██████████████████░░ █████████████░░░░░░░
src/main/java/site/holliverse/admin/application/usecase/RetrieveRegionalMetricUseCase.java 100.0% N/A 1 ✅✅ ████████████████████ ░░░░░░░░░░░░░░░░░░░░
src/main/java/site/holliverse/admin/web/controller/InternalLogFeatureController.java 100.0% N/A 4 ✅✅ ████████████████████ ░░░░░░░░░░░░░░░░░░░░
src/main/java/site/holliverse/customer/persistence/entity/UserLogDispatchStatus.java 100.0% N/A 6 ✅✅ ████████████████████ ░░░░░░░░░░░░░░░░░░░░
src/main/java/site/holliverse/HolliverseApplication.java N/A N/A 0 ✅✅ ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
src/main/java/site/holliverse/admin/query/dao/AdminRegionalTopPlanDao.java N/A N/A 0 ✅✅ ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
src/main/java/site/holliverse/customer/config/AdminLogFeaturesProperties.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/customer/persistence/repository/UserLogAdminDispatchOutboxRepository.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/config/cache/CacheConfig.java N/A N/A 0 ✅✅ ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
src/main/java/site/holliverse/shared/config/runtime/CustomerRuntimeInfraConfiguration.java N/A N/A 0 ✅✅ ░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░

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

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.

4 participants