[리퍼럴 PR2] 비즈니스 로직 — 리퍼럴 보상/추적 서비스

ID: afa229d0-c6fc-4dc6-afb1-939cb2b56923

높음 완료

## 설명
리퍼럴 추적 및 보상 로직을 서비스 객체로 구현.

### 서비스
1. **Referrals::TrackingService** — 신규 가입 시 referral_code로 Referral(pending) 생성
- 자기 자신 추천 방지
- 이미 추천인 있으면 무시
2. **Referrals::RewardService** — 강점 진단 완료 시 리퍼럴 보상
- 조건: referee의 첫 strength 진단 완료
- referrer의 월간 보상 < 10개
- referrer diagnosis_balance +1
- referral status → "rewarded"
- 중복 보상 방지

## 완료 기준
- [ ] TrackingService: 정상 생성, 자기추천 방지, 중복 방지
- [ ] RewardService: 보상 지급, 월 10개 상한, 중복 방지, strength 아닌 진단은 무시
- [ ] 테스트 커버리지 95%+

## 의존성
PR#1 완료 후

첨부 이미지

이미지 추가 (Ctrl+V로 붙여넣기 또는 클릭)

JPEG, PNG, GIF, WebP / 최대 10MB

담당자: 팀리드
생성일: 2026년 03월 26일 05:27

활동 로그

  • 팀리드 상태 변경: 리뷰 → 완료

    2026년 03월 26일 06:35:33

  • 팀리드 팀 작업 완료 - [리퍼럴 PR2] 비즈니스 로직

    2026년 03월 26일 05:45:27

    상세 보기

    ## 수정된 기능
    - Referrals::TrackingService: 신규 가입 시 referral_code → Referral(pending) 생성
    - Referrals::RewardService: strength 진단 완료 → referrer diagnosis_balance +1, 월 10개 상한

    ## 테스트 결과
    - 12 runs, 24 assertions, 0 failures

    ## 기술적 결정
    - DiagnosisType 연관관계: `category` (not `diagnosis_category`)
    - 테스트에서 referral_code는 update_column으로 설정 (fixture에 없으므로)

  • 팀리드 상태 변경: 진행 중 → 리뷰

    2026년 03월 26일 05:45:23

  • 팀리드 위임: developer-1에게 'Referrals::TrackingService + RewardService TDD 구현' 작업 배정

    2026년 03월 26일 05:41:05

  • 팀리드 티켓 클레임 완료

    2026년 03월 26일 05:40:46

  • 팀리드 상태 변경: 할 일 → 백로그

    2026년 03월 26일 05:28:18