Skip to content

#431 [Feat] 어드민 대시보드 배틀 참여율 API 추가 - #432

Merged
si-zero merged 5 commits into
devfrom
feat/#431
Sep 1, 2026
Merged

#431 [Feat] 어드민 대시보드 배틀 참여율 API 추가#432
si-zero merged 5 commits into
devfrom
feat/#431

Conversation

@si-zero

@si-zero si-zero commented Sep 1, 2026

Copy link
Copy Markdown
Member

#️⃣ 연관된 이슈

📝 작업 내용

✨ Feat

내용 파일
배틀당 참여율 집계 저장소 쿼리 추가 (상관 서브쿼리 + AVG) BattleRepository.java, BattleParticipationStats.java
배틀 참여율 응답 DTO 추가 AdminDashboardBattleStatsResponse.java
배틀 참여율 조회 서비스 로직 추가 AdminDashboardService.java
배틀 참여율 조회 API 엔드포인트 추가 AdminDashboardController.java

📚 Docs

내용 파일
배틀 참여율 API 명세 추가 docs/api-specs/dashboard-api.md

📌 공유 사항

  1. GET /api/v1/admin/dashboard/battle-stats?from=&to=는 기간(targetDate 기준) 내 PUBLISHED 배틀들의 배틀당 평균 참여율을 반환합니다. 4개 지표(사전투표/사후투표/관점작성/댓글작성)를 각 배틀별로 구한 뒤 평균냅니다.
  2. "댓글 작성률"은 논의 끝에 관점(Perspective) 작성과 그 관점에 대한 답글(PerspectiveComment) 작성을 둘 다 별도 지표로 분리했습니다 (avgPerspectiveWriteRate, avgCommentWriteRate).
  3. 분모는 배틀 발행 시점이 아니라 현재 시점 기준 전체 ACTIVE 유저 수를 쓰는 근사치입니다. 정확한 과거 시점 유저 수를 쓰려면 별도 스냅샷 테이블이 필요해서 이번 스코프엔 포함하지 않았습니다.
  4. 기간 내 발행된 배틀이 없으면 모든 비율은 0으로 내려갑니다.

✅ 체크리스트

  • Reviewer에 팀원들을 선택했나요?
  • Assignees에 본인을 선택했나요?
  • 컨벤션에 맞는 Type을 선택했나요?
  • Development에 이슈를 연동했나요?
  • Merge 하려는 브랜치가 올바르게 설정되어 있나요?
  • 컨벤션을 지키고 있나요?
  • 로컬에서 실행했을 때 에러가 발생하지 않나요?
  • 팀원들에게 PR 링크 공유를 했나요?

📸 스크린샷

./gradlew test 전체 통과. AdminDashboardServiceTest에 정상/무배틀/from>to 검증 케이스 3개 추가.

@si-zero si-zero self-assigned this Sep 1, 2026
@si-zero si-zero added the ✨ Feat (기능 추가) 새로운 기능을 추가할 때 사용합니다. label Sep 1, 2026
@si-zero
si-zero merged commit 6eea0d4 into dev Sep 1, 2026
1 check passed
@si-zero
si-zero deleted the feat/#431 branch September 1, 2026 12:24
@si-zero si-zero linked an issue Sep 1, 2026 that may be closed by this pull request
3 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✨ Feat (기능 추가) 새로운 기능을 추가할 때 사용합니다.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

✨ Feat: 어드민 대시보드 배틀 참여율 API 추가

1 participant