Files
sodalive-backend-spring-boot/docs/20260305_관리자정산엑셀다운로드추가.md

3.2 KiB

관리자 정산 엑셀 다운로드 추가 작업 계획

  • 기존 정산 API 구조와 엑셀 다운로드 응답 패턴(ResponseEntity<InputStreamResource>)을 기준으로 구현 범위를 확정한다.
  • 라이브 정산 엑셀 다운로드 API(GET /admin/calculate/live/excel)를 추가한다.
  • 콘텐츠 정산 엑셀 다운로드 API(GET /admin/calculate/content-list/excel)를 추가한다.
  • 콘텐츠 후원 정산 엑셀 다운로드 API(GET /admin/calculate/content-donation-list/excel)를 추가한다.
  • 커뮤니티 정산 엑셀 다운로드 API(GET /admin/calculate/community-post/excel)를 추가한다.
  • 크리에이터별 라이브 정산 엑셀 다운로드 API(GET /admin/calculate/live-by-creator/excel)를 추가한다.
  • 크리에이터별 콘텐츠 정산 엑셀 다운로드 API(GET /admin/calculate/content-by-creator/excel)를 추가한다.
  • 크리에이터별 커뮤니티 정산 엑셀 다운로드 API(GET /admin/calculate/community-by-creator/excel)를 추가한다.
  • 채널후원 정산 엑셀 다운로드 API(GET /admin/calculate/channel-donation-by-date/excel)를 추가한다.
  • 각 엑셀 API가 시작/끝 날짜를 받아 전체 데이터를 내려주도록 서비스/리포지토리를 확장한다.
  • lsp_diagnostics, 테스트, 빌드로 변경사항을 검증하고 결과를 문서 하단에 기록한다.

검증 기록

1차 구현

  • 무엇을: 관리자 정산 API 8종(라이브/콘텐츠/콘텐츠후원/커뮤니티/크리에이터별 3종/채널후원 날짜별)에 /excel 다운로드 엔드포인트를 추가하고, 전체 데이터 엑셀 생성 서비스를 구현했다.
  • 왜: 페이지네이션 기반 조회 API와 별도로 시작일/종료일 기준의 전체 정산 데이터를 한 번에 내려받을 수 있어야 한다는 요구사항을 충족하기 위해서다.
  • 어떻게:
    • AdminCalculateController에 7개 엔드포인트(.../excel)를 추가하고 공통 다운로드 헤더(Content-Disposition, xlsx content type)를 적용했다.
    • AdminCalculateService에 7개 엑셀 생성 메서드를 추가해 기간 변환 후 전체 데이터 조회 및 XSSFWorkbook 기반 시트/헤더/행 작성을 구현했다.
    • 페이지네이션 대상(커뮤니티 정산, 크리에이터별 정산 3종)은 totalCount를 조회해 offset=0, limit=totalCount로 전체 행을 조회하도록 처리했다.
    • AdminChannelDonationCalculateControllerGET /admin/calculate/channel-donation-by-date/excel를 추가하고 기존 크리에이터별 엑셀 응답 로직과 동일한 규칙을 적용했다.
    • AdminChannelDonationCalculateService에 날짜별 엑셀 다운로드 메서드를 추가해 전체 데이터 기준 시트를 생성했다.
    • 테스트를 보강했다.
      • AdminChannelDonationCalculateControllerTest: 날짜별 엑셀 다운로드 테스트 추가
      • AdminChannelDonationCalculateServiceTest: 날짜별 엑셀 바이트 생성 테스트 추가
    • 실행 결과:
      • lsp_diagnostics (수정된 .kt 파일) → Kotlin LSP 미설정으로 진단 불가
      • ./gradlew test --tests "*AdminChannelDonationCalculate*" → 성공
      • ./gradlew build → 성공