Conversation
[HSC-65] feat: 상품 조회 Web 계층 (api 응답 dto, mapper, controller)
[HCR-64] feat: 회원 & 상품 관련 스키마 설계 및 JPA 엔티티 매핑
[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 배치 엔드포인트 추가
[HCR-425] Hotfix/hsc 425
There was a problem hiding this comment.
Code Review
이번 PR은 지역별 통계 조회를 위한 Caffeine 캐시 도입과 사용자 로그의 안정적인 전송을 위한 아웃박스(Outbox) 패턴 및 배치 처리 로직을 구현합니다. AdminRegionalTopPlanDao의 jOOQ 쿼리 최적화와 추천 로직의 UseCase 분리가 포함되었습니다. 리뷰 피드백으로는 관리자 API 엔드포인트 명명 규칙 준수, 하드코딩된 타임존 상수의 shared 패키지 공통화, 카프카 컨슈머의 과도한 로그 레벨 변경, 그리고 application.yaml에서 의도치 않게 주석 처리된 로깅 설정 복구를 요청했습니다.
| return ResponseEntity.accepted().build(); | ||
| } | ||
|
|
||
| @PostMapping("/batch") |
There was a problem hiding this comment.
프로젝트 아키텍처 규칙(Rule 36) 및 일반 규칙에 따라 Admin API 엔드포인트는 반드시 /api/admin/... 경로를 포함해야 하며, 버전 정보가 앞에 와야 합니다 (/api/{version}/admin/...). 현재 클래스의 베이스 경로(/internal/v1/log-features)가 이 규칙을 위반하고 있으므로 수정이 필요합니다.
References
- Admin 엔드포인트는 @Profile("admin")과 @RequestMapping("/api/admin/...")을 가져야 함 (link)
| @RequiredArgsConstructor | ||
| public class UserLogAdminDispatchOutboxService { | ||
|
|
||
| private static final ZoneId BASE_DATE_ZONE = ZoneId.of("Asia/Seoul"); |
There was a problem hiding this comment.
시간대 설정(Asia/Seoul)이 HandleLogFeatureUseCase 등 여러 클래스에서 중복되어 하드코딩되어 있습니다. 아키텍처 규칙(Rule 27)에 따라 공통 상수는 shared 패키지로 추출하여 관리하는 것이 유지보수 측면에서 바람직합니다.
References
- 공통 유틸리티는 shared 또는 shared.domain에 위치해야 함 (link)
| log.info( | ||
| "[REC][trace_id={}][member_id={}] stage={} elapsed_ms={} topic={} offset={}", | ||
| traceId, "unknown", "received", elapsedMs(consumeStartedAt), topic, offset | ||
| ); |
| #logging: | ||
| # level: | ||
| # root: WARN | ||
| # ACCESS_LOG: INFO | ||
| # structured: | ||
| # format: | ||
| # console: logstash | ||
| # json: | ||
| # stacktrace: | ||
| # max-length: 5000 | ||
| # include-common-frames: true | ||
| # include-hashes: true |
🧪 Test Coverage Report (JaCoCo)
Package line spark (sample): 📦 Package coverage (worst 10)
🧨 Lowest coverage classes (worst 10)
🧩 Changed files coverage breakdown (24 files)
🔎 HTML 리포트: Actions → Artifacts → |
📝작업 내용
👀변경 사항
🎫 Jira Ticket
#️⃣관련 이슈