Skip to content

Spm 467#53

Merged
vivivim merged 7 commits intomainfrom
SPM-467
Nov 10, 2025
Merged

Spm 467#53
vivivim merged 7 commits intomainfrom
SPM-467

Conversation

@vivivim
Copy link
Contributor

@vivivim vivivim commented Nov 10, 2025

📝 Summary

rop 재주문점 도달 시 발주 넣을 때 복잡도 낮은 부품만 주문하는 것으로 변경.
주문 시 기준 수량에 맞춰서 주문합니다.

🙏 Question & PR point

📬 Reference

Summary by CodeRabbit

릴리스 노트

  • New Features

    • 자재 명세서(BOM) 관리 추가 — 생성 및 업데이트 이벤트 기반 처리 지원
    • 이벤트 페이로드 매핑 확장 — BOM 관련 이벤트 타입 추가
  • Refactor

    • 이벤트 소비자 및 페이로드 처리 중앙화 및 안정성 향상
    • 재고 발주 계산 로직 개선 — 표준 수량 기반 보정 및 최소 발주 적용
    • 저장소 구성 정리 및 빈 등록 명시화

Admin added 2 commits November 10, 2025 17:40
재주문 점 도달 시 복잡도가 높은 부품은 제외하고 주문한다
@coderabbitai
Copy link

coderabbitai bot commented Nov 10, 2025

Warning

Rate limit exceeded

@vivivim has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 14 minutes and 14 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between ea8d6d6 and a7cc1db.

📒 Files selected for processing (15)
  • src/main/java/com/sampoom/backend/api/bom/event/BomEventConsumer.java (1 hunks)
  • src/main/java/com/sampoom/backend/api/branch/event/BranchEventConsumer.java (3 hunks)
  • src/main/java/com/sampoom/backend/api/branch/repository/AWDistanceRepository.java (1 hunks)
  • src/main/java/com/sampoom/backend/api/event/service/EventPayloadMapper.java (2 hunks)
  • src/main/java/com/sampoom/backend/api/event/service/EventService.java (2 hunks)
  • src/main/java/com/sampoom/backend/api/inventory/event/ForecastEventConsumer.java (1 hunks)
  • src/main/java/com/sampoom/backend/api/order/dto/OrderReqDto.java (1 hunks)
  • src/main/java/com/sampoom/backend/api/order/dto/OrderStatusEvent.java (1 hunks)
  • src/main/java/com/sampoom/backend/api/order/dto/OrderWarehouseEvent.java (1 hunks)
  • src/main/java/com/sampoom/backend/api/order/event/PurchaseEventConsumer.java (1 hunks)
  • src/main/java/com/sampoom/backend/api/order/event/SalesEventConsumer.java (1 hunks)
  • src/main/java/com/sampoom/backend/api/order/repository/PurchaseOrderRepository.java (1 hunks)
  • src/main/java/com/sampoom/backend/api/order/service/OrderService.java (4 hunks)
  • src/main/java/com/sampoom/backend/api/order/service/PurchaseOrderService.java (4 hunks)
  • src/main/java/com/sampoom/backend/api/part/event/PartEventConsumer.java (2 hunks)

요약

이 풀 리퀘스트는 BOM(Bill of Materials) 도메인 모델을 도입하고 이벤트 인프라를 리팩토링합니다. BomPayload DTO, Bom JPA 엔티티, BomComplexity 열거형, 이벤트 컨슈머/서비스/저장소를 추가하고 Event 및 EventPayloadMapper의 패키지를 이동하여 여러 컨슈머의 임포트를 업데이트합니다. ROP 조회 쿼리와 인벤토리 주문 수량 로직도 확장되었습니다.

Walkthrough

BOM 도메인(엔티티/DTO/레포/서비스/이벤트 컨슈머) 추가 및 이벤트 인프라 패키지 이동과 ROP 쿼리·인벤토리 주문 로직 확장이 이루어졌습니다.

Changes

코호트 / 파일(들) 변경 요약
BOM 도메인 모델
src/main/java/com/sampoom/backend/api/bom/dto/BomPayload.java, src/main/java/com/sampoom/backend/api/bom/entity/Bom.java, src/main/java/com/sampoom/backend/api/bom/entity/BomComplexity.java
BomPayload DTO 추가, Bom JPA 엔티티 추가(@Entity, @Id, 컬럼 제약 포함), BomComplexity enum(SIMPLE, NORMAL, COMPLEX) 추가
BOM 이벤트 및 비즈니스 로직
src/main/java/com/sampoom/backend/api/bom/event/BomEventConsumer.java, src/main/java/com/sampoom/backend/api/bom/service/BomService.java, src/main/java/com/sampoom/backend/api/bom/repository/BomRepository.java
Kafka 소비자 BomEventConsumer(메시지 파싱·eventType 해석), BomService(createBom/updateBom), BomRepository(JpaRepository 확장·findBomById) 추가
이벤트 인프라 이동 및 매핑 확장
src/main/java/com/sampoom/backend/api/event/entity/Event.java, src/main/java/com/sampoom/backend/api/event/service/EventPayloadMapper.java, src/main/java/com/sampoom/backend/api/event/service/EventService.java
Event 타입 패키지 변경, EventPayloadMapper 패키지 이동 및 "BomCreated"/"BomUpdated" → BomPayload 매핑 추가, EventService에 eventType/getEventFromType 유틸 추가
컨슈머/핸들러 임포트·흐름 변경
src/main/java/com/sampoom/backend/api/branch/event/BranchEventConsumer.java, src/main/java/com/sampoom/backend/api/inventory/event/ForecastEventConsumer.java, src/main/java/com/sampoom/backend/api/order/event/PurchaseEventConsumer.java, src/main/java/com/sampoom/backend/api/part/event/PartEventConsumer.java
기존 EventPayloadMapper 사용에서 EventService 기반의 eventType 검증·Event 인스턴스 생성 흐름으로 변경 및 관련 import/의존성 교체
리포지토리 어노테이션 추가
src/main/java/com/sampoom/backend/api/part/repository/CategoryRepository.java, src/main/java/com/sampoom/backend/api/part/repository/PartGroupRepository.java, src/main/java/com/sampoom/backend/api/part/repository/PartRepository.java
@Repository 애너테이션 추가 및 불필요한 import 정리
ROP 쿼리 및 인벤토리 로직 변경
src/main/java/com/sampoom/backend/api/rop/repository/RopQueryRepository.java, src/main/java/com/sampoom/backend/api/rop/repository/RopQueryRepositoryImpl.java, src/main/java/com/sampoom/backend/api/inventory/service/InventoryService.java
findActiveRopExcludingComplexParts 메서드 추가(LEFT JOIN BOM, COMPLEX 제외), 인벤토리 주문수량 계산 로직(표준수량 정렬·최소수량 보정) 변경

Sequence Diagram(s)

sequenceDiagram
    autonumber
    actor Kafka as Kafka<br/>(bom-events)
    participant Consumer as BomEventConsumer
    participant EventSvc as EventService / EventPayloadMapper
    participant Service as BomService
    participant Repo as BomRepository

    Kafka->>Consumer: JSON message
    activate Consumer
    Consumer->>EventSvc: getEventType(JsonNode)
    EventSvc-->>Consumer: eventType
    Consumer->>EventSvc: getEventFromType(eventType, message)
    EventSvc-->>Consumer: Event<BomPayload>
    Consumer->>Consumer: deserialize payload

    alt BomCreated
        Consumer->>Service: createBom(payload)
        activate Service
        Service->>Repo: findBomById(bomId)
        alt exists
            Service-->>Service: log & return
        else
            Service->>Repo: save(new Bom)
        end
        deactivate Service
    else BomUpdated
        Consumer->>Service: updateBom(payload)
        activate Service
        Service->>Repo: findBomById(bomId)
        alt found
            Service->>Repo: save(updated Bom)
        else
            Service-->>Service: log & return
        end
        deactivate Service
    else unknown
        Consumer-->>Consumer: log skip
    end
    deactivate Consumer
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~40 minutes

검토 시 주의 사항:

  • BomEventConsumer: 메시지 파싱, eventType 결정 로직, 예외 재발생(Retry/Kafka 오류 노출) 및 트랜잭션 범위 확인
  • BomService: 동시성(생성/업데이트 race), bomId vs partId 일관성 검증
  • RopQueryRepositoryImpl.findActiveRopExcludingComplexParts: 조인 조건, COMPLEX 필터링 정확성 및 쿼리 성능
  • InventoryService: orderQuantity 보정(표준수량 나눗셈/나머지 처리)과 최소수량 정책 일치 여부

Possibly related PRs

  • 33-Auto/Sampoom-Management-Backend-warehouse#33 — BomPayload/Bom 추가 및 이벤트 매핑·처리 관련 변경과 직접 연관
  • 33-Auto/Sampoom-Management-Backend-warehouse#38 — ROP 쿼리 및 관련 로직(ROP 조회/필터링) 변경과 코드 레벨 연관성 높음
  • 33-Auto/Sampoom-Management-Backend-warehouse#52 — EventPayloadMapper에 신규 페이로드 등록(이 PR의 BomPayload 등록과 유사) 관련

Suggested labels

ready-to-merge

Suggested reviewers

  • Sangyoon98
  • Lee-Jong-Jin
  • CHOOSLA
  • taemin3

Poem

🐰 BOM 씨앗 하나 폴짝 뛰었네,
이벤트 길 따라 소식 전하고,
쿼리는 복잡한 것 건너뛰며,
주문 수량은 반올림해 맞추고,
코드 밭에 당근처럼 뿌리 내렸네.

Pre-merge checks and finishing touches

❌ Failed checks (2 warnings)
Check name Status Explanation Resolution
Title check ⚠️ Warning PR 제목 'Spm 467'은 Jira 이슈 ID일 뿐 실제 변경사항의 핵심을 설명하지 못함. 제목을 'Add BOM entity and update order behavior based on complexity' 같이 주요 변경사항을 명확히 설명하는 형태로 변경하세요.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (1 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

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.

Copy link

@yangjiseonn yangjiseonn left a comment

Choose a reason for hiding this comment

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

확인했습니다!!!!

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 4

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
src/main/java/com/sampoom/backend/api/part/event/PartEventConsumer.java (1)

31-35: 알 수 없는 이벤트 유형에 대한 방어 로직 추가 필요

EventPayloadMapper가 아직 등록하지 않은 이벤트를 받으면 payloadClassnull이 되어 바로 아래 constructParametricType 호출에서 NPE가 발생하고 메시지 처리가 실패합니다. 최소한 null을 검사해 미등록 이벤트를 건너뛰도록 방어 로직을 추가해 주세요.

             String eventType = root.get("eventType").asText();
             Class<?> payloadClass = eventPayloadMapper.getPayloadClass(eventType);
+            if (payloadClass == null) {
+                log.info("⚠️ Unknown event type, skipping: {}", eventType);
+                return;
+            }
             Event<?> event = objectMapper.readValue(
src/main/java/com/sampoom/backend/api/inventory/event/ForecastEventConsumer.java (1)

24-34: 미등록 이벤트 타입 처리 누락으로 인한 NPE 위험

getPayloadClassnull을 반환하는 경우를 고려하지 않아 constructParametricType 호출에서 NPE가 발생할 수 있고, 이때 파티션 전체 처리가 중단됩니다. 미등록 이벤트는 로그만 남기고 건너뛰도록 해 주세요.

             String eventType = root.get("eventType").asText();
             Class<?> payloadClass = eventPayloadMapper.getPayloadClass(eventType);
+            if (payloadClass == null) {
+                log.info("⚠️ Unknown event type, skipping: {}", eventType);
+                return;
+            }
             Event<?> event = objectMapper.readValue(
🧹 Nitpick comments (5)
src/main/java/com/sampoom/backend/api/part/repository/PartGroupRepository.java (1)

6-6: JpaRepository 인터페이스에 @repository 어노테이션은 선택 사항입니다.

Spring Data JPA는 JpaRepository를 확장하는 인터페이스를 자동으로 감지하고 빈으로 등록하므로 @Repository 어노테이션이 기술적으로는 불필요합니다. 그러나 컴포넌트 역할을 명시적으로 선언하고 일관성을 유지하기 위한 스타일 선택으로 사용할 수 있으므로, 현재 상태로 유지해도 무방합니다.

Also applies to: 10-10

src/main/java/com/sampoom/backend/api/part/repository/PartRepository.java (1)

5-5: JpaRepository 인터페이스에 @repository 어노테이션은 선택 사항입니다.

Spring Data JPA가 JpaRepository 인터페이스를 자동으로 빈으로 등록하므로 @Repository 어노테이션이 기술적으로는 중복됩니다. 그러나 명시적인 선언을 통한 일관성 유지 측면에서 현재 상태로 유지 가능합니다.

Also applies to: 10-10

src/main/java/com/sampoom/backend/api/part/repository/CategoryRepository.java (2)

5-5: JpaRepository 인터페이스에 @repository 어노테이션은 선택 사항입니다.

Spring Data JPA가 자동으로 인터페이스를 감지하고 등록하므로 @Repository 어노테이션이 기술적으로는 불필요합니다. 다만 명시적 선언을 통한 팀 전체의 일관성 유지를 위한 것이라면 현재 상태로 유지 가능합니다.

Also applies to: 9-9


11-11: findAll() 메서드 선언은 중복입니다.

findAll() 메서드는 이미 JpaRepository 인터페이스에서 상속되므로 명시적으로 재선언할 필요가 없습니다. 제거해도 동일하게 동작합니다.

다음과 같이 제거할 수 있습니다:

 @Repository
 public interface CategoryRepository extends JpaRepository<Category, Long> {
-    List<Category> findAll();
 }
src/main/java/com/sampoom/backend/api/bom/event/BomEventConsumer.java (1)

55-57: 예외 로그에 스택트레이스를 포함해 주세요
현재는 e.getMessage()만 남겨서 원인 파악이 어려우니, 예외 객체를 그대로 전달해 스택트레이스를 남기는 편이 좋습니다.

-            log.error("❌ Failed to process bom event: {}, {}", message, e.getMessage());
+            log.error("❌ Failed to process bom event: {}", message, e);
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a95c6ac and 7ba096b.

📒 Files selected for processing (18)
  • src/main/java/com/sampoom/backend/api/bom/dto/BomPayload.java (1 hunks)
  • src/main/java/com/sampoom/backend/api/bom/entity/Bom.java (1 hunks)
  • src/main/java/com/sampoom/backend/api/bom/entity/BomComplexity.java (1 hunks)
  • src/main/java/com/sampoom/backend/api/bom/event/BomEventConsumer.java (1 hunks)
  • src/main/java/com/sampoom/backend/api/bom/repository/BomRepository.java (1 hunks)
  • src/main/java/com/sampoom/backend/api/bom/service/BomService.java (1 hunks)
  • src/main/java/com/sampoom/backend/api/branch/event/BranchEventConsumer.java (1 hunks)
  • src/main/java/com/sampoom/backend/api/event/entity/Event.java (1 hunks)
  • src/main/java/com/sampoom/backend/api/event/service/EventPayloadMapper.java (2 hunks)
  • src/main/java/com/sampoom/backend/api/inventory/event/ForecastEventConsumer.java (1 hunks)
  • src/main/java/com/sampoom/backend/api/inventory/service/InventoryService.java (3 hunks)
  • src/main/java/com/sampoom/backend/api/order/event/PurchaseEventConsumer.java (1 hunks)
  • src/main/java/com/sampoom/backend/api/part/event/PartEventConsumer.java (1 hunks)
  • src/main/java/com/sampoom/backend/api/part/repository/CategoryRepository.java (1 hunks)
  • src/main/java/com/sampoom/backend/api/part/repository/PartGroupRepository.java (1 hunks)
  • src/main/java/com/sampoom/backend/api/part/repository/PartRepository.java (1 hunks)
  • src/main/java/com/sampoom/backend/api/rop/repository/RopQueryRepository.java (1 hunks)
  • src/main/java/com/sampoom/backend/api/rop/repository/RopQueryRepositoryImpl.java (3 hunks)
🧰 Additional context used
🧬 Code graph analysis (7)
src/main/java/com/sampoom/backend/api/bom/event/BomEventConsumer.java (4)
src/main/java/com/sampoom/backend/api/bom/service/BomService.java (1)
  • Service (10-46)
src/main/java/com/sampoom/backend/api/branch/event/BranchEventConsumer.java (1)
  • Service (17-52)
src/main/java/com/sampoom/backend/api/inventory/event/ForecastEventConsumer.java (1)
  • Service (13-42)
src/main/java/com/sampoom/backend/api/part/event/PartEventConsumer.java (1)
  • Service (17-63)
src/main/java/com/sampoom/backend/api/bom/repository/BomRepository.java (1)
src/main/java/com/sampoom/backend/api/rop/repository/RopQueryRepositoryImpl.java (1)
  • Repository (24-108)
src/main/java/com/sampoom/backend/api/bom/dto/BomPayload.java (1)
src/main/java/com/sampoom/backend/api/event/entity/Event.java (1)
  • Getter (8-16)
src/main/java/com/sampoom/backend/api/bom/entity/Bom.java (2)
src/main/java/com/sampoom/backend/api/bom/dto/BomPayload.java (1)
  • Getter (10-20)
src/main/java/com/sampoom/backend/api/event/entity/Event.java (1)
  • Getter (8-16)
src/main/java/com/sampoom/backend/api/bom/service/BomService.java (1)
src/main/java/com/sampoom/backend/api/bom/event/BomEventConsumer.java (1)
  • Service (15-60)
src/main/java/com/sampoom/backend/api/part/repository/PartRepository.java (2)
src/main/java/com/sampoom/backend/api/rop/repository/RopQueryRepositoryImpl.java (1)
  • Repository (24-108)
src/main/java/com/sampoom/backend/api/order/repository/PurchaseOrderQueryRepositoryImpl.java (1)
  • Repository (21-96)
src/main/java/com/sampoom/backend/api/part/repository/CategoryRepository.java (1)
src/main/java/com/sampoom/backend/api/rop/repository/RopQueryRepositoryImpl.java (1)
  • Repository (24-108)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Analyze (java-kotlin)
🔇 Additional comments (9)
src/main/java/com/sampoom/backend/api/order/event/PurchaseEventConsumer.java (1)

1-54: 전체 파일이 주석 처리되어 있어 기능적 영향 없음

파일 전체가 주석 처리되어 있으며, 변경 사항은 import 경로 업데이트만 포함하고 있습니다. 런타임 동작에는 영향이 없습니다.

src/main/java/com/sampoom/backend/api/bom/entity/BomComplexity.java (1)

3-7: 잘 정의된 enum입니다

BOM 복잡도를 명확하게 표현하는 enum이며, 한글 주석으로 가독성이 좋습니다.

src/main/java/com/sampoom/backend/api/branch/event/BranchEventConsumer.java (1)

9-10: Import 경로 업데이트 확인

패키지 리팩토링에 따른 import 경로 변경이며, 기능적 변경 사항은 없습니다.

src/main/java/com/sampoom/backend/api/rop/repository/RopQueryRepository.java (1)

14-14: 새로운 쿼리 메서드 선언 확인

메서드명이 명확하며, PR 목표인 복잡도 기반 부품 필터링을 위한 쿼리 메서드입니다. 구현은 RopQueryRepositoryImpl에서 확인됩니다.

src/main/java/com/sampoom/backend/api/event/entity/Event.java (1)

1-16: 이벤트 클래스 패키지 리팩토링 확인

Event 클래스가 전용 이벤트 패키지로 이동되었으며, 불필요한 Lombok 생성자 어노테이션이 제거되었습니다. 기능적 변경은 없습니다.

src/main/java/com/sampoom/backend/api/bom/dto/BomPayload.java (1)

14-20: BomPayload DTO 구조 확인

BOM 이벤트를 위한 표준 DTO 구조입니다. 모든 필드가 nullable이므로 서비스 레이어에서 적절한 검증이 필요할 수 있습니다.

src/main/java/com/sampoom/backend/api/rop/repository/RopQueryRepositoryImpl.java (1)

31-31: QueryDSL QBom 필드 선언 확인

BOM 조인을 위한 표준 QueryDSL 패턴입니다.

src/main/java/com/sampoom/backend/api/inventory/service/InventoryService.java (2)

14-14: Import 경로 업데이트 확인

Event 클래스의 패키지 이동에 따른 import 경로 변경입니다.


216-220: 복잡도 기반 부품 필터링 적용 확인

PR 목표에 따라 ROP 도달 시 낮은 복잡도의 부품만 주문하도록 findActiveRopExcludingComplexParts 메서드를 사용하고 있습니다. 변경 사항이 요구사항과 일치합니다.

Admin added 2 commits November 10, 2025 18:10
part_id unique, 주문 수량 예외처리
파싱 로직 리팩토링 조금
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 5

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
src/main/java/com/sampoom/backend/api/branch/event/BranchEventConsumer.java (1)

44-48: 로그 메시지를 수정하세요.

로그 메시지에 "partCreated saved"라고 되어 있지만 "branchCreated saved"로 수정해야 합니다. 복사-붙여넣기 오류로 보입니다.

-                log.info("✅ partCreated saved: {}", payload.getBranchName());
+                log.info("✅ branchCreated saved: {}", payload.getBranchName());
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ce88306 and ea8d6d6.

📒 Files selected for processing (6)
  • src/main/java/com/sampoom/backend/api/bom/event/BomEventConsumer.java (1 hunks)
  • src/main/java/com/sampoom/backend/api/branch/event/BranchEventConsumer.java (3 hunks)
  • src/main/java/com/sampoom/backend/api/event/service/EventService.java (3 hunks)
  • src/main/java/com/sampoom/backend/api/inventory/event/ForecastEventConsumer.java (1 hunks)
  • src/main/java/com/sampoom/backend/api/order/event/PurchaseEventConsumer.java (1 hunks)
  • src/main/java/com/sampoom/backend/api/part/event/PartEventConsumer.java (2 hunks)
🧰 Additional context used
🧬 Code graph analysis (3)
src/main/java/com/sampoom/backend/api/order/event/PurchaseEventConsumer.java (2)
src/main/java/com/sampoom/backend/api/event/service/EventService.java (1)
  • Service (15-60)
src/main/java/com/sampoom/backend/api/order/service/PurchaseOrderService.java (1)
  • Service (35-193)
src/main/java/com/sampoom/backend/api/bom/event/BomEventConsumer.java (2)
src/main/java/com/sampoom/backend/api/event/service/EventService.java (1)
  • Service (15-60)
src/main/java/com/sampoom/backend/api/bom/service/BomService.java (1)
  • Service (10-46)
src/main/java/com/sampoom/backend/api/inventory/event/ForecastEventConsumer.java (2)
src/main/java/com/sampoom/backend/api/event/service/EventService.java (1)
  • Service (15-60)
src/main/java/com/sampoom/backend/api/inventory/service/InventoryService.java (1)
  • Service (40-344)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Analyze (java-kotlin)
🔇 Additional comments (3)
src/main/java/com/sampoom/backend/api/branch/event/BranchEventConsumer.java (3)

23-23: LGTM!

EventPayloadMapper에서 EventService로의 의존성 전환이 적절하게 이루어졌습니다.


38-42: LGTM!

Event 객체 생성 후 null 체크와 로깅 처리가 적절하게 구현되었습니다. 방어적 코딩 패턴이 잘 적용되었습니다.


32-36: 원본 review comment는 잘못되었습니다.

eventService.getEventType()의 메서드 시그니처를 확인한 결과, public String getEventType(JsonNode jsonNode)로 이미 JsonNode를 parameter로 받도록 설계되어 있습니다. 따라서 root.get("eventType")에서 .asText() 호출이 필요하지 않습니다. 현재 코드는 정확하게 구현되어 있으며, null/empty 체크 로직도 적절합니다.

Likely an incorrect or invalid review comment.

Admin added 3 commits November 10, 2025 22:33
이벤트 매개변 수 에러 수정
주문 이벤트 페이로드에 주문 아이디 추가
getter가 있어야 직렬화 가능
@vivivim vivivim merged commit 2f25430 into main Nov 10, 2025
5 checks passed
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.

2 participants