[크레딧통합 PR1] DB 마이그레이션 — balance decimal 변환 + 데이터 이관
ID: e52b4db2-1665-4d52-abad-0e0953592423
## 설명
개인 크레딧(UserCredit)의 balance를 integer → decimal(10,1)로 변환하고, diagnosis_balance 잔액을 balance로 이관합니다.
### 마이그레이션 내용
1. `user_credits.balance`: integer → decimal(10,1), default: 0.0
2. `credit_transactions.amount`: integer → decimal(10,1)
3. `credit_transactions.balance_after`: integer → decimal(10,1)
4. 데이터 이관: `UPDATE user_credits SET balance = balance + (diagnosis_balance * 0.2)`
5. `UserCredit`에 `self.ignored_columns += ["diagnosis_balance"]` 추가 (2단계 제거 패턴)
### 주의사항
- migrate/rollback/migrate 3단계 검증 필수
- development DB 카운트 변동 없음 확인
- 기존 구매자 없으므로 이관 리스크 낮음
## 완료 기준
- [ ] 마이그레이션 migrate/rollback/migrate 통과
- [ ] `balance` 컬럼이 decimal(10,1) 타입
- [ ] `credit_transactions.amount/balance_after`가 decimal(10,1)
- [ ] 기존 데이터 이관 완료 (balance에 diagnosis_balance * 0.2 합산)
- [ ] `ignored_columns`에 diagnosis_balance 추가
- [ ] development DB 카운트 변동 없음
## 의존성
없음 (첫 번째 작업)
## 관련 파일
- `db/migrate/YYYYMMDD_unify_credit_balance.rb` (신규)
- `app/models/user_credit.rb`
첨부 이미지
이미지 추가 (Ctrl+V로 붙여넣기 또는 클릭)
JPEG, PNG, GIF, WebP / 최대 10MB
활동 로그
-
팀팀리드 크레딧 통합 PR1~PR5 전체 구현 완료
2026년 03월 30일 12:16:25
상세 보기
## 수정된 기능
- 2가지 개인 크레딧(리포트/진단) → 단일 크레딧으로 통합
- 1크레딧 = 19,800원, 리포트=1.0, 심화진단=0.2, 추천보상=0.2
- 워크스페이스 선물: 1크레딧 단위, 자기 선물 가능
- diagnosis_balance 컬럼 DB에서 완전 제거## 변경 규모
- 39 파일, +187 / -1,030 lines
- 삭제: DiagnosisCreditPurchaseService, DiagnosisCreditsController, 진단 크레딧 구매 뷰/JS## UX/UI 검토 결과
- 전체 평가: 기능적 통과, P2/P3 개선사항은 후속 작업
- 선물 모달 2종 통합, 사이드바 단일 뱃지, 크레딧 대시보드 단일 잔액## 테스트/보안 검증
- 1635 runs, 13 failures, 8 errors (모두 크레딧 무관 기존 이슈)
- 크레딧 관련 실패: 0건
- add!에 lock! 추가 (race condition 방지)
- BigDecimal 사용으로 부동소수점 오류 방지## 해결된 문제
- ConfirmationService 테스트가 workspace_id 분기 미반영 → 수정 완료
- admin 뷰 하드코딩 한국어 → i18n 처리## 남은 이슈
- blog/posts Dangerous Send (크레딧 무관, 별도 티켓 필요)
- Payment.diagnosis_credit enum 유지 (기존 레코드 3건 존재) -
팀팀리드 상태 변경: 진행 중 → 리뷰
2026년 03월 30일 11:53:49
-
팀팀리드 크레딧 통합 작업 시작 - PR1~PR5 순차 진행
2026년 03월 30일 11:41:25
상세 보기
## 작업 계획
- 목표: 2가지 개인 크레딧(리포트/진단)을 단일 크레딧으로 통합
- 접근 방식: PR1→PR2→PR3→PR4→PR5 순차 진행 (의존성 체인)## 현재 상태
- 보드 현황: backlog 9 / todo 11 / in_progress 1 / review 9 / done 158
- PR1: DB 마이그레이션 (balance decimal 변환)
- PR2: 모델 통합
- PR3: 서비스 통합
- PR4: 컨트롤러/라우트 통합
- PR5: 뷰/UI/i18n 통합 -
팀팀리드 티켓 클레임 완료
2026년 03월 30일 11:41:19
-
팀팀리드 기능 계획 수립 — 크레딧 시스템 통합
2026년 03월 30일 11:35:57
상세 보기
## 기능 개요
- 2가지 개인 크레딧(리포트/진단)을 단일 크레딧으로 통합
- 1크레딧 = 19,800원 (세전 18,000원 + VAT 10%)
- 강점 리포트 = 1.0 크레딧, 심화 진단 = 0.2 크레딧
- 워크스페이스 → 개인 크레딧 선물 (자기 선물 포함)## 분석 결과
- 영향 범위: 모델 6개, 서비스 7개, 컨트롤러 5개, 뷰 11개, JS 1개, i18n 4언어
- 삭제 대상: DiagnosisCreditPurchaseService, DiagnosisCreditsController, 진단 크레딧 구매 뷰/JS## 생성된 티켓 (5개)
1. [크레딧통합 PR1] DB 마이그레이션 (priority: high)
2. [크레딧통합 PR2] 모델 통합 (priority: high)
3. [크레딧통합 PR3] 서비스 통합 (priority: high)
4. [크레딧통합 PR4] 컨트롤러/라우트 통합 (priority: high)
5. [크레딧통합 PR5] 뷰/UI/i18n 통합 (priority: medium)## 기술적 결정
- balance: integer → decimal(10,1) (0.2 단위 차감)
- diagnosis_balance: 2단계 제거 패턴 (ignored_columns → 별도 마이그레이션)
- credit_type: 기존 이력 유지, 신규 "unified"
- DiagnosisType#credit_cost로 진단별 차감량 캡슐화 -
팀팀리드 상태 변경: 할 일 → 백로그
2026년 03월 30일 11:35:34