fix(calculate): 크리에이터별 정산 조회 GROUP BY 오류를 수정한다
This commit is contained in:
20
docs/20260305_관리자정산콘텐츠크리에이터별조회SQL오류수정.md
Normal file
20
docs/20260305_관리자정산콘텐츠크리에이터별조회SQL오류수정.md
Normal file
@@ -0,0 +1,20 @@
|
||||
# 관리자 정산 콘텐츠 크리에이터별 조회 SQL 오류 수정 작업 계획
|
||||
|
||||
- [x] `/admin/calculate/content-by-creator` 호출 경로(Controller/Service/Repository)와 SQL 생성 지점을 확인한다.
|
||||
- [x] `ONLY_FULL_GROUP_BY` 위반 원인(`content_settlement_ratio` 비집계 컬럼)을 제거하는 최소 수정안을 적용한다.
|
||||
- [x] 수정된 쿼리가 기존 응답 스키마/정산 계산 로직과 호환되는지 코드 레벨로 검증한다.
|
||||
- [x] `lsp_diagnostics`, 관련 테스트, 빌드를 실행해 정상 동작을 검증한다.
|
||||
|
||||
## 검증 기록
|
||||
|
||||
### 1차 수정
|
||||
- 무엇을: `AdminCalculateQueryRepository#getCalculateContentByCreator`의 `groupBy`를 `member.id`에서 `member.id, creatorSettlementRatio.contentSettlementRatio`로 수정해 SELECT의 비집계 컬럼(`contentSettlementRatio`)이 GROUP BY에 포함되도록 변경했다.
|
||||
- 왜: `/admin/calculate/content-by-creator` 조회 시 `creator_settlement_ratio.content_settlement_ratio`가 SELECT 절에 존재하지만 GROUP BY에 없어 MySQL `ONLY_FULL_GROUP_BY` 모드에서 SQLSyntaxErrorException이 발생했기 때문이다.
|
||||
- 어떻게:
|
||||
- 경로/원인 확인: `AdminCalculateController#getCalculateContentByCreator` -> `AdminCalculateService#getCalculateContentByCreator` -> `AdminCalculateQueryRepository#getCalculateContentByCreator` 호출 체인을 확인했다.
|
||||
- 코드 수정: `src/main/kotlin/kr/co/vividnext/sodalive/admin/calculate/AdminCalculateQueryRepository.kt`의 콘텐츠 크리에이터별 조회 쿼리 `groupBy`를 보완했다.
|
||||
- 검증 실행 결과:
|
||||
- `lsp_diagnostics` (`AdminCalculateQueryRepository.kt`) -> Kotlin LSP 미설정으로 진단 불가
|
||||
- `./gradlew test` -> 성공
|
||||
- `./gradlew build -x test` -> 성공
|
||||
- `./gradlew tasks --all` -> 성공
|
||||
@@ -361,7 +361,7 @@ class AdminCalculateQueryRepository(private val queryFactory: JPAQueryFactory) {
|
||||
.and(order.createdAt.loe(endDate))
|
||||
.and(order.isActive.isTrue)
|
||||
)
|
||||
.groupBy(member.id)
|
||||
.groupBy(member.id, creatorSettlementRatio.contentSettlementRatio)
|
||||
.orderBy(member.id.desc())
|
||||
.offset(offset)
|
||||
.limit(limit)
|
||||
|
||||
Reference in New Issue
Block a user