Dev - #97
Merged
Merged
Dev#97
Conversation
- AdminMemberController에 사용자 목록/상세 조회, 인벤토리 수정 3개 엔드포인트를 501(Not Implemented)로 스텁 처리 - AdminMemberService/Impl 인터페이스와 메서드 뼈대 생성 (getUsers, getUserDetail, updateUserInventory), 몸통은 UnsupportedOperationException으로 스텁 처리 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- item-service에 내부 인벤토리 수량 조회 API 추가 (InternalAdminItemController, AdminItemQueryService) - user-service에 인벤토리 관련 DTO 이관 (AdminInventoryAction/Counts/UpdateRequest, AdminUserDetailResponse, AdminUserSummaryResponse) - user-service에 item-service 내부 API 호출용 ItemAdminClient(Feign) 신규 추가 - AdminMemberService/Impl을 domain/member에서 domain/admin으로 이동하고 인벤토리 수량 조회 로직 구현 - AdminMemberController.getUsers를 AdminMemberService에 연결 (기존 501 스텁 제거) - UserServiceApplication에 @EnableFeignClients, application.yml에 item-service.url 추가 - AdminMemberControllerTest, AdminMemberServiceTest 신규 작성 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- AdminMemberServiceImpl#getUserDetail 구현 (로컬 회원 조회 + ItemAdminClient로 인벤토리 수량 합성) - AdminUserDetailResponse#from 정적 팩토리 추가 - AdminMemberService/AdminMemberController 반환 타입을 AdminUserDetailResponse로 변경 - item-service AdminUserController Swagger 설명에 리팩토링 완료 표기 - gradlew 줄바꿈, chat-service/build.gradle 공백 정리 - .gitignore에 *.txt 추가 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- item-service: PATCH /api/internal/admin/items/{memberId} 내부 API 구현 (AdminItemCommandService)
- item-service: dedupe/adjustment에 중복 구현돼 있던 검증 로직을 AdminInventoryRequestValidator로 통합해 요청당 한 번만 실행되도록 정리
- user-service: AdminMemberServiceImpl.updateUserInventory에서 ItemAdminClient.adjustInventory 호출 및 Feign 에러(409/400/기타) 매핑 추가
- user-service: AdminMemberController PATCH가 항상 501을 반환하던 버그 수정
- user-service: Feign 기본 클라이언트가 PATCH를 지원하지 않아 발생하던 500 오류 해결 (feign-hc5 추가)
- user-service: 사용자 상세 조회 실패 코드를 MEM-001에서 구경로와 동일한 ITEM-004로 통일
- user-service: UserErrorCode에 item-service와 동일한 ITEM-001/004/005/006 추가
- 관련 서비스/컨트롤러 단위 테스트 추가 및 갱신
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- item-service의 notice 도메인(entity/repository/service/dto/controller)을 user-service domain/admin/notice로 옮기고 AdminNoticeService(Impl)로 리네임 - /api/admin/notices(목록/등록/수정/삭제), /api/notices/active 엔드포인트를 AdminNoticeController로 추가 - 기존 admin 패키지를 domain/admin/user로 재정리해 notice와 계층 구조를 통일 - item-service NoticeServiceImplTest를 AdminNoticeServiceImplTest로 이관(9개 케이스) Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Gateway에 관리자 사용자·공지 및 활성 공지 user-service 라우트 추가 - user-service 관리자 사용자·공지 API 경로를 /api/v1으로 변경 - item-service 기존 관리자 사용자·공지 구현 비활성화
- RouletteReward, RouletteHistory 엔티티 추가 - RouletteType, PrizeType enum 추가
- FREE 룰렛 중복 참여 검증 및 PAID 룰렛 티켓 차감 처리 - 확률 범위 기반 보상 추첨과 제한 재고 차감 로직 추가 - 아이템 보상과 아이템 사용·획득 이력 저장 - 상품권·꽝을 포함한 룰렛 참여 이력 저장 - 당첨 보상명을 반환하는 응답 DTO 및 룰렛 API 추가 - 보상 처리 예외와 난수 경계 조건 테스트 작성
- PAID 룰렛 티켓 실제 차감 검증 - FREE 당일 참여 조회 조건 검증 - 풀세트 전체 재고 차감 검증 - PAID 일일 제한 미적용 검증 - 보상 처리 실패 시 트랜잭션 롤백 검증 - 아이템 이력 설명과 룰렛 API 계약 검증
- 유료 룰렛 티켓 조회에 비관적 락 적용
- 한정 보상 재고 조회에 비관적 락 적용
- 무료 룰렛 참여 이력에 회원·유형·날짜 유일 제약 추가
- 동시 중복 참여를 ITEM-007 예외로 변환
- 무료·유료 룰렛 및 한정 보상 동시성 테스트 추가
- 룰렛 보상을 단일 행으로 조회하도록 변경
- 풀세트 한 행으로 옵션권과 매칭권을 함께 지급
- 지급 아이템별 EVENT 이력 저장
- 무료 룰렛 참여 날짜 저장 및 일일 유일 제약 적용
- 반복 코드의 메서드 분리를 위한 TODO 추가
- 당일 참여 검증과 보상 처리 테스트 수정
- PAID 룰렛을 SPECIAL 룰렛으로 변경하고 룰렛 티켓 사용 로직 제거 - 당일 승인 결제액 3,500원 이상인 회원만 스페셜 룰렛 참여 허용 - 무료·스페셜 룰렛의 당일 중복 참여 예외 처리 - 룰렛 참여 가능 여부와 당일 누적 결제액 조회 API 추가 - 룰렛 실행 API를 타입별 경로 구조로 변경 - 스페셜 룰렛과 참여 상태 조회 테스트 보강
- FREE와 SPECIAL 참여 이력에 회원·타입·날짜 유일 제약 적용
- 참여 이력을 즉시 flush하여 동시 중복 요청을 ITEM-007로 변환
- 동일 회원의 FREE·SPECIAL 동시 요청에서 보상 중복 지급 방지 검증
- 날짜별 참여 유일 제약과 당일 승인 결제액 합산 테스트 추가
- 본인의 승인된 주문만 누적 결제액에 포함되는지 검증 - 조회 시간 범위의 시작 포함·종료 제외 조건 검증 - 다른 회원과 승인 거절 주문이 합산에서 제외되는지 검증 - 결제 내역이 없는 회원의 합계가 0인지 검증
- 룰렛 페이지에서 무료·스페셜 참여 여부와 당일 결제액을 함께 반환
- 룰렛 타입별 조회 파라미터를 제거하고 응답 DTO 구조 변경
- 보상 추첨과 지급 로직을 별도 메서드로 분리
- 변경된 룰렛 조회 API 계약에 맞춰 서비스·컨트롤러 테스트 수정
- RouletteReward의 itemType을 rewardType으로 교체 - 일반 아이템·풀세트·상품권·꽝을 RewardType으로 구분 - 기존 보상 지급 수량과 재고·이력 처리 로직 유지 - 룰렛 테스트 데이터를 RewardType 구조에 맞게 수정
- 룰렛 이력에 보상 지급 여부를 기록하고 즉시 지급 보상 상태 반영 - 미지급 상품권 당첨자 조회 및 지급 완료 처리 관리자 API 추가 - 상품권 당첨자용 사용자 DTO와 내부 일괄 조회 API 추가 - 당첨자 회원 정보 조회를 위한 Feign 연동 추가 - 동일 회원의 복수 당첨 이력을 당첨 건별로 반환 - 상품권 외 보상을 무제한 재고로 처리하고 소진 범위 재추첨 - 상품권 지급 및 회원 일괄 조회 테스트 보강
- 룰렛 API 경로를 /api/roulette에서 /api/items/roulette로 변경
- Gateway의 기존 /api/items/** 라우팅 규칙에 맞게 경로 통일
- refactor/admin-notice 브랜치 변경사항 반영 - 룰렛 상품권 당첨자 조회를 위한 사용자 일괄 조회 연동 유지 - 빌드 설정과 내부 관리자 API 충돌 해결
- 매칭 로직 및 성능 테스트 변경사항 반영
- 충돌 파일을 origin/main 기준으로 해결
- RouletteControllerTest 요청 경로를 /api/items/roulette로 변경
- 테스트 표시명을 변경된 API 경로에 맞게 수정
- 룰렛 API 경로 변경사항을 통합
- RouletteControllerTest 충돌을 /api/items/roulette 기준으로 해결
- 관리자 룰렛 서비스를 admin 도메인 패키지로 이동
- 회원 정보가 누락된 당첨 이력은 응답 목록에서 제외
- 서비스 패키지 이동에 맞춰 컨트롤러와 테스트 import 수정
- 운영 환경의 관리자 사용자·공지 요청을 user-service로 라우팅\n- 활성 공지 경로를 운영 user-service 보호 라우트에 추가\n- 관리자 목록 기본 경로와 하위 경로를 모두 명시
- 운영 관리자 사용자·공지 요청을 user-service로 라우팅\n- 활성 공지 경로를 운영 보호 라우트에 추가\n- 관리 엔드포인트 8081 설정을 유지해 충돌 해결
- 요청 시작 시각을 기준으로 참여 날짜와 결제 조회 기간을 고정 - 참여 여부 조회를 participationDate 기준으로 변경 - 자정 경계에서 다음 날 참여 기록으로 저장되는 문제 방지 - 변경된 날짜 조회 기준에 맞춰 룰렛 테스트 수정
feat(item/user): 룰렛 기능 및 관리자 API 이관 통합
Integration/roulette admin
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.