백로그
0할 일
0진행 중
0리뷰
0완료 (전체)
1컨트롤러 연동: ref 추적 + 크레딧 차감 + 보상 트리거 + 공유 URL
## 작업 내용 ### 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 파라미터 포함 - 테스트 통과