feat(db): V26 규제한도 마스터 + 1200%룰 기본 데이터 (도메인 P1-1-a)
도메인 P1 시작 — 1200%룰 검증의 한도 마스터. Java 동기화는 P1-1-b/c. 신규 테이블 regulatory_limit: - 감독규정 개정 이력 추적 (effective_from/to) - product_category NULL=ALL, 또는 LIFE/ANNUITY/SAVINGS/EXCLUDED_AUTO/EXCLUDED_HEALTH - limit_type: TOTAL_RATIO(1200%), FIRST_YEAR_RATIO(1차년 35%), INSTALLMENT_YEARS(7년) - is_active 부분 인덱스로 활성 한도만 빠르게 조회 기본 데이터 (2024-01-01 기준, 외부화 가능): - TOTAL_RATIO ALL 1200% (보험업감독규정 제5-15조의5) - FIRST_YEAR_RATIO ALL 35% - INSTALLMENT_YEARS ALL 7년 코드그룹: LIMIT_TYPE, LIMIT_UNIT, PRODUCT_CATEGORY 인덱스: - (limit_type, product_category, effective_from DESC) 한도 조회용 - (is_active) WHERE is_active = TRUE 부분 인덱스 ON CONFLICT DO NOTHING으로 재실행 안전.
This commit is contained in:
@@ -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;
|
||||||
Reference in New Issue
Block a user