Conversation
개요이 PR은 BOM 및 Part 도메인의 비용 계산 로직을 리팩토링하고 재계산 기능을 추가합니다. 주요 변경 사항은 수량 필드 타입을 Long에서 Double로 변경하고, Part에 변경 사항
예상 코드 리뷰 노력🎯 3 (중간) | ⏱️ ~25분 주의 깊게 검토해야 할 사항:
관련 PR
제안 라벨
제안 검토자
축제의 시 🐰
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
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/bom/dto/BomDetailResponseDTO.java (1)
45-58: 상세 응답에서도 소수 수량이 사라짐
Optional.ofNullable(material.getQuantity()).orElse(0.0).longValue()때문에 소수부가 버려져 총액이 줄어듭니다. Double 값을 그대로 곱한 뒤Math.round등으로 Long으로 변환하세요.예시 수정안:
- Long total = cost * Optional.ofNullable(material.getQuantity()).orElse(0.0).longValue(); + double quantity = Optional.ofNullable(material.getQuantity()).orElse(0.0); + Long total = Math.round(cost * quantity);
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (13)
src/main/java/com/sampoom/backend/api/bom/controller/BomController.java(1 hunks)src/main/java/com/sampoom/backend/api/bom/dto/BomDetailResponseDTO.java(2 hunks)src/main/java/com/sampoom/backend/api/bom/dto/BomRequestDTO.java(1 hunks)src/main/java/com/sampoom/backend/api/bom/dto/BomResponseDTO.java(2 hunks)src/main/java/com/sampoom/backend/api/bom/entity/Bom.java(1 hunks)src/main/java/com/sampoom/backend/api/bom/entity/BomMaterial.java(1 hunks)src/main/java/com/sampoom/backend/api/bom/event/dto/BomEvent.java(1 hunks)src/main/java/com/sampoom/backend/api/bom/service/BomService.java(3 hunks)src/main/java/com/sampoom/backend/api/part/controller/PartController.java(1 hunks)src/main/java/com/sampoom/backend/api/part/entity/Part.java(2 hunks)src/main/java/com/sampoom/backend/api/part/event/dto/PartEvent.java(1 hunks)src/main/java/com/sampoom/backend/api/part/event/service/PartEventBatchService.java(1 hunks)src/main/java/com/sampoom/backend/api/part/service/PartService.java(5 hunks)
⏰ 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 (11)
src/main/java/com/sampoom/backend/api/bom/event/dto/BomEvent.java (1)
48-48: 타입 변경이 적절합니다
quantity를Double로 변경하여 BOM 전반의 수량 타입 통일이 잘 이루어졌습니다. 이벤트 페이로드가 엔티티 및 DTO와 일관성을 유지합니다.src/main/java/com/sampoom/backend/api/part/event/service/PartEventBatchService.java (1)
64-64: 이벤트 페이로드 확장이 적절합니다
standardTotalCost필드를 이벤트에 추가하여 Part의 표준 총비용 정보를 이벤트 소비자에게 전달할 수 있습니다.src/main/java/com/sampoom/backend/api/bom/controller/BomController.java (1)
80-93: 주석 처리된 엔드포인트의 의도 확인 필요BOM 총비용 재계산 엔드포인트가 주석 처리되어 있습니다.
BomService에는recalculateAllBomTotalCosts()와recalculateBomTotalCost(Long bomId)메서드가 구현되어 있지만 컨트롤러에서 노출되지 않습니다.다음 사항을 확인해주세요:
- 이 기능이 의도적으로 비활성화된 것인가요?
- 임시 조치라면 TODO 주석을 추가하거나 이슈를 생성하는 것이 좋습니다
- 더 이상 필요하지 않다면 서비스 레이어의 메서드와 함께 제거하는 것을 고려해주세요
src/main/java/com/sampoom/backend/api/bom/dto/BomRequestDTO.java (1)
26-26: DTO 타입 변경이 적절합니다
quantity를Double로 변경하여 BomMaterial 엔티티와 일관성을 유지합니다. 소수점 수량 입력이 가능해집니다.src/main/java/com/sampoom/backend/api/part/event/dto/PartEvent.java (1)
38-38: 이벤트 스키마 확장이 적절합니다
standardTotalCost필드 추가로 Part의 표준 총비용을 이벤트를 통해 전파할 수 있습니다.src/main/java/com/sampoom/backend/api/bom/entity/BomMaterial.java (2)
36-38: 메서드 시그니처 변경이 일관성 있습니다
updateQuantity메서드가Double파라미터를 받도록 변경되어 필드 타입과 일관성을 유지합니다.
30-30: 데이터베이스 마이그레이션 스크립트를 확인하세요코드 레벨에서
quantity타입 변경(Long → Double)이 BomMaterial, DTO, Service에 걸쳐 완전하고 일관되게 수행되었습니다.그러나 다음 항목이 저장소에서 확인되지 않습니다:
bom_material테이블의quantity컬럼을DOUBLE또는DECIMAL로 변경하는 마이그레이션 스크립트- 기존 데이터의 마이그레이션 전략
- 스프링 부트
application.yml또는application.properties설정 파일이러한 파일들이 존재하는지, 또는 별도로 관리되는지 확인하시고, 필요시 추가해주세요. Flyway 또는 Liquibase 같은 마이그레이션 도구 설정도 함께 검토하세요.
src/main/java/com/sampoom/backend/api/part/service/PartService.java (4)
173-173: 이벤트 페이로드 확장이 적절합니다Part 생성 이벤트에
standardTotalCost를 포함하여 완전한 비용 정보를 전달합니다.
235-235: 이벤트 페이로드가 일관성 있게 확장되었습니다Part 수정 이벤트에도
standardTotalCost가 포함되어 있습니다.
288-288: 이벤트 페이로드가 일관성 있게 확장되었습니다Part 삭제 이벤트에도
standardTotalCost가 포함되어 있습니다.
436-436: 이벤트 페이로드가 일관성 있게 확장되었습니다헬퍼 메서드
publishPartUpdatedEvent에도standardTotalCost가 포함되어 있습니다.
📝 Summary
🙏 Question & PR point
📬 Reference
Summary by CodeRabbit
릴리스 노트
New Features
Improvements