부모 티켓
1개 티켓

백로그

0
티켓 없음

할 일

0
티켓 없음

진행 중

0
티켓 없음

리뷰

0
티켓 없음

완료 (전체)

1
높음 3236210a
서브 티켓 [리퍼럴 PR1] DB 레이어 — 크레딧 확장 + Referral 테이블

마이그레이션 + 모델 구현 (TDD)

## 작업 내용 ### 1. 마이그레이션 4개 생성 1. `add_diagnosis_balance_to_user_credits` — diagnosis_balance(integer, default: 0, null: false) 2. `add_credit_type_to_credit_transactions` — credit_type(string, default: "report", null: false) + index 3. `add_referral_code_to_users` — referral_code(string) + unique index 4. `create_referrals` — id:uuid, referrer_id(uuid FK→users), referee_id(uuid FK→users, unique), status(string, default: "pending"), rewarded_at(datetime), diagnosis_session_id(uuid) + index(referrer_id, status) ### 2. 모델 변경 - **UserCredit**: diagnosis_sufficient?(amount), deduct_diagnosis!(amount, description:, diagnosis_session:), add_diagnosis!(amount, description:, payment:) - **CreditTransaction**: credit_type validation ('report' | 'diagnosis'), transaction_type에 'referral' 추가 - **User**: before_create :generate_referral_code, has_many :referrals_given/:referrals_received, referral_code unique - **Referral (신규)**: belongs_to referrer/referee, belongs_to diagnosis_session(optional), status validation (pending/completed/rewarded/expired), validates referee_id uniqueness ### 3. TDD - test/models/user_credit_test.rb 확장 (diagnosis_balance 관련) - test/models/referral_test.rb 신규 - test/fixtures/referrals.yml 신규 - 기존 user_credit_test.rb 테스트가 깨지지 않는지 확인 ### 완료 기준 - 4개 마이그레이션 성공 (가역적) - 기존 UserCredit.deduct!/add! 동작 변경 없음 - 모든 테스트 통과

D
developer-1
3 months