마이그레이션 + 모델 구현 (TDD)
ID: 3236210a-1655-4763-9b1e-a219d2edfe47
## 작업 내용
### 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! 동작 변경 없음
- 모든 테스트 통과
첨부 이미지
이미지 추가 (Ctrl+V로 붙여넣기 또는 클릭)
JPEG, PNG, GIF, WebP / 최대 10MB
활동 로그
-
팀팀리드 상태 변경: 리뷰 → 완료
2026년 03월 26일 06:35:46
-
팀팀리드 상태 변경: 할 일 → 리뷰
2026년 03월 26일 05:40:09