-- V28: 차등 환수 룰 (chargeback_grade — 해약 경과월별 단계별 환수 비율)
-- 기존 chargeback_rule(V3)은 계약별 일반 룰 — 본 테이블은 해약 시점별 차등 비율 마스터

-- ============================================================
-- 1. chargeback_grade — 해약 경과월별 환수 비율 마스터
-- ============================================================

CREATE TABLE chargeback_grade (
    grade_id            BIGSERIAL       PRIMARY KEY,
    product_category    VARCHAR(30),                            -- NULL = ALL 상품
    months_from         INT             NOT NULL,               -- 해약 경과월 시작 (이상)
    months_to           INT,                                    -- 해약 경과월 종료 (이하), NULL = 무한대
    chargeback_percent  NUMERIC(5,2)    NOT NULL,               -- 환수율 %
    effective_from      DATE            NOT NULL,
    effective_to        DATE,                                   -- NULL = 현재 유효
    is_active           BOOLEAN         NOT NULL DEFAULT TRUE,
    created_at          TIMESTAMP       NOT NULL DEFAULT NOW(),
    created_by          BIGINT,
    updated_at          TIMESTAMP,
    updated_by          BIGINT,
    CHECK (months_from >= 0 AND (months_to IS NULL OR months_to >= months_from))
);

CREATE INDEX idx_cbg_category_months ON chargeback_grade(product_category, months_from, effective_from DESC);

-- ============================================================
-- 2. 기본 데이터 (2024-01-01, NULL=ALL 상품, 표준 차등 환수 룰)
-- ============================================================

INSERT INTO chargeback_grade
    (product_category, months_from, months_to, chargeback_percent, effective_from)
VALUES
    (NULL,  1, 12,   100, '2024-01-01'),   -- 1~12개월: 전액 환수
    (NULL, 13, 24,    50, '2024-01-01'),   -- 13~24개월: 50%
    (NULL, 25, 36,    25, '2024-01-01'),   -- 25~36개월: 25%
    (NULL, 37, 84,    10, '2024-01-01'),   -- 37~84개월: 10%
    (NULL, 85, NULL,   0, '2024-01-01')    -- 85개월 이상: 환수 없음
ON CONFLICT DO NOTHING;
