비교 요약으로 돌아가기

Full output

GPT-5.6 Sol · low 원문 결과물

재고 예약 상태 전이·멱등성 보수 / OpenAI / GPT-5.6 Sol / 실행일 2026-07-30

gpt-5.6-sol-low 작업 결과

변경한 파일

  • src/main/java/com/samebrief/reservation/service/ReservationService.java
  • src/main/java/com/samebrief/reservation/store/InMemoryInventoryStore.java
  • src/test/java/com/samebrief/reservation/ReservationServiceContractTest.java

작업 사본은 verification/work/14-inventory-reservation-state/gpt-5.6-sol-low에 보존했다.

구현 내용

  • 공백 요청 ID와 상품 ID를 포함한 예약 입력 검증
  • 중복 상품 합산과 long 범위 초과 검출
  • 정규화된 상품별 총수량을 이용한 요청 멱등성 판정
  • 저장소의 decreaseAll을 통한 다중 상품 재고 사전 확인과 일괄 차감
  • 저장소의 increaseAll을 통한 취소·만료 재고 복구 사전 계산과 일괄 반영
  • 만료 시각을 포함하는 now >= expiresAt 경계 처리
  • 만료된 ACTIVE 예약의 상태 전이와 재고 복구 후 확정 예외 처리
  • 동일 결제 재시도, 다른 결제 충돌과 결제 ID 전역 고유성 처리
  • 취소·만료 종결 상태의 반복 호출에서 재고 중복 복구 방지

원자성에 필요한 다중 상품 연산을 인메모리 재고 저장소에 모아, 전체 검증 또는 계산이 끝난 뒤 수량을 반영하는 방식을 선택했다. 실제 병렬 처리, 잠금이나 외부 인프라는 추가하지 않았다.

발견한 기존 오류

  • 중복 상품 수량이 합산되지 않고 마지막 행으로 덮어써졌다.
  • 중복 상품 합산 오버플로를 검출하지 않았다.
  • 다중 상품 예약 실패 전에 일부 재고가 차감될 수 있었다.
  • 같은 요청 ID의 다른 상품 구성을 멱등성 충돌로 처리하지 않았다.
  • 만료 시각과 정확히 같은 순간을 만료에서 제외했다.
  • 확정 요청 시 만료 상태 전이와 재고 복구를 수행하지 않았다.
  • 결제 확정 재시도와 결제 ID 전역 고유성 규칙이 누락됐다.
  • 취소 또는 만료된 예약을 다시 취소하면 재고가 중복 복구될 수 있었다.

테스트 결과

실행 명령:

./gradlew clean test --no-daemon

결과:

  • 기본 테스트: 4개 통과
  • 추가 계약 테스트: 14개 통과
  • 전체: 18개 통과, 실패 0개
  • BUILD SUCCESSFUL