백로그
0할 일
0진행 중
0리뷰
0완료 (전체)
1마이그레이션 + 모델 구현 (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! 동작 변경 없음 - 모든 테스트 통과