비교 요약으로 돌아가기

Full output

GPT-5.6 Sol · high 원문 결과물

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

gpt-5.6-sol-high 작업 결과

변경한 파일

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

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

구현 내용

  • 공백 요청 ID와 상품 ID를 포함한 입력 전체 검증
  • 중복 상품 수량 합산과 long 오버플로 검출
  • 전체 상품의 재고를 먼저 확인한 뒤 차감하는 다중 상품 예약 원자성
  • 정규화된 상품별 총수량을 기준으로 요청 멱등성 비교
  • 만료 경계 now >= expiresAt 처리
  • 만료 시 상태 전이와 재고 1회 복구
  • 결제 재시도와 결제 ID 전역 고유성 처리
  • 취소와 만료의 반복 호출에 대한 재고 중복 복구 방지
  • 종결 상태별 상태 전이와 예외 처리

구현은 실제 병렬 처리나 잠금을 추가하지 않고, 인메모리 순차 실행 환경에서 사전 검증 후 상태를 변경하도록 구성했다.

발견한 기존 오류

  • 중복 상품이 합산되지 않고 마지막 수량으로 덮어써졌다.
  • 다중 상품 예약에서 앞선 상품의 재고가 부분 차감될 수 있었다.
  • 같은 요청 ID의 다른 상품 구성을 멱등성 충돌로 처리하지 않았다.
  • 만료 시각과 정확히 같은 순간을 만료로 처리하지 않았다.
  • 확정 시 만료된 예약의 상태 전이와 재고 복구가 누락됐다.
  • 다른 결제 ID를 사용한 확정 재시도와 결제 ID 중복 사용을 허용했다.
  • 취소 또는 만료 재시도에서 재고가 중복 복구될 수 있었다.

테스트 결과

실행 명령:

./gradlew clean test --no-daemon

결과:

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

실행 격리 참고

gpt-5.6-sol-lowgpt-5.6-sol-medium 작업 디렉터리는 열람하거나 수정하지 않았다.

다만 최초 파일 탐색 명령에서 verification/scenarios/14-inventory-reservation-state의 채점 자료가 함께 출력되었으므로, 엄밀한 블라인드 비교 실행은 오염된 것으로 기록해야 한다.