From d5db08facabb75866ea81efe3d639e6fd19fc433 Mon Sep 17 00:00:00 2001 From: Klaus Date: Thu, 26 Feb 2026 01:08:26 +0900 Subject: [PATCH] =?UTF-8?q?fix(rank):=20=ED=99=88=20=EC=BD=98=ED=85=90?= =?UTF-8?q?=EC=B8=A0=20=EB=9E=AD=ED=82=B9=20=EC=B0=A8=EB=8B=A8=20=ED=81=AC?= =?UTF-8?q?=EB=A6=AC=EC=97=90=EC=9D=B4=ED=84=B0=EB=A5=BC=20=EC=96=91?= =?UTF-8?q?=EB=B0=A9=ED=96=A5=EC=9C=BC=EB=A1=9C=20=ED=95=84=ED=84=B0?= =?UTF-8?q?=EB=A7=81=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...260226_홈콘텐츠랭킹차단크리에이터필터링.md | 24 +++++++++++++++++++ .../sodalive/rank/RankingRepository.kt | 12 +++++++--- 2 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 docs/20260226_홈콘텐츠랭킹차단크리에이터필터링.md diff --git a/docs/20260226_홈콘텐츠랭킹차단크리에이터필터링.md b/docs/20260226_홈콘텐츠랭킹차단크리에이터필터링.md new file mode 100644 index 00000000..5798c329 --- /dev/null +++ b/docs/20260226_홈콘텐츠랭킹차단크리에이터필터링.md @@ -0,0 +1,24 @@ +- [x] 홈 `fetchData` 콘텐츠 랭킹 조회 경로 및 차단 적용 패턴 확인 +- [x] `RankingRepository.getAudioContentRanking`에 양방향 차단(내가 차단/나를 차단) 조건 적용 +- [x] 변경 파일 진단 및 테스트/빌드 검증 수행 +- [x] 검증 결과 기록 + +## 1차 구현 검증 기록 +- 무엇: 홈 `fetchData`의 `contentRanking`에서 내가 차단한 크리에이터와 나를 차단한 크리에이터의 콘텐츠를 + 모두 제외하도록 서비스 레벨 필터를 추가했다. +- 왜: 기존 랭킹 조회 쿼리에는 한 방향 차단만 반영되어 양방향 차단 관계를 완전히 차단하지 못할 수 있기 때문이다. +- 어떻게: + - `lsp_diagnostics`: Kotlin(`.kt`)용 LSP 서버가 현재 환경에 없어 도구 기반 진단은 수행 불가. + - `./gradlew ktlintCheck`: 성공. + - `./gradlew test`: 성공. + - `./gradlew build -x test`: 성공. + +## 2차 수정 검증 기록 +- 무엇: 서비스(`HomeService`)에서 처리하던 `contentRanking` 차단 필터를 제거하고, `RankingRepository.getAudioContentRanking` + 쿼리의 `blockMemberCondition`을 양방향 차단 조건으로 수정했다. +- 왜: 홈 서비스가 아닌 랭킹 데이터 조회 계층에서 차단 정책을 일관되게 보장하기 위해서다. +- 어떻게: + - `lsp_diagnostics`: Kotlin(`.kt`)용 LSP 서버가 현재 환경에 없어 도구 기반 진단은 수행 불가. + - `./gradlew ktlintCheck`: 성공. + - `./gradlew test`: 성공. + - `./gradlew build -x test`: 성공. diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/rank/RankingRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/rank/RankingRepository.kt index a95c5e05..69670edb 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/rank/RankingRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/rank/RankingRepository.kt @@ -80,9 +80,15 @@ class RankingRepository( locale: String? = null ): List { val blockMemberCondition = if (memberId != null) { - blockMember.member.id.eq(member.id) - .and(blockMember.isActive.isTrue) - .and(blockMember.blockedMember.id.eq(memberId)) + blockMember.isActive.isTrue + .and( + blockMember.member.id.eq(member.id) + .and(blockMember.blockedMember.id.eq(memberId)) + .or( + blockMember.member.id.eq(memberId) + .and(blockMember.blockedMember.id.eq(member.id)) + ) + ) } else { null }