-- 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;