diff --git a/DOMAIN_KNOWLEDGE.md b/DOMAIN_KNOWLEDGE.md index 04f571b..9eb1d56 100644 --- a/DOMAIN_KNOWLEDGE.md +++ b/DOMAIN_KNOWLEDGE.md @@ -1,8 +1,27 @@ -# 보험 GA 수수료 정산 — 도메인 기본 지식 +# 보험 GA 수수료 정산 — 도메인 기본 지식 (신입사원 교육용) -> 이 문서는 GA 수수료 정산 시스템을 처음 접하는 개발자/담당자가 **업무 도메인**을 이해하기 위한 입문서입니다. -> 코드 구조가 아니라 "이 업무가 무엇인지"를 설명합니다. 표준 가정값은 한국 보험업감독규정 기준이며, -> 실제 회사 정책과 다르면 코드가 아니라 데이터(`system_config` / `regulatory_limit` / `installment_ratio` / `chargeback_grade`)만 바꾸면 됩니다. +> 이 문서는 **보험을 처음 접하는 신입사원/개발자**가 GA 수수료 정산 업무를 이해하기 위한 입문·교육 자료입니다. +> 코드 구조가 아니라 "이 업무가 무엇이고, 수수료를 어떻게 계산하는지"를 설명합니다. +> 표준 가정값은 한국 보험업감독규정 기준이며, 실제 회사 정책과 다르면 코드가 아니라 +> 데이터(`system_config` / `regulatory_limit` / `installment_ratio` / `chargeback_grade`)만 바꾸면 됩니다. + +--- + +## 목차 + +1. [한 문장 요약](#1-한-문장-요약) +2. [등장 인물과 핵심 개념](#2-등장-인물과-핵심-개념) +3. [보험 기초 — 보험을 처음 접한다면](#3-보험-기초--보험을-처음-접한다면) +4. [수수료의 종류 (이 도메인의 핵심)](#4-수수료의-종류-이-도메인의-핵심) +5. [규제 룰 — 왜 "그냥 곱하면" 안 되는가](#5-규제-룰--왜-그냥-곱하면-안-되는가) +6. [세금과 공제 — 실지급액은 어떻게 정해지나](#6-세금과-공제--실지급액은-어떻게-정해지나) +7. [수수료 계산 공식과 숫자 예시 (가장 중요)](#7-수수료-계산-공식과-숫자-예시-가장-중요) +8. [월 정산 파이프라인 (실제 배치 12단계)](#8-월-정산-파이프라인-실제-배치-12단계) +9. [정산의 상태(Status) 흐름](#9-정산의-상태status-흐름) +10. [정산 그 이후 — 회계·세무·지급](#10-정산-그-이후--회계세무지급) +11. [KPI / 분석](#11-kpi--분석) +12. [자주 헷갈리는 포인트 (FAQ)](#12-자주-헷갈리는-포인트-faq) +13. [용어 빠른 사전](#13-용어-빠른-사전) --- @@ -22,8 +41,7 @@ | **조직** | Organization | 설계사가 속한 지점·본부 트리. 오버라이드(상위 직책 수당)의 기준. | | **상품** | Product | 보험 상품. 상품별로 수수료율이 다름. | | **계약** | Contract | 고객이 가입한 보험증권 1건. 정산의 **기준 단위**. | -| **수수료** | Commission | 보험사→GA→설계사로 흐르는 돈. 종류가 매우 다양 (3장 참고). | -| **정산** | Settlement | 한 달치 수수료를 설계사별로 계산·확정·지급하는 과정. | +| **수수료** | Commission | 보험사→GA→설계사로 흐르는 돈. 종류가 매우 다양 (4장 참고). | | **원장** | Ledger | 계산의 최소 단위 기록 (계약×월×수수료종류 1줄). | | **정산 마스터** | settle_master | 원장을 설계사×월로 합산한 지급 확정 단위. | | **명세서** | Statement | 설계사에게 발급하는 "이번 달 얼마 받는지" 내역서. | @@ -36,13 +54,36 @@ --- -## 3. 수수료의 종류 (이 도메인의 핵심) +## 3. 보험 기초 — 보험을 처음 접한다면 + +수수료를 이해하려면 보험 자체의 기본 용어부터 알아야 합니다. (보험을 한 번도 안 다뤄봤다는 가정) + +| 용어 | 쉬운 설명 | +|---|---| +| **보험계약** | 고객이 "매달 얼마 낼 테니, 사고/사망/만기 때 보장해줘"라고 보험사와 맺은 약속 (증권 1장 = 계약 1건). | +| **보험료 (Premium)** | 고객이 보험사에 내는 돈. 보통 **월납**(매달)·연납·일시납. 수수료 계산의 출발점. | +| **계약자/피보험자/수익자** | 돈 내는 사람 / 보장 대상인 사람 / 보험금 받는 사람. (셋이 같을 수도 다를 수도) | +| **보험종류** | 크게 **생명보험**(사망·종신·연금)과 **손해보험**(자동차·화재·실손). 종류마다 수수료율이 다름. | +| **회차 / 차년** | 계약이 몇 번째 해/달째 유지 중인지. **1차년(초년도)**의 모집수수료가 가장 큼. | +| **납입 / 미납 / 실효** | 보험료를 냈는지(납입) / 안 냈는지(미납) / 안 내서 계약이 끊긴 상태(실효). | +| **유지 / 해지 / 부활** | 계약이 살아있음(유지) / 고객이 끊음(해지) / 실효된 걸 되살림(부활). | +| **유지율 (Persistency)** | 가입한 계약이 일정 기간(13개월·25개월) 뒤에도 살아있는 비율. **영업 건전성의 핵심 지표.** | +| **청약 / 인수(언더라이팅)** | 고객이 가입 신청(청약) → 보험사가 위험 심사 후 받아들임(인수). | +| **위촉 / 해촉** | 설계사가 GA에 소속되는 것(위촉) / 소속이 끝나는 것(해촉). 해촉 시 계약이 후임에게 **승계**됨. | + +> **왜 보험사가 GA에, GA가 설계사에게 돈을 주나?** +> 보험사는 직접 영업하는 대신 GA·설계사가 고객을 데려오면 그 대가로 **수수료**를 준다. +> 즉 수수료는 "계약을 따오고(모집) 잘 유지시킨(유지)" 대가다. 그래서 계약이 일찍 깨지면 **환수**(돌려받기)한다. + +--- + +## 4. 수수료의 종류 (이 도메인의 핵심) 수수료는 "한 번에 다 주는 것"이 아니라 **계약의 생애주기**에 따라 여러 종류로 나뉜다. | 종류 | 코드 | 언제 발생 | 누구에게 | 비고 | |---|---|---|---|---| -| **모집수수료** | recruit | 계약 체결 시 (초년도) | **원 모집설계사** | 가장 큼. 보통 분급(3-1) 대상 | +| **모집수수료** | recruit | 계약 체결 시 (초년도) | **원 모집설계사** | 가장 큼. 보통 분급(5-2) 대상 | | **유지수수료** | maintain | 계약 유지되는 매월/매년 | 현재 관리설계사 | 계약 승계 시 후임에게 귀속 전환 | | **수금수수료** | collection | 보험료가 실제 납입될 때 | 관리설계사 | 납입 실적 기반 | | **갱신수수료** | renewal | 계약 갱신 시 | 관리설계사 | 갱신형 상품 | @@ -56,21 +97,21 @@ --- -## 4. 규제 룰 — 왜 "그냥 곱하면" 안 되는가 +## 5. 규제 룰 — 왜 "그냥 곱하면" 안 되는가 수수료는 법으로 한도와 지급 방식이 정해져 있다. 단순 계산이 아니라 아래 룰을 모두 통과해야 한다. -### 4-1. 1200% 룰 (보험업감독규정 제5-15조의5) +### 5-1. 1200% 룰 (보험업감독규정 제5-15조의5) - 초년도(1차년)에 설계사에게 줄 수 있는 모집수수료 총액은 **연납보험료의 1200%**를 넘을 수 없다. - 추가로 **1차년 한도 35%** 등 연차별 상한이 있다. - → `RegulatoryLimitChecker` 가 누적 지급액을 추적해 한도 초과분을 잘라낸다. -### 4-2. 분급 (Installment) — 나눠 지급 +### 5-2. 분급 (Installment) — 나눠 지급 - 큰 모집수수료를 한 번에 주지 않고 **7년에 걸쳐 비율대로 분할** 지급. - 표준 비율(가정): **35 / 25 / 15 / 10 / 7 / 5 / 3 (%)** — 합 100%. - → `InstallmentPlanGenerator` 가 회차별 지급 스케줄(`installment_plan`)을 만든다. -### 4-3. 차등 환수 (Chargeback) — 조기 해지 시 돌려받기 +### 5-3. 차등 환수 (Chargeback) — 조기 해지 시 돌려받기 - 계약이 일찍 깨지면 이미 준 수수료의 일부를 **환수**한다. 유지 기간이 짧을수록 많이 환수. - 표준 단계(가정): @@ -85,33 +126,139 @@ --- -## 5. 세금과 공제 — 실지급액은 어떻게 정해지나 +## 6. 세금과 공제 — 실지급액은 어떻게 정해지나 설계사에게 주는 돈(gross)에서 **세금을 원천징수**하고 **공제**를 빼야 **실지급액(net)**이 된다. -### 5-1. 원천징수 세금 (한국 표준, `system_config` 외부화) +### 6-1. 원천징수 세금 (한국 표준, `system_config` 외부화) | 항목 | 세율 | 적용 | |---|---|---| | 사업소득 원천징수 | **3.3%** | 일반 설계사(사업소득자) | | 기타소득 원천징수 | **8.8%** | 기타소득 유형 | -| 지방소득세 | 원천세의 **10%** | (3.3% 안에 0.3%로 포함되는 구조) | -| 부가가치세 | **10%** | 사업자(과세) 설계사가 세금계산서 발행 시 | +| 지방소득세 | 소득세의 **10%** | 소득세에 부가 | +| 부가가치세 | **10%** | 과세사업자 설계사가 세금계산서 발행 시 (GA가 설계사에 추가 지급) | -### 5-2. 공제 (Deduction) +### 6-2. 공제 (Deduction) - 가지급금(선지급) 회수, 대출 상환, 기타 차감 등을 매월 정산액에서 뺀다. - `agent_deduction`(월별 차감 마스터) + `payment_deduction_detail`(이체 명세)로 관리. -### 5-3. 실지급액 계산 공식 (개념) +### 6-3. 실지급액 계산 공식 (개념) ``` gross(총수수료) − 원천세(소득세 + 지방소득세) − 공제(가지급금 등) + (+ 부가세, 과세사업자인 경우) = net(실지급액) → 설계사 계좌로 이체(펌뱅킹) ``` --- -## 6. 월 정산 파이프라인 (실제 배치 12단계) +## 7. 수수료 계산 공식과 숫자 예시 (가장 중요) + +> 이 장이 핵심입니다. 실제 코드(`CommissionCalculator`, `TaxCalculator`, `CalcOverrideStep`)가 쓰는 공식을 그대로 정리하고 숫자로 풀어봅니다. + +### 7-1. 기본 공식 (모집·유지수수료 공통) + +계약 1건의 수수료는 **세 번 곱하기**로 끝납니다. + +``` +① 보험사 지급액 = 보험료(premium) × 보험사요율(company_rate %) +② 설계사 수수료 = 보험사 지급액 × 지급률(payout_rate %) +③ 원천세 = 설계사 수수료 × 3.3% + ───────────────────────────────────────────────────── + 원장 기록 = 설계사 수수료 − 원천세 +``` + +- **보험사요율(company_rate)**: 보험사가 이 상품에 주는 비율. **상품 × 회차(차년) × 기준일**로 결정. +- **지급률(payout_rate)**: GA가 받은 돈 중 설계사에게 주는 비율. **설계사 등급 × 보험종류 × 회차**로 결정. + → 같은 계약이라도 **등급이 높은 설계사일수록 지급률이 높다.** +- 모집수수료와 유지수수료는 **공식이 같고**, 회차(`commission_year`)만 다릅니다. (모집=1차년, 유지=2차년 이후) +- 모든 금액은 `BigDecimal`, 반올림 `HALF_UP`, 소수점 2자리. + +### 7-2. 숫자 예시 A — 모집수수료 1건 + +| 항목 | 값 | 계산 | +|---|---|---| +| 보험료 (연환산) | 1,000,000원 | (가정) | +| 보험사요율 | 60% | 상품·1차년 기준 | +| **① 보험사 지급액** | **600,000원** | 1,000,000 × 60% | +| 지급률 (설계사 등급) | 75% | 등급·보험종류·1차년 | +| **② 설계사 수수료** | **450,000원** | 600,000 × 75% | +| **③ 원천세 (3.3%)** | **14,850원** | 450,000 × 3.3% | +| **원장 실수령** | **435,150원** | 450,000 − 14,850 | + +### 7-3. 숫자 예시 B — 분급(7년 분할) 적용 시 + +위 모집수수료 450,000원이 분급 대상이면, 한 번에 다 주지 않고 7년에 나눠 줍니다. + +| 차년 | 비율 | 지급액 | +|---|---|---| +| 1차년 | 35% | 157,500원 | +| 2차년 | 25% | 112,500원 | +| 3차년 | 15% | 67,500원 | +| 4차년 | 10% | 45,000원 | +| 5차년 | 7% | 31,500원 | +| 6차년 | 5% | 22,500원 | +| 7차년 | 3% | 13,500원 | +| **합계** | **100%** | **450,000원** | + +→ 즉 계약 직후 통장에 들어오는 건 450,000원이 아니라 **1차년분 157,500원(에서 세금 차감)** 입니다. + +### 7-4. 숫자 예시 C — 차등 환수 (조기 해지) + +이 계약이 **13개월차에 해지**되면, 유지 13~24개월 구간 환수율 **50%**가 적용됩니다. + +``` +환수액 = 기지급 모집수수료 × 환수율 + = 450,000 × 50% = 225,000원 ← 다음 정산에서 (-)로 차감 +``` + +→ 유지 12개월 이내였다면 환수율 100%(전액 환수), 85개월 이상이면 0%(환수 없음). + +### 7-5. 숫자 예시 D — 오버라이드 (상위 직책 수당) + +하위 설계사의 실적에 대해 **상위 직책자**가 받는 수당입니다. + +``` +오버라이드 = 하위 실적(base) × 오버라이드율(override_pct) (단, cap 초과 시 cap 금액으로 제한) +``` + +| 항목 | 값 | +|---|---| +| 하위 설계사 월 실적(base) | 2,000,000원 | +| 오버라이드율 | 4% | +| 오버라이드 | 80,000원 (= 2,000,000 × 4%) | +| (cap이 100,000원이면) | 80,000원 그대로 (cap 미만) | + +### 7-6. 숫자 예시 E — 세금 상세 (과세사업자 설계사) + +설계사 수수료 450,000원을 **사업소득 + 과세사업자**로 정산할 때 (`TaxCalculator` 기준): + +| 항목 | 값 | 계산 | +|---|---|---| +| 설계사 수수료 (gross) | 450,000원 | | +| 소득세 (3.3%) | 14,850원 | 450,000 × 3.3% | +| 지방소득세 (소득세의 10%) | 1,485원 | 14,850 × 10% | +| 부가세 (10%, 과세사업자) | +45,000원 | 450,000 × 10% (추가 지급) | +| **실지급액 (net)** | **478,665원** | 450,000 − 14,850 − 1,485 + 45,000 | + +> 여기에 가지급금 등 **공제**가 있으면 net에서 추가로 빠집니다. +> 비과세/면세 설계사는 부가세(+45,000) 항목이 없습니다. + +### 7-7. 한 장 정리 + +``` +보험료 ──×보험사요율──▶ 보험사지급액 ──×지급률──▶ 설계사수수료(gross) + │ + ┌─ (분급) 7년 분할 ─┐ │ + └─ (환수) 조기해지 차감 ┘ + ▼ + gross − 원천세(소득세+지방세) − 공제 (+부가세) = 실지급액(net) ──▶ 계좌이체 +``` + +--- + +## 8. 월 정산 파이프라인 (실제 배치 12단계) 매월 `ga-batch` 의 `MonthlySettlementJob` 이 아래 순서로 실행된다. (`POST /internal/jobs/monthly-settlement {"settleMonth":"yyyyMM"}`) @@ -134,7 +281,7 @@ gross(총수수료) --- -## 7. 정산의 상태(Status) 흐름 +## 9. 정산의 상태(Status) 흐름 정산 마스터는 함부로 다시 못 바꾸도록 상태로 잠근다. @@ -149,7 +296,7 @@ DRAFT(계산됨) → CONFIRMED(확정) → PAID(지급완료) --- -## 8. 정산 그 이후 — 회계·세무·지급 +## 10. 정산 그 이후 — 회계·세무·지급 | 영역 | 내용 | 산출물 | |---|---|---| @@ -163,7 +310,7 @@ DRAFT(계산됨) → CONFIRMED(확정) → PAID(지급완료) --- -## 9. KPI / 분석 +## 11. KPI / 분석 - **월별 요약 / 조직별 요약**: 지급 총액, 인원, 평균 등 (Materialized View). - **유지율(Retention)**: 13회차/25회차 유지율 — 보험 영업 건전성의 핵심 지표. @@ -172,25 +319,34 @@ DRAFT(계산됨) → CONFIRMED(확정) → PAID(지급완료) --- -## 10. 자주 헷갈리는 포인트 (FAQ) +## 12. 자주 헷갈리는 포인트 (FAQ) 1. **"수수료를 왜 한 번에 안 주나?"** → 1200% 룰·분급 규제 + 조기 해지 환수 리스크 때문. 7년 분할이 표준. 2. **"설계사가 그만두면 그 계약 수수료는?"** → 유지수수료는 후임(승계)에게, 모집수수료는 원 설계사에게. -3. **"gross인데 통장엔 적게 들어와요"** → 원천세(3.3%) + 공제(가지급금 등)가 빠진 net이 실지급액. +3. **"gross인데 통장엔 적게 들어와요"** → 원천세(3.3%) + 공제(가지급금 등)가 빠진 net이 실지급액. (단, 과세사업자는 부가세가 더해짐) 4. **"확정한 달을 다시 돌렸는데 안 바뀌어요"** → 정상. CONFIRMED/PAID는 보호되고, 바로잡으려면 정정 전표를 쓴다. -5. **"표준 세율/한도가 우리 회사랑 달라요"** → 코드 수정 불필요. `system_config`·`regulatory_limit`·`installment_ratio`·`chargeback_grade` 데이터만 변경. +5. **"같은 계약인데 설계사마다 수수료가 달라요"** → 지급률(payout_rate)이 **설계사 등급**에 따라 다르기 때문. (7-1 참고) +6. **"표준 세율/한도가 우리 회사랑 달라요"** → 코드 수정 불필요. `system_config`·`regulatory_limit`·`installment_ratio`·`chargeback_grade` 데이터만 변경. --- -## 11. 용어 빠른 사전 +## 13. 용어 빠른 사전 | 한글 | 영문 | 한 줄 | |---|---|---| +| 보험료 | Premium | 고객이 내는 돈. 수수료 계산의 출발점 | +| 보험종류 | Insurance type | 생명/손해. 종류별 요율 다름 | +| 회차/차년 | Commission year | 계약 몇 년째인지. 1차년이 가장 큼 | +| 유지/실효/부활 | Inforce/Lapse/Reinstate | 계약 살아있음/끊김/되살림 | +| 유지율 | Persistency | 13·25개월 뒤 계약 생존율 | +| 위촉/해촉 | Appoint/Terminate | 설계사 소속 시작/종료 | | 정산 | Settlement | 월별 수수료 계산·확정·지급 | | 원장 | Ledger | 계산 최소 단위 기록 | +| 보험사요율 | Company rate | 보험사가 GA에 주는 비율(상품·회차별) | +| 지급률 | Payout rate | GA가 설계사에 주는 비율(등급·보험종류별) | | 모집수수료 | Recruit commission | 계약 체결 초년도 수수료 | | 유지수수료 | Maintain commission | 계약 유지 기간 수수료 | -| 오버라이드 | Override | 상위 직책자 수당 | +| 오버라이드 | Override | 상위 직책자 수당(하위실적×율) | | 분급 | Installment | 수수료 분할 지급(7년) | | 차등환수 | Chargeback | 조기 해지 시 환수 | | 원천징수 | Withholding | 세금 미리 떼기(3.3%) | @@ -204,3 +360,4 @@ DRAFT(계산됨) → CONFIRMED(확정) → PAID(지급완료) --- *기준: 한국 보험업감독규정 표준 가정값. 시스템 schema v87 (2026-05 기준). 표준값은 모두 데이터로 외부화되어 코드 변경 없이 조정 가능.* +*계산 공식 출처: `CommissionCalculator` / `TaxCalculator` / `CalcOverrideStep` 실제 코드.*