컨트롤러 연동: ref 추적 + 크레딧 차감 + 보상 트리거 + 공유 URL

ID: 08448ae0-95cf-46cc-b3cf-f91c2928daa3

높음 완료

## 작업 내용

### 1. ApplicationController — ref 파라미터 쿠키 저장
- `before_action :track_referral_code`
- `params[:ref]` 있으면 → `cookies.signed[:referral_code] = { value: params[:ref], expires: 30.days }`
- 이미 로그인된 유저이고 기존 회원이면 무시 (신규 가입 시에만 의미)

### 2. DiagnosesController — 진단 시작 시 크레딧 차감
- Big5/성장마인드셋/행복도 진단 시작 시 진단 크레딧 1개 차감
- DiagnosisType에 `requires_diagnosis_credit?` 메서드 추가: category.slug가 big5/happiness/growth_mindset인 경우
- 크레딧 부족 시 redirect with flash alert
- 기존 진단 시작 로직 확인 후 적절한 위치에 삽입

### 3. DiagnosisSessionsController 또는 SessionManager — 보상 트리거
- 강점 진단 완료 시 `Referrals::RewardService.call(diagnosis_session:)` 호출
- 기존 complete 로직 확인 후 after_commit 또는 직접 호출

### 4. 회원가입 흐름 — 리퍼럴 추적
- OAuth 콜백(OmniAuth) 또는 매직링크 가입 시:
- `cookies.signed[:referral_code]`가 있으면 → `Referrals::TrackingService.call(referee: user, referral_code: code)`
- 가입 완료 후 쿠키 삭제

### 5. 공유 URL에 ref 파라미터 추가
- `app/views/diagnoses/result.html.erb`: `data-share-menu-url-value`와 `data-kakao-share-url-value`에 `?ref=current_user.referral_code` 추가
- `app/views/diagnoses/_tab_summary.html.erb`: 동일하게 ref 파라미터 추가
- 로그인 유저만 ref 파라미터 추가 (비로그인은 빈 URL)

### 6. i18n
- `config/locales/diagnosis/ko.yml`에 크레딧 부족 메시지 추가:
- `diagnosis.flash.insufficient_diagnosis_credits: "진단 크레딧이 부족합니다. 크레딧을 구매하거나 친구에게 공유하여 무료 크레딧을 받으세요."`
- en, zh, vi도 추가

## 완료 기준
- ref 파라미터 쿠키 저장 동작
- Big5/성장/행복도 진단 시작 시 크레딧 차감
- 크레딧 부족 시 진단 시작 불가 + flash 메시지
- 강점 진단 완료 시 리퍼럴 보상 트리거
- 신규 가입 시 리퍼럴 추적 기록
- 공유 URL에 ref 파라미터 포함
- 테스트 통과

첨부 이미지

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

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

담당자: developer-1
생성일: 2026년 03월 26일 05:46

활동 로그

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

    2026년 03월 26일 06:35:49

  • 팀리드 상태 변경: 할 일 → 리뷰

    2026년 03월 26일 05:55:58