Files
sodalive-backend-spring-boot/docs/20260303_관리자채널후원크리에이터별정산조회및엑셀API.md

2.9 KiB

관리자 채널후원 크리에이터별 정산 조회 및 엑셀 API 작업 계획

  • 기존 관리자 채널후원 정산 API의 날짜별 조회 경로를 식별하고 URL 변경 범위를 확정한다.
  • 관리자 채널후원 정산 날짜별 조회 API URL을 목적에 맞게 변경한다.
  • 관리자 크리에이터별 채널후원 정산 조회 API(GET /admin/calculate/channel-donation-by-creator)를 구현한다.
  • 관리자 크리에이터별 채널후원 정산 엑셀 다운로드 API(GET /admin/calculate/channel-donation-by-creator/excel)를 구현한다.
  • 크리에이터별 집계/카운트/합계 Query를 추가하고, 정산 계산 비율은 기존 채널후원 정산과 동일하게 적용한다.
  • 관련 테스트를 수정/추가하고 ./gradlew test, ./gradlew build로 검증한다.

검증 기록

1차 구현

  • 무엇을: 관리자 채널후원 정산 API를 날짜별/크리에이터별로 분리하고, 크리에이터별 정산 엑셀 다운로드 API를 추가했다.
  • 왜: 기존 /admin/calculate/channel-donation-by-creator가 날짜별 조회 성격이어서 URL 의미를 분리하고, 요청한 크리에이터별 목록/엑셀 기능을 제공하기 위해서다.
  • 어떻게:
    • 컨트롤러에서 기존 날짜별 조회 경로를 GET /admin/calculate/channel-donation-by-date로 변경했다.
    • 신규 크리에이터별 조회 GET /admin/calculate/channel-donation-by-creator와 엑셀 다운로드 GET /admin/calculate/channel-donation-by-creator/excel를 추가했다.
    • QueryRepository에 날짜별/크리에이터별 집계 메서드를 분리하고, 크리에이터별 총건수(distinct creator) 및 엑셀용 전체 조회를 추가했다.
    • 서비스에서 크리에이터별 조회 응답 DTO와 엑셀(XSSFWorkbook) 생성 로직을 구현했다.
    • 정산 비율/공식은 기존 ChannelDonationSettlementCalculator를 그대로 사용해 동일 정책을 유지했다.
    • 테스트를 수정/추가해 날짜별 라우팅, 크리에이터별 조회, 엑셀 다운로드, Query 집계를 검증했다.
    • 실행 결과:
      • lsp_diagnostics (수정된 .kt 파일들) → Kotlin LSP 미설정으로 진단 불가
      • ./gradlew test --tests "*channelDonation*" → 성공
      • ./gradlew build → 성공

2차 수정

  • 무엇을: 크리에이터별 정산 엑셀 다운로드 파일의 시트명과 헤더를 한글로 변경했다.
  • 왜: 관리자 화면에서 다운로드한 엑셀의 컬럼 의미를 즉시 식별할 수 있도록 가독성을 높이기 위해서다.
  • 어떻게:
    • 시트명 channel-donation-by-creator크리에이터별 채널후원 정산으로 변경했다.
    • 헤더를 크리에이터, 건수, 총 받은 캔 수, 원화, 수수료, 정산금액, 원천세, 입금액으로 변경했다.
    • 실행 결과:
      • ./gradlew test --tests "*channelDonation*" → 성공