59 lines
4.0 KiB
Markdown
59 lines
4.0 KiB
Markdown
# 20260316_라이브환불기능추가
|
|
|
|
## 구현 항목
|
|
- [x] `GetCalculateLiveQueryData`에 `roomId` 필드 추가 및 `toGetCalculateLiveResponse` 수정 (email 제거 예정)
|
|
- [x] `GetCalculateLiveResponse`에 `roomId` 필드 추가 (email 제거 예정)
|
|
- [x] 환불 요청 시 `roomId`, `canUsageStr` 필수 조건 확인 로직 추가
|
|
- [x] `LiveRoomService` 내 환불 처리 로직 구현 (1차 수정: `cancelLive`와 동일하게 예약자 대상)
|
|
- [x] 환불 요청 API 엔드포인트 구현 (또는 수정)
|
|
- [x] `GetCalculateLiveQueryData` 및 `GetCalculateLiveResponse`에서 `email` 필드 제거
|
|
- [x] `AdminCalculateQueryRepository` 및 `CreatorAdminCalculateQueryRepository`에서 `email` 조회 제거
|
|
- [x] 환불 대상을 '예약자'가 아닌 '해당 라이브 및 사용 조건에 맞는 모든 미환불 UseCan'으로 변경
|
|
- [x] `LiveRoomService`의 `refundLiveByAdmin` 로직을 `AdminCalculateService`로 이동 및 수정
|
|
- [x] 이미 환불 처리된 건은 환불하지 않도록 재검증
|
|
- [x] 사용 전/후/환불 후 캔 수 일치 여부 검증 테스트 추가
|
|
- [x] 테스트 코드에 DisplayName을 사용하여 한글 설명 추가
|
|
- [x] 환불 실패 케이스에 대한 테스트 추가
|
|
|
|
## 검증 결과
|
|
### 1차 구현
|
|
- 무엇을: 라이브 환불 기능 추가
|
|
- 왜: 관리자 정산 페이지 등에서 라이브별 환불 처리를 지원하기 위함
|
|
- 어떻게:
|
|
- [x] `GetCalculateLiveQueryData`, `GetCalculateLiveResponse` 수정 확인
|
|
- [x] 환불 요청 API 호출 및 `LiveRoomService.refundLiveByAdmin` 로직 실행 여부 확인
|
|
- [x] 테스트 코드(`AdminCalculateServiceTest`) 작성 및 실행 결과 확인 (성공)
|
|
|
|
### 2차 수정 (잘못된 처리 반영)
|
|
- 무엇을: 라이브 환불 로직 수정 및 필드 정리
|
|
- 왜: 환불은 예약자 기준이 아니며, 관리자 기능이므로 관리자 서비스에서 처리해야 함. 또한 개인정보 보호 등을 위해 불필요한 `email` 필드 제거.
|
|
- 어떻게:
|
|
- [x] `GetCalculateLiveQueryData`, `GetCalculateLiveResponse`에서 `email` 제거 확인
|
|
- [x] '모든 미환불 UseCan' 대상 환불 로직 검증 (테스트 코드 수정 및 실행)
|
|
- [x] `LiveRoomService`에서 해당 로직 제거 및 `AdminCalculateService`에서 직접 처리 확인
|
|
|
|
### 3차 수정 (캔 수 검증 테스트 추가)
|
|
- 무엇을: 환불 시 사용자의 캔 수 변화 검증 테스트 추가
|
|
- 왜: 환불 후 사용자의 캔 수가 사용 전과 동일한지 확인하여 정합성을 보장하기 위함
|
|
- 어떻게:
|
|
- [x] `AdminCalculateServiceTest`에 `shouldMaintainCanBalanceAfterRefund` 테스트 추가
|
|
- [x] 사용 전, 사용 후(시뮬레이션), 환불 후 캔 수를 비교하여 사용 전과 환불 후가 동일함을 검증
|
|
- [x] `./gradlew test` 실행 결과 성공 확인
|
|
|
|
### 4차 수정 (테스트 코드 가독성 개선)
|
|
- 무엇을: 테스트 코드에 `@DisplayName`을 사용하여 한글 설명 추가
|
|
- 왜: 테스트의 의도를 보다 명확하게 전달하기 위함
|
|
- 어떻게:
|
|
- [x] `AdminCalculateServiceTest.kt`의 모든 테스트 메서드에 `@DisplayName` 적용
|
|
- [x] `./gradlew test` 실행 시 한글 설명이 정상적으로 출력됨을 확인
|
|
|
|
### 5차 수정 (환불 실패 케이스 테스트 추가)
|
|
- 무엇을: 환불이 실패하는 예외 상황에 대한 테스트 케이스 추가
|
|
- 왜: 환불 요청 중 발생 가능한 예외 상황(잘못된 방 ID, 잘못된 구분 값, 파라미터 누락 등)을 사전에 검증하기 위함
|
|
- 어떻게:
|
|
- [x] `AdminCalculateServiceTest.kt`에 3개의 실패 테스트 추가
|
|
- `shouldFailWhenRoomNotFound`: 존재하지 않는 방 ID 요청 시 `live.room.not_found` 예외 검증
|
|
- `shouldFailWhenInvalidCanUsage`: 지원하지 않는 사용 구분 문자열 요청 시 예외 검증
|
|
- `shouldFailWhenRequiredParameterMissing`: 필수 파라미터 누락 시 `common.error.invalid_request` 예외 검증
|
|
- [x] `./gradlew test` 실행 결과 5개의 테스트 모두 성공 확인
|