할인코드

ID: 470fdd09-2ffa-4301-8b49-3750f0d125cb

보통 완료

할인코드 테이블을 만들어야해.
할인코드 테이블을 만들고, 결제할 때 할인코드를 입력하면 할인된 금액을 결제하게 해야해.

http://localhost:3000/admin
어드민에 할인코드 메뉴도 있어야함

할인코드는 상품별로 할인율을 정할 수 있어야함.
(전체 적용도 가능)

할인코드 이름 / 할인코드 자동 생성 / 할인 유형 (원, %) / 적용 상품 / 최대 사용횟수 / 최소 구매 금액 / 만료일 / 활성화

첨부 이미지

이미지 추가 (Ctrl+V로 붙여넣기 또는 클릭)

JPEG, PNG, GIF, WebP / 최대 10MB

담당자: 팀리드
생성일: 2026년 02월 28일 12:51

활동 로그

  • 팀리드 팀 작업 완료 - 할인코드

    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