[BE-07] PurchaseLimitedDropUseCase — 구매 트랜잭션 경계
작업 내용 (설계 의도)
변경 사항
한정판 구매 UseCase(근거 TDD: ../TDD.md “시스템 역할 경계”). execute() 10줄 이내, @Transactional, DomainService만 호출(Repository/Gateway 직접 주입 금지). 롤백: 피처 플래그 OFF.
PurchaseLimitedDropUseCase.execute(command): LimitedDropPurchaseResult→limitedDropDomainService.purchase(command)위임 후Result.of반환.- Redis 예약·완충·DB 주문은 전부 DomainService(BE-03)가 소유 — UseCase는 오케스트레이션만.
의존
- BE-03 (LimitedDropDomainService), BE-06 (Command·Result)
다이어그램
클래스 의존
flowchart LR PurchaseLimitedDropUseCase --> LimitedDropDomainService PurchaseLimitedDropUseCase --> LimitedDropPurchaseResult
테스트 케이스
- execute가 domainService.purchase 결과를 Result로 변환해 반환한다 (MockK)
- domainService가 SoldOut 예외를 던지면 그대로 전파한다
- execute는 DomainService만 주입받고 Repository/Gateway를 직접 주입하지 않는다