Skip to content

[fix] Code Time 추천 로직 버그 수정 (시그널 제외 및 순서 문제)#387

Merged
sgo722 merged 4 commits intodevelopfrom
feature/#386
Jan 14, 2026
Merged

[fix] Code Time 추천 로직 버그 수정 (시그널 제외 및 순서 문제)#387
sgo722 merged 4 commits intodevelopfrom
feature/#386

Conversation

@sgo722
Copy link
Contributor

@sgo722 sgo722 commented Jan 14, 2026

Summary

Code Time 추천 로직의 두 가지 핵심 버그를 수정했습니다:

문제 1: 시그널 제외 로직 문제

  • 현상: 추천 세션 내에서 시그널을 보낸 사용자가 즉시 사라짐
  • 원인: filterExcludedMembers()에서 실시간 필터링 시 getRecentSignalMemberIds() 호출
  • 해결: 실시간 필터링에서 시그널 체크 제거, 차단 관계만 즉시 반영
  • 효과: 추천 세션 일관성 유지 (10:00 추천은 22:00까지, 22:00 추천은 10:00까지 유지)

문제 2: 추천 순서 역전 문제

  • 현상: 버킷 정책(B1→B2→B3→B4) 순서가 역전되어 표시됨
  • 원인: findCodeTimeIdsByTimeRange() 쿼리에서 ORDER BY DESC 사용
  • 해결: ORDER BY ASC로 변경하여 생성 순서 유지
  • 효과: 지역 기반 우선순위가 올바르게 적용됨

변경 사항

수정된 파일

  1. CodeTimeService.kt:154-186 - 시그널 제외 로직 제거
  2. RecommendationHistoryJpaRepository.kt:130 - 정렬 방향 수정 (DESC → ASC)

테스트 추가

  • CodeTimeServiceTest.kt - 8개 단위 테스트 (모두 통과 ✅)
    • 추천 세션 일관성 검증
    • 차단 관계 즉시 제외 검증
    • 추천 순서 유지 검증
    • WITHDRAWN 회원 자동 필터링 검증

의존성 추가

  • mockito-kotlin 5.1.0 - Kotlin 테스트를 위한 Mockito wrapper

Test Plan

  • 단위 테스트 8개 작성 및 통과 확인
  • 전체 테스트 스위트 통과 (38개 테스트)
  • 추천 세션 일관성 수동 테스트
    • 10:00에 추천 받기
    • 시그널 전송
    • 22:00 이전 재조회 → 여전히 표시되는지 확인
    • 22:00 이후 새 추천 → 제외되는지 확인
  • 추천 순서 수동 테스트
    • 추천 생성 후 순서 확인
    • 여러 번 조회해도 같은 순서인지 확인

참고 문서

sgo722 and others added 3 commits January 13, 2026 16:41
- 추천 세션 일관성 유지를 위해 실시간 필터링에서 시그널 체크 제거
- 차단 관계만 즉시 제외, 시그널은 다음 세션부터 제외
- DailyCodeMatchingService와 동작 통일

Resolves #386
- DESC를 ASC로 변경하여 생성 순서 유지
- 버킷 정책 우선순위(B1→B2→B3→B4) 보존
- Daily Code Matching과 정렬 방향 통일

Resolves #386
- 추천 세션 일관성 검증 (시그널 제외 로직)
- 차단 관계 즉시 제외 검증
- 추천 순서 유지 검증
- WITHDRAWN 회원 자동 필터링 검증
- mockito-kotlin 의존성 추가
- PreVerificationStrategyTest asyncNotificationService 파라미터 추가

Resolves #386

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@sgo722 sgo722 merged commit c420e22 into develop Jan 14, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant