Skip to content

[feat] 추천 로직 나이 우선순위 정책 적용 (R_V2)#392

Merged
sgo722 merged 5 commits intodevelopfrom
feature/#391
Jan 28, 2026
Merged

[feat] 추천 로직 나이 우선순위 정책 적용 (R_V2)#392
sgo722 merged 5 commits intodevelopfrom
feature/#391

Conversation

@sgo722
Copy link
Contributor

@sgo722 sgo722 commented Jan 28, 2026

Summary

  • 추천 시스템에 나이 우선순위 정책 적용 (기획서 R_V2)
  • 0~5살 차이 후보 우선 추천, 6살 이상은 버킷 점프
  • Resolver 패턴으로 미래 회원별 설정 확장 대비

Changes

도메인 모델

  • AgeTier enum: 나이 차이 Tier (A1: 02, A2: 35, A3: 6+)
  • AgePreference Value Object: 나이 선호도 설정

비즈니스 로직

  • AgePreferenceResolver: Config에서 나이 설정 조회 (Resolver 패턴)
  • RecommendationBucketService: 버킷별 나이 필터링/정렬 로직 추가
  • DailyCodeMatchingService, CodeTimeService: 나이 정보 전달

설정

  • RecommendationConfigEntity: 나이 설정 필드 추가
    • agePreferredMaxDiff: 우선 추천 최대 나이 차이 (기본: 5)
    • ageCutoffDiff: 컷오프 기준 (기본: 6)
    • ageAllowCutoffWhenInsufficient: 부족 시 6살+ 허용 (기본: true)

DB 마이그레이션

  • V21__add_age_preference_to_recommendation_config.sql

Test plan

  • AgeTier 단위 테스트
  • AgePreference 단위 테스트
  • AgePreferenceResolver 단위 테스트
  • 버킷별 나이 필터링 통합 테스트
  • 실제 추천 결과 확인 (0~5살 우선, 6살+ 후순위)

Related

🤖 Generated with Claude Code

- AgeTier enum 추가 (A1: 0~2, A2: 3~5, A3: 6+)
- AgePreference Value Object 추가 (Resolver 패턴 적용)
- RecommendationConfig에 나이 설정 필드 추가
- RecommendationBucketService 나이 필터링/정렬 로직 구현
- DailyCodeMatchingService, CodeTimeService 나이 정보 전달
- Flyway V20 마이그레이션 추가
@sgo722 sgo722 self-assigned this Jan 28, 2026
- org.mockito.kotlin.* → org.mockito.Mockito.* 변경
- mockito-kotlin 라이브러리 미사용으로 표준 Mockito API 사용
- mock() → mock(Class::class.java) 형태로 변환
- whenever() → `when`() 형태로 변환

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
sgo722 and others added 2 commits January 28, 2026 21:04
- mockito-kotlin 대신 표준 Mockito 사용
- nullable 파라미터 처리를 위한 anyNullable() 헬퍼 추가
- 차단 필터링 테스트에서 getMembersByIds 두 번째 호출 mock 추가

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@sgo722 sgo722 merged commit 17e36d1 into develop Jan 28, 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