Skip to content

feat: 유효하지 않은 상태 전이 차단을 위한 결제 상태 머신 추가 - #419

Merged
soyeon1806 merged 1 commit into
devfrom
fix/payment-state-machine
Jul 15, 2026
Merged

feat: 유효하지 않은 상태 전이 차단을 위한 결제 상태 머신 추가#419
soyeon1806 merged 1 commit into
devfrom
fix/payment-state-machine

Conversation

@soyeon1806

@soyeon1806 soyeon1806 commented Jul 15, 2026

Copy link
Copy Markdown
Collaborator

✅ PR 설명

Payment.updateStatus()가 인자로 받은 상태를 그대로 대입해, 엔티티 차원에서 아무 상태에서 아무 상태로의 전이가 가능했습니다.
즉, SUCCESS(포인트 지급 완료) 결제를 FAILED로 덮어쓰거나 CANCELED를 SUCCESS로 되돌리는 등 원장을 오염시키는 전이가 막혀 있지 않았습니다.
이에 허용된 전이 규칙을 PaymentStatus에 만들고, 엔티티의 전이 메서드가 이를 강제하도록 상태 머신을 도입했습니다.

🏗 작업 내용

  • PaymentStatus.canTransitionTo에 전이 규칙 정의
  • markApproved / markFailed / markCanceled가 transitionTo 가드를 경유하도록 수정
  • PaymentService와 PaymentReconciliationService의 updateStatus(...) 호출을 전이 메서드로 교체
  • 상태 전이 테스트 8개 추가

📸 테스트 결과 (선택)

  • PaymentStateMachineTest 8/8

🔗 관련 이슈 (선택)

관련된 Issue가 있다면 #이슈번호 형식으로 작성해주세요.

🚨 참고 사항 (선택)

리뷰어가 참고해야 할 사항이 있다면 작성해주세요.

@soyeon1806 soyeon1806 self-assigned this Jul 15, 2026
@soyeon1806
soyeon1806 merged commit 7c39756 into dev Jul 15, 2026
2 checks passed
@soyeon1806
soyeon1806 deleted the fix/payment-state-machine branch July 15, 2026 13:48
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.

1 participant