-- V125: 환수채권 연체이자 (overdue interest on clawback receivables)
--       미수 환수채권이 이월될 때 연체기간만큼 단리 연체이자를 월별 적립한다.
--       이자율 0(기본값) 이면 적립 없음 — 기존 동작과 동일(안전 폴백).

-- ============================================================
-- 1. clawback_receivable 누적 연체이자 컬럼
-- ============================================================

ALTER TABLE clawback_receivable
    ADD COLUMN accrued_interest NUMERIC(15,2) NOT NULL DEFAULT 0;

COMMENT ON COLUMN clawback_receivable.accrued_interest IS '누적 연체이자 (단리, balance 에 포함되어 회수/상계됨)';

-- ============================================================
-- 2. clawback_interest (월별 연체이자 적립 이력 — 멱등 reverse용)
-- ============================================================

CREATE TABLE clawback_interest (
    interest_id     BIGSERIAL     PRIMARY KEY,
    receivable_id   BIGINT        NOT NULL REFERENCES clawback_receivable(receivable_id),
    settle_month    CHAR(6)       NOT NULL,
    interest_amount NUMERIC(15,2) NOT NULL,
    created_at      TIMESTAMP     NOT NULL DEFAULT NOW(),
    CONSTRAINT uq_clawback_interest UNIQUE (receivable_id, settle_month)
);

COMMENT ON TABLE  clawback_interest IS '환수채권 월별 연체이자 적립 이력';
COMMENT ON COLUMN clawback_interest.receivable_id   IS '환수채권 ID';
COMMENT ON COLUMN clawback_interest.settle_month    IS '적립 정산월(YYYYMM)';
COMMENT ON COLUMN clawback_interest.interest_amount IS '당월 적립 연체이자(원금잔액 × 월이자율)';

CREATE INDEX idx_clawback_interest_settle_month ON clawback_interest (settle_month);

-- ============================================================
-- 3. system_config 시드 — 연체이자율 / 거치기간
--    기본값 0 → 적립 없음(기존 동작 보존). 운영정책에 맞게 수정.
-- ============================================================

INSERT INTO system_config (config_key, config_value, config_group, value_type, description) VALUES
    ('CLAWBACK_OVERDUE_INTEREST_RATE', '0',  'COMMISSION', 'NUMBER', '환수채권 연 연체이자율(%) — 0이면 미적립'),
    ('CLAWBACK_INTEREST_GRACE_MONTHS', '0',  'COMMISSION', 'NUMBER', '환수채권 연체이자 거치기간(개월) — 발생 후 N개월 경과부터 적립')
ON CONFLICT (config_key) DO NOTHING;
