feat: 리포트 3종 백엔드 구현(실적/조직별/환수위험) + Excel export 트랜잭션 수정
- ReportController/Service/Mapper(.xml) + VO 3종(PerfReportRow/OrgReportRow/ChargebackRiskRow) - /api/report/performance: settle_month별 settle_master 집계(설계사수/모집/유지/실지급) - /api/report/org: 정산월 기준 organization 조인 조직별 집계 - /api/report/chargeback-risk: recruit_ledger 계약별 경과월 + chargeback_grade 환수율/위험등급 - 각 read(List) + export(Cursor→xlsx). 신규 테이블 없음(읽기전용 집계) - ExcelService.exportLargeExcel @Transactional(readOnly=true) 추가 — Cursor 가 세션 밖에서 닫혀 모든 export(기존 agent 포함)가 500 나던 잠복버그 수정. 1줄로 export 인프라 전체 복구 검증: 3 read 200(실데이터), 3 export 200(유효 xlsx), agent export 복구 확인. Playwright 84화면 재실행 FAIL 0 (PASS59/WARN25, WARN은 차트/폼 등 탐지한계) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -13,6 +13,7 @@ import org.apache.poi.ss.usermodel.*;
|
||||
import org.apache.poi.xssf.streaming.SXSSFSheet;
|
||||
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.InputStream;
|
||||
@@ -42,6 +43,7 @@ public class ExcelService {
|
||||
/* =========================================================
|
||||
다운로드 (Export) — SXSSF + Cursor 스트리밍
|
||||
========================================================= */
|
||||
@Transactional(readOnly = true)
|
||||
public <T> void exportLargeExcel(String fileName, Class<T> clazz,
|
||||
Supplier<Cursor<T>> cursorSupplier,
|
||||
HttpServletResponse response) {
|
||||
|
||||
Reference in New Issue
Block a user