Conversation
Walkthrough결제 도메인 모델이 신규 추가되었다. Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Poem
Pre-merge checks and finishing touches✅ Passed checks (5 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
Comment |
26000fe to
d8d6c87
Compare
|
@coderabbitai review |
✅ Actions performedReview triggered.
|
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (3)
payment/payment-core/domain/src/main/kotlin/app/payment/core/domain/PaymentStatus.kt (1)
3-10: 결제 상태 열거형이 적절하게 정의되었습니다.결제 흐름을 잘 표현하는 6가지 상태가 정의되어 있으며, 부분 취소(PARTIAL_CANCELLED) 상태도 포함되어 있어 실무 요구사항을 반영하고 있습니다.
다만, Kotlin 관례상 마지막 enum 상수 뒤에 trailing comma를 추가하는 것이 권장됩니다:
enum class PaymentStatus { READY, PAY_PENDING, PAID, PARTIAL_CANCELLED, CANCELLED, - FAILED, + FAILED, }payment/payment-core/domain/src/main/kotlin/app/payment/core/domain/PgProvider.kt (1)
3-6: PG 제공자 열거형이 정의되었습니다.현재 지원하는 2개의 PG사가 명확하게 정의되어 있습니다.
PaymentMethod.kt와의 일관성을 위해 마지막 상수 뒤에 trailing comma를 추가하는 것을 고려해보세요:
enum class PgProvider { TOSS_PAYMENTS, - KAKAO_PAY, + KAKAO_PAY, }payment/payment-core/domain/src/main/kotlin/app/payment/core/domain/Payment.kt (1)
10-10: 금액 검증 로직을 추가하세요.
amount필드에 대한 유효성 검증이 없어 음수나 0 값이 허용될 수 있습니다. 금융 도메인에서는 금액에 대한 명확한 제약사항이 필요합니다.초기화 블록에서 검증 로직을 추가하세요:
data class Payment( val id: Long, val orderId: String, val userId: Long, val amount: BigDecimal, val method: PaymentMethod, val pgProvider: PgProvider, val status: PaymentStatus, val transactionId: String?, val pgTransactionId: String?, val paidAt: OffsetDateTime?, val createdAt: OffsetDateTime, val updatedAt: OffsetDateTime? ) { init { require(amount > BigDecimal.ZERO) { "결제 금액은 0보다 커야 합니다" } } }
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (4)
payment/payment-core/domain/src/main/kotlin/app/payment/core/domain/Payment.kt(1 hunks)payment/payment-core/domain/src/main/kotlin/app/payment/core/domain/PaymentMethod.kt(1 hunks)payment/payment-core/domain/src/main/kotlin/app/payment/core/domain/PaymentStatus.kt(1 hunks)payment/payment-core/domain/src/main/kotlin/app/payment/core/domain/PgProvider.kt(1 hunks)
🔇 Additional comments (2)
payment/payment-core/domain/src/main/kotlin/app/payment/core/domain/PaymentMethod.kt (1)
3-10: 결제 수단 열거형이 올바르게 정의되었습니다.한국 결제 시스템에서 일반적으로 사용되는 결제 수단들이 포함되어 있으며, trailing comma를 사용하여 Kotlin 코딩 규칙을 준수하고 있습니다.
payment/payment-core/domain/src/main/kotlin/app/payment/core/domain/Payment.kt (1)
6-19: data class 키워드가 누락되었습니다.Payment는 일반 class로 선언되었지만, 도메인 모델의 특성상
data class로 정의되어야 합니다. data class는equals(),hashCode(),toString(),copy()메서드를 자동으로 제공하여 값 객체로서의 동작을 보장합니다.다음과 같이 수정하세요:
-class Payment( +data class Payment( val id: Long, val orderId: String, val userId: Long, val amount: BigDecimal, val method: PaymentMethod, val pgProvider: PgProvider, - var status: PaymentStatus, + val status: PaymentStatus, val transactionId: String?, val pgTransactionId: String?, - var paidAt: OffsetDateTime?, + val paidAt: OffsetDateTime?, val createdAt: OffsetDateTime, - var updatedAt: OffsetDateTime + val updatedAt: OffsetDateTime? )Likely an incorrect or invalid review comment.
payment/payment-core/domain/src/main/kotlin/app/payment/core/domain/Payment.kt
Outdated
Show resolved
Hide resolved
d8d6c87 to
bc740cc
Compare
- PG사 독립적인 PaymentMethod 설계 (추후 Adapter에서 매핑 예정) - 결제 완료 이후 상품 지급 등은 Order 도메인에서 상태를 관리합니다. - payment는 pg사를 이용한 “결제”에 집중하는 도메인입니다.
bc740cc to
1df4674
Compare
참조
Closes #4
Summary by CodeRabbit