diff --git a/ga-common/src/main/resources/db/migration/V26__규제한도마스터.sql b/ga-common/src/main/resources/db/migration/V26__규제한도마스터.sql new file mode 100644 index 0000000..46888bb --- /dev/null +++ b/ga-common/src/main/resources/db/migration/V26__규제한도마스터.sql @@ -0,0 +1,65 @@ +-- V26: 규제 한도 마스터 + 1200%룰 기본 데이터 (보험업감독규정 2024년 기준) + +-- ============================================================ +-- 1. regulatory_limit — 감독규정 한도 마스터 (개정 이력 추적) +-- ============================================================ + +CREATE TABLE regulatory_limit ( + limit_id BIGSERIAL PRIMARY KEY, + limit_type VARCHAR(30) NOT NULL, + product_category VARCHAR(30), -- NULL = ALL 상품 적용 + limit_value NUMERIC(10,2) NOT NULL, + unit VARCHAR(10) NOT NULL, -- PERCENT / YEAR + effective_from DATE NOT NULL, + effective_to DATE, -- NULL = 현재 유효 + regulation_ref VARCHAR(100), + description VARCHAR(500), + is_active BOOLEAN NOT NULL DEFAULT TRUE, + created_at TIMESTAMP NOT NULL DEFAULT NOW(), + created_by BIGINT, + updated_at TIMESTAMP, + updated_by BIGINT +); + +CREATE INDEX idx_rl_type_category ON regulatory_limit(limit_type, product_category, effective_from DESC); +CREATE INDEX idx_rl_active ON regulatory_limit(is_active) WHERE is_active = TRUE; + +-- ============================================================ +-- 2. 기본 데이터 INSERT — 2024년 한국 보험업감독규정 표준 +-- ============================================================ + +INSERT INTO regulatory_limit + (limit_type, product_category, limit_value, unit, effective_from, effective_to, regulation_ref, description) +VALUES + ('TOTAL_RATIO', NULL, 1200, 'PERCENT', '2024-01-01', NULL, + '보험업감독규정 제5-15조의5', '총 모집수수료 한도 — 첫 1년 영업보험료의 1200% 이내'), + + ('FIRST_YEAR_RATIO', NULL, 35, 'PERCENT', '2024-01-01', NULL, + '보험업감독규정 제5-15조의5', '1차년도 지급 한도'), + + ('INSTALLMENT_YEARS', NULL, 7, 'YEAR', '2024-01-01', NULL, + '보험업감독규정 제5-15조의5', '분급 연한'); + +-- ============================================================ +-- 3. 공통코드 그룹 +-- ============================================================ + +INSERT INTO common_code_group (group_code, group_name, description, is_system, sort_order) VALUES + ('LIMIT_TYPE', '한도유형', 'TOTAL_RATIO/FIRST_YEAR_RATIO/INSTALLMENT_YEARS', 'Y', 250), + ('LIMIT_UNIT', '한도단위', 'PERCENT/YEAR', 'Y', 260), + ('PRODUCT_CATEGORY', '상품카테고리', 'ALL/LIFE/ANNUITY/SAVINGS/EXCLUDED_AUTO/EXCLUDED_HEALTH', 'Y', 270) +ON CONFLICT (group_code) DO NOTHING; + +INSERT INTO common_code (group_code, code, code_name, code_desc, sort_order) VALUES + ('LIMIT_TYPE', 'TOTAL_RATIO', '총한도비율', '총 모집수수료 한도율 (1200%)', 10), + ('LIMIT_TYPE', 'FIRST_YEAR_RATIO', '1차년도한도', '1차년도 지급 한도율 (35%)', 20), + ('LIMIT_TYPE', 'INSTALLMENT_YEARS', '분급연한', '수수료 분급 기간 (7년)', 30), + ('LIMIT_UNIT', 'PERCENT', '퍼센트', '%', 10), + ('LIMIT_UNIT', 'YEAR', '년', '연도', 20), + ('PRODUCT_CATEGORY', 'ALL', '전체', '모든 상품 공통 적용', 10), + ('PRODUCT_CATEGORY', 'LIFE', '종신', '종신보험', 20), + ('PRODUCT_CATEGORY', 'ANNUITY', '연금', '연금보험', 30), + ('PRODUCT_CATEGORY', 'SAVINGS', '저축', '저축보험', 40), + ('PRODUCT_CATEGORY', 'EXCLUDED_AUTO', '자동차제외', '1200%룰 적용 제외 — 자동차보험', 50), + ('PRODUCT_CATEGORY', 'EXCLUDED_HEALTH', '실손제외', '1200%룰 적용 제외 — 실손의료비', 60) +ON CONFLICT (group_code, code) DO NOTHING;