[BE-55] payment OrderType.RECRUITMENT 동기 확장
작업 내용 (설계 의도)
변경 사항
근거 TDD: “Possible Solutions 결제 확정 경로 A·AS-IS OrderConfirmationGatewayImpl”.
기존 동기 결제 확정/취소 접점을 OrderType.RECRUITMENT로 확장해 recruitment 신청 결제·환불을 기존 3종과 동형으로 처리한다(FR-6). 비동기 이벤트 경로 미채택.
⚠️ 공유 파일: OrderType.kt·OrderConfirmationGatewayImpl.kt는 payment 파일이나 recruitment만 건드린다(senior-be A 미접촉 — 단일 소유 확인됨).
포함:
OrderType.kt: enum에RECRUITMENT추가(4종). 진단 §8(2) 확장마찰 임계선 도달 수용.OrderConfirmationGatewayImpl.kt: 생성자에RecruitmentDomainService주입 추가,confirm/cancel각when(orderType)에RECRUITMENT분기 추가 — confirm→recruitmentDomainService.confirmApplication(orderId, paymentId), cancel→recruitmentDomainService.cancelPendingApplication(orderId).when은 exhaustive라 else 없이 컴파일러가 누락 강제.
롤백
enum·when 분기는 additive — recruitment.enabled OFF면 RECRUITMENT 결제 진입점이 없어 분기 미도달(무해). 롤백은 배포 되돌림.
의존
- BE-52 (RecruitmentDomainService.confirmApplication/cancelPendingApplication 시그니처)
다이어그램
처리 흐름
sequenceDiagram participant P as PaymentDomainService participant G as OrderConfirmationGatewayImpl participant R as RecruitmentDomainService P->>G: confirm(RECRUITMENT, applicationId, paymentId) G->>R: confirmApplication(applicationId, paymentId) P->>G: cancel(RECRUITMENT, applicationId, paymentId) G->>R: cancelPendingApplication(applicationId)
클래스 의존
flowchart LR OCG[OrderConfirmationGatewayImpl] --> RDS[RecruitmentDomainService] OCG --> BDS[BookingDomainService] OCG --> GDS[GoodsDomainService] OCG --> TDS[TicketingDomainService]
테스트 케이스
- RECRUITMENT 결제 승인 웹훅이 confirmApplication을 호출해 신청이 CONFIRMED된다
- RECRUITMENT 결제 취소 웹훅이 cancelPendingApplication을 호출한다
- 기존 BOOKING/GOODS/TICKETING 분기가 회귀 없이 동작한다
- OrderType가 4종이 되어도 when이 exhaustive해 컴파일 누락이 없다
- 중복 confirm 웹훅 수신 시 Application.confirm 멱등으로 이중 확정되지 않는다