[BE-07] PurchaseLimitedDropUseCase — 구매 트랜잭션 경계

작업 내용 (설계 의도)

변경 사항

한정판 구매 UseCase(근거 TDD: ../TDD.md “시스템 역할 경계”). execute() 10줄 이내, @Transactional, DomainService만 호출(Repository/Gateway 직접 주입 금지). 롤백: 피처 플래그 OFF.

  • PurchaseLimitedDropUseCase.execute(command): LimitedDropPurchaseResultlimitedDropDomainService.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를 직접 주입하지 않는다