Skip to content

Add admin REST API endpoints for backoffice operations#189

Open
longfin wants to merge 8 commits intomainfrom
worktree-silly-stirring-tiger
Open

Add admin REST API endpoints for backoffice operations#189
longfin wants to merge 8 commits intomainfrom
worktree-silly-stirring-tiger

Conversation

@longfin
Copy link
Member

@longfin longfin commented Mar 18, 2026

Summary

  • BackOffice Blazor 대시보드에서만 가능했던 관리 기능을 REST API로 추출
  • 5개 Admin 컨트롤러 추가 (모두 [Authorize(Roles = "Admin")] 적용)
  • 기존 Shared 레이어의 서비스/리포지토리를 그대로 활용
  • 단위 테스트 36개 포함

New Endpoints

Controller Method Endpoint Description
AdminSeason POST /admin/seasons 시즌 생성
AdminSeason GET /admin/seasons/{id} 시즌 조회
AdminSeason PUT /admin/seasons/{id} 시즌 수정
AdminSeason DELETE /admin/seasons/{id} 시즌 삭제
AdminSeason PUT /admin/seasons/{id}/end-block 종료 블록 조정
AdminPolicy GET /admin/policies/battle-ticket 배틀 티켓 정책 목록
AdminPolicy GET /admin/policies/battle-ticket/{id} 배틀 티켓 정책 상세
AdminPolicy POST /admin/policies/battle-ticket 배틀 티켓 정책 생성
AdminPolicy GET /admin/policies/refresh-ticket 리프레시 티켓 정책 목록
AdminPolicy GET /admin/policies/refresh-ticket/{id} 리프레시 티켓 정책 상세
AdminPolicy POST /admin/policies/refresh-ticket 리프레시 티켓 정책 생성
AdminReview GET /admin/reviews/battles 미검토 배틀 목록
AdminReview GET /admin/reviews/ticket-purchases 미검토 티켓 구매 목록
AdminReview POST /admin/reviews/battles/{id}/confirm 배틀 리뷰 확인
AdminReview POST /admin/reviews/ticket-purchases/{id}/confirm 티켓 구매 리뷰 확인
AdminPreparation POST /admin/preparation/season/initialize 시즌 초기화
AdminPreparation POST /admin/preparation/round/prepare-next 다음 라운드 준비
AdminPreparation POST /admin/preparation/ranking-cache/initialize 랭킹 캐시 초기화
AdminLeaderboard GET /admin/leaderboard/{seasonId} 리더보드 조회
AdminLeaderboard GET /admin/leaderboard/{seasonId}/csv 리더보드 CSV 다운로드

Changes

  • ArenaService/Controllers/Admin*.cs - 5개 신규 컨트롤러
  • ArenaService.Shared/Dtos/AdminRequests.cs - Admin 요청 DTO (validation 포함)
  • ArenaService/Setup.cs - 누락된 DI 등록 추가
  • ArenaService.Tests/Controllers/Admin*Tests.cs - 5개 테스트 파일 (36 테스트 케이스)

Review feedback addressed

  • EF 엔티티 대신 SeasonResponse DTO 반환 (순환 참조 방지)
  • RoundInterval * RoundCount 오버플로 검증
  • PurchasePrices.Count 일치 검증
  • DeleteSeason에서 서버사이드 block index 사용
  • type 파라미터 case-insensitive 검증
  • Task.WhenAll로 병렬 쿼리
  • 주소 소문자 통일

Test plan

  • 모든 Admin 컨트롤러에 대한 단위 테스트 작성 (73개 전체 통과)
  • Swagger UI에서 엔드포인트 확인
  • Admin JWT 토큰으로 인증 테스트
  • BackOffice 기능과 동일한 결과 확인

🤖 Generated with Claude Code

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants