2.4 KiB
2.4 KiB
- 기존 charge/payment/member 및 admin API 패턴 확인
kr.co.vividnext.sodalive.admin.charge패키지에 캔 환불 API 생성- 환불 조건 검증 구현 (미사용, 7일 이내)
- ChargeEntity/PaymentEntity/MemberEntity 환불 반영 로직 구현
- 캔 환불 API 테스트 코드 작성
- 검증 실행 및 결과 기록
환불 조건 상세
- 환불 가능 충전내역 조건:
charge.status == CHARGE그리고payment.status == COMPLETE - 이미 사용한 캔 판정 조건:
charge.title에서 숫자를 추출해 현재chargeCan/rewardCan과 비교- 예시1)
100 캔 + 50 캔->chargeCan = 100,rewardCan = 50 - 예시2)
5,000 캔 + 500 캔->chargeCan = 5000,rewardCan = 500 - 예시3)
500캔->chargeCan = 500 - 예시4)
4,000 캔->chargeCan = 4000
- 예시1)
검증 기록
1차 구현
- 무엇을: 관리자 캔 환불 API(
POST /admin/charge/refund)와 환불 서비스/요청 DTO, i18n 메시지, 단위 테스트를 추가했다. - 왜: 사용하지 않은 캔만 7일 이내 환불 가능하도록 하고, 환불 시 Charge/Payment/Member 상태를 요구사항대로 갱신하기 위해.
- 어떻게:
./gradlew test --tests "kr.co.vividnext.sodalive.admin.charge.AdminChargeRefundServiceTest"실행 → 성공./gradlew build실행 → 성공 (ktlint/check/test/build 포함)- LSP 진단 시도(
lsp_diagnostics) → Kotlin LSP 미설정으로 불가, 대신 Gradle 컴파일/ktlint/test/build로 검증
2차 수정
- 무엇을:
AdminChargeRefundServiceTest에 한글@DisplayName을 추가하고, 각 테스트 문단에 given/when/then 역할 주석을 보강했다. - 왜: 테스트 의도를 한눈에 파악하고, 문단별 책임을 명확히 하기 위해.
- 어떻게:
./gradlew test --tests "kr.co.vividnext.sodalive.admin.charge.AdminChargeRefundServiceTest"실행 → 성공./gradlew ktlintTestSourceSetCheck실행 → 성공
3차 수정
- 무엇을: 이미 사용한 캔 판정을
charge.title숫자 파싱 비교 방식으로 변경하고, 단일 숫자/콤마 포함 제목 테스트 케이스를 추가했다. - 왜: 환불 조건을 충전 제목 기반 비교 규칙(단일/복수 숫자, 콤마 포함)으로 명확하게 적용하기 위해.
- 어떻게:
./gradlew test --tests "kr.co.vividnext.sodalive.admin.charge.AdminChargeRefundServiceTest"실행 → 성공./gradlew build실행 → 성공