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.javasrc/main/java/com/samebrief/reservation/store/InMemoryInventoryStore.javasrc/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