할인코드
ID: 470fdd09-2ffa-4301-8b49-3750f0d125cb
할인코드 테이블을 만들어야해.
할인코드 테이블을 만들고, 결제할 때 할인코드를 입력하면 할인된 금액을 결제하게 해야해.
http://localhost:3000/admin
어드민에 할인코드 메뉴도 있어야함
할인코드는 상품별로 할인율을 정할 수 있어야함.
(전체 적용도 가능)
할인코드 이름 / 할인코드 자동 생성 / 할인 유형 (원, %) / 적용 상품 / 최대 사용횟수 / 최소 구매 금액 / 만료일 / 활성화
첨부 이미지
이미지 추가 (Ctrl+V로 붙여넣기 또는 클릭)
JPEG, PNG, GIF, WebP / 최대 10MB
활동 로그
-
팀팀리드 팀 작업 완료 - 할인코드
2026년 02월 28일 13:37:58
상세 보기
## 수정된 기능
### 1. DB + 모델 (model-dev)
- `discount_codes` 테이블 (이름, 코드, 유형, 값, 적용상품, 사용횟수, 최소금액, 만료일, 활성화)
- `discount_code_products` 조인 테이블
- `payments.discount_code_id` string→UUID FK 변환
- DiscountCode 모델 (enum, scopes, validations, calculate_discount, usable?, use!)
- DiscountCodeProduct 모델
- Payment 모델에 belongs_to :discount_code 추가### 2. 서비스 (model-dev)
- `DiscountCodes::ValidationService` - 코드 유효성 검증 (존재, 활성, 만료, 사용횟수, 최소금액, 상품 적용)
- `DiscountCodes::ApplyService` - 사용 기록 (current_uses 증가 + payment 연결)### 3. 어드민 CRUD (admin-dev)
- `Admin::DiscountCodesController` (index, show, new, create, edit, update, toggle_active)
- 뷰: index(검색/필터/정렬/페이지네이션), show, _form, new, edit
- 사이드바에 "Discount Codes" 메뉴 추가
- 라우트: admin 네임스페이스에 discount_codes 리소스
- 로케일: en, ko, zh, vi 4개 언어### 4. 결제 통합 (payment-dev)
- `DiscountCodesController#validate` JSON API (POST /discount_codes/validate)
- Stimulus `discount_code_controller.js` (입력→검증→UI 업데이트)
- `_discount_code.html.erb` partial
- PaymentsController checkout/success에 할인코드 로직 통합
- CheckoutService에 discount_code_id 파라미터 추가
- 서버측 재검증으로 보안 강화## 테스트 결과
- 전체: **752 runs, 1916 assertions, 0 failures, 0 errors**
- 신규 테스트: 모델 37개 + 서비스 16개 + 어드민 통합 25개 + 결제 컨트롤러 16개## 남은 이슈
- 없음 -
팀팀리드 상태 변경: 진행 중 → 완료
2026년 02월 28일 13:37:46
-
팀팀리드 위임: payment-dev에게 '결제 흐름에 할인코드 통합' 작업 배정
2026년 02월 28일 13:20:59
-
팀팀리드 위임: admin-dev에게 '할인코드 어드민 CRUD + UI' 작업 배정
2026년 02월 28일 13:20:41
-
팀팀리드 위임: model-dev에게 '할인코드 DB 마이그레이션 + 모델 + 서비스' 작업 배정
2026년 02월 28일 13:20:20
-
팀팀리드 작업 시작 - 할인코드
2026년 02월 28일 13:19:56
상세 보기
## 작업 계획
- 목표: 할인코드 테이블 생성, 결제 시 할인코드 적용, 어드민 관리 메뉴 구현
- 접근 방식: 3명의 에이전트로 병렬 작업 (모델/서비스, 어드민 UI, 결제 통합)## 코드베이스 분석 결과
- Payment 모델에 이미 `discount_amount`, `discount_code_id` 필드 존재
- CheckoutService에 `discount_amount` 파라미터 이미 지원
- 어드민 CRUD 패턴 확립됨 (Products 참고)
- DiscountCode 모델만 추가하면 기존 인프라와 자연스럽게 통합 가능## 서브 티켓 분해
1. **model-dev**: DB 마이그레이션 + 모델 + 서비스 + 테스트
2. **admin-dev**: 어드민 CRUD (컨트롤러/뷰/라우트/사이드바/로케일) + 테스트
3. **payment-dev**: 결제 흐름 통합 (할인코드 입력/검증/적용) + 테스트## 현재 상태
- 보드 현황: backlog 0 / todo 0 / in_progress 1 / review 0 / done 74
- 관련 기존 작업: 개인 결제/크레딧 기능 (done) -
팀팀리드 티켓 클레임 완료
2026년 02월 28일 13:17:29