GA Pro 5ee8321ef2 feat: P6 외부연동 호출 감사 이력 (V85)
펌뱅킹/SMS·카카오 어댑터 모든 호출을 external_call_log 테이블에 AOP 자동 영속화.
외부 SDK 통합 후에도 그대로 재사용. 운영 감사·장애 추적·SDK 검증 용도.

- V85: external_call_log 테이블 + 인덱스 4종 (called_at desc / type / target / failures)
       + SYSTEM_EXTERNAL_CALL 메뉴 + READ 권한 (SUPER_ADMIN/ADMIN)
- ga-core: ExternalCallLogVO/Resp/SearchParam + Mapper (insertOne / selectList / selectById)
- ga-api/aop: ExternalCallLoggingAspect — BankTransferAdapter+/MessageAdapter+
  모든 메서드 @Around 영속화. 호출자 트랜잭션과 분리(REQUIRES_NEW),
  request/response 는 PII 마스킹된 JSON 한 줄 요약(계좌·전화 뒤 4자리, 이름 첫글자만),
  영속화 자체가 실패해도 비즈니스 흐름 비차단(warn 로그만), 예외는 그대로 propagate.
- ga-api: ExternalCallLogService + Controller GET /api/external-call-logs[/{id}]
- ga-frontend: ExternalCallLogList.tsx + api/externalCallLog.ts + App.tsx 라우트
  /system/external-call-log (ProTable + Drawer 상세)

라이브 검증:
- Flyway V85 자동 적용 → 운영 DB schema v85
- 5모듈 컴파일 BUILD SUCCESSFUL + ga-frontend tsc --noEmit 통과
- 시나리오: withdraw#3 신규 → 결재 advance ×2 → 펌뱅킹 호출
  external_call_log #1: BANK/MockBankTransferAdapter/requestTransfer/
  success=true/durMs=3/target=WITHDRAW#3/accountNoMasked="****0123"

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 22:56:27 +09:00
2026-05-14 01:21:27 +09:00
1
2026-05-14 18:14:49 +09:00
2026-05-14 01:21:27 +09:00

GA 수수료 정산 솔루션

법인보험대리점(GA) 수수료 정산 시스템 — Multi-module Spring Boot + React.

기술 스택

영역 기술
Backend Java 17, Spring Boot 3.2, Spring Security, Spring Batch
ORM MyBatis 3 + PageHelper
DB PostgreSQL 16
Cache Redis 7
Build Gradle 멀티모듈
Frontend React 18 + Vite + TypeScript + Ant Design 5 + AG Grid + React Query + Zustand
Infra Docker Compose, Nginx

모듈 구조

ga-commission-system/
├── ga-common/    # 공통 프레임워크 (인증/권한/로그/엑셀/공통코드/메뉴)
├── ga-core/      # 도메인 코어 (VO, Mapper, SQL)
├── ga-api/       # REST API (포트 8080)
├── ga-batch/     # Spring Batch (포트 8081)
├── ga-admin/     # 관리자 라이브러리
└── ga-frontend/  # React SPA (포트 3000)

🚀 실행 가이드

환경 요구사항

  • Java 17+ (java -version 확인)
  • Node.js 18+ + npm
  • PostgreSQL 14+ (운영: 192.168.0.60:55432/trading_ai/ga schema)
  • Redis 7+ (선택 — 공통코드/세션 캐시)
  • Gradle (또는 IDE: IntelliJ IDEA 권장 — 자동으로 Gradle wrapper 생성)

시나리오 A — 운영 DB(trading_ai/ga) 에 연결해서 실행 권장

V1~V17 마이그레이션 + 테스트 데이터(보험사 5 / 상품 20 / 설계사 50 / 계약 200)가 192.168.0.60:55432/trading_ai/ga 스키마에 적용되어 있습니다.

운영 DB 상태 (2026-05-17 기준): V73 적용 완료. V74(메뉴/권한 전수보강) 작성 완료, 대기 중. ga-api 를 재시작하면 Flyway 가 V74 를 자동 적용합니다(멱등). DB 복귀 후 python verify_v74.py 로 보강 결과를 검증하세요.

1) Backend (ga-api) 실행

# 1-1. Gradle wrapper 가 없다면 한 번 생성 (Gradle 설치 필요)
gradle wrapper --gradle-version 8.6

# 1-2. 빌드
./gradlew :ga-api:bootJar

# 1-3. 실행 (trading_ai 프로파일 — 운영 DB 연결)
./gradlew :ga-api:bootRun --args='--spring.profiles.active=trading_ai'

# 또는 환경변수로 비밀번호/Redis 호스트 오버라이드
export DB_PASSWORD=your-password
export REDIS_HOST=localhost
java -jar ga-api/build/libs/ga-api.jar --spring.profiles.active=trading_ai

확인:

2) Backend (ga-batch) 실행 — 정산 배치 트리거 처리

./gradlew :ga-batch:bootRun --args='--spring.profiles.active=trading_ai'
# 또는
java -jar ga-batch/build/libs/ga-batch.jar --spring.profiles.active=trading_ai

기본 포트 8081. ga-api 가 /api/batch/settlement/run 호출 시 batch_job_log 에 REQUESTED 상태로 기록되며, ga-batch 가 이를 폴링/직접 호출로 실행합니다.

3) Frontend 실행

cd ga-frontend
npm install
npm run dev    # http://localhost:3000 (Vite dev server)

기본적으로 /api/* 요청은 Vite 프록시로 http://localhost:8080 으로 전달됩니다.

4) 로그인 & 동작 확인

URL : http://localhost:3000
ID  : admin
PW  : admin1234!

로그인 후 사이드바 메뉴 — 좌측에 동적으로 메뉴가 그려져야 합니다. 주요 화면:

메뉴 경로 설명
대시보드 / 정산 요약 카드
설계사 관리 /org/agents 50명 더미 + 검색/등록/수정/엑셀
계약 관리 /contracts 200건 더미 + 상태/보험사 필터
모집수수료 원장 /ledger/recruit AG Grid 호환 테이블 + 엑셀 다운로드
예외금액 원장 /ledger/exception 승인/반려
정산 결과 /settle 월 요약 + 확정/보류
정산 배치 /settle/batch 배치 실행 + 진행률 폴링
지급 관리 /payments 지급 상태 추적
연말 사업소득 명세서 /settle/annual-income 설계사별 연간 사업소득 집계 + 재집계 (P5-W1)
분개장 /settle/accounting-journal 회계 자동분개 엔트리 + 마감 처리 (P5-W1)
원천세 신고 /tax/withholding-tax 분기별 원천세 신고 집계 + 재집계 + 제출완료 처리 (P5-W2)
부가세 신고 /tax/vat 분기별 부가세 신고 집계 + 재집계 + 제출완료 처리 (P5-W2)
사용자 관리 /system/users 비번 초기화/잠금 해제
역할/권한 /system/roles 권한 매트릭스 (메뉴 × 6권한)
공통코드 /system/codes 그룹별 코드 조회

시나리오 B — 로컬 PostgreSQL 로 처음부터 (개발용)

# 1) PostgreSQL + Redis 기동 (Docker)
docker compose up -d postgres redis

# 2) ga-api 실행 (Flyway 가 자동으로 V1~V55 마이그레이션)
./gradlew :ga-api:bootRun
# 기본 프로파일은 application.yml — localhost:5432/ga 에 연결

# 3) ga-batch 실행
./gradlew :ga-batch:bootRun

# 4) 프론트
cd ga-frontend && npm install && npm run dev

application.yml 의 기본 DB:

url: jdbc:postgresql://localhost:5432/ga
username: ga
password: ga

시나리오 C — Docker Compose 로 전체 기동

docker compose up -d --build
# postgres + redis + api + batch + frontend 모두 컨테이너로 기동
# - 프론트: http://localhost:3000
# - API:    http://localhost:8080/swagger-ui.html
# - Batch:  http://localhost:8081 (내부 통신용)

docker-compose.yml 환경변수:

  • JWT_SECRET — JWT 서명 키 (256bit 이상)
  • ENCRYPT_KEY — AES-256 키 (32바이트)

DB 마이그레이션 직접 실행 (스크립트)

저장소 루트의 migrate.py (이 파일은 ga-commission-system 외부에 있음) — Python + pg8000 으로 V1~V17 SQL을 임의 DB에 일괄 적용:

pip install pg8000
python migrate.py
# host/port/db/user/schema 는 파일 상단 상수로 수정

ga 스키마가 이미 있으면 idempotent guard 로 멈춥니다. 완전 재설치는 DROP SCHEMA ga CASCADE; CREATE SCHEMA ga; 후 재실행.


🧪 데이터 확인 (운영 DB 기준)

테이블 건수
insurance_company 5 (삼성/한화/교보/디비/KB)
product 20 (보험사 × 4상품)
organization 7 (본부 1 / 지점 3 / 팀 3)
agent 50 (GM 3 / DM 3 / SMGR 6 / SFC 12 / FC 26)
contract 200 (ACTIVE 190 / LAPSE 10)
commission_rate 100
payout_rule 120
override_rule 10
chargeback_rule 4
common_code (그룹/상세) 18 / 42
menu / menu_permission 33 / 150
role / role_menu_permission 4 / 323

🔧 트러블슈팅

Q. ./gradlew 가 없다고 함

gradle wrapper --gradle-version 8.6 로 한번 생성하거나, IntelliJ 로 프로젝트 열면 자동 생성.

Q. ga-api 부팅 시 Failed to determine a suitable driver class

JDBC URL 또는 자격증명 누락. --spring.profiles.active=trading_ai 가 적용됐는지 확인.

Q. NoSuchKey: ga (Flyway)

운영 DB 의 ga 스키마를 인식하려면 currentSchema=ga 가 URL 에 있어야 함. application-trading_ai.yml 에서 이미 설정되어 있음.

Q. 프론트에서 401 / "토큰이 만료되었습니다"

localStorageaccessToken 이 만료됨. /login 으로 다시 로그인.

Q. AG Grid 가 빈 화면으로 보임

@ag-grid-community/styles/ag-theme-quartz.css import 가 잘 됐는지 확인.

Q. 비밀번호 변경

-- BCrypt 해시 생성 후 직접 UPDATE
UPDATE ga.users SET password = '$2b$10$...' WHERE login_id = 'admin';

또는 사용자 관리 화면 → "비번초기화" 액션.


📋 주요 기능

공통 프레임워크 (ga-common)

  • 인증/권한: JWT (HS256 액세스 2h/리프레시 7d), 메뉴×6권한 RBAC, BCrypt 비밀번호
  • 공통코드: Redis 캐시, 시스템코드 잠금, REST CRUD
  • 메뉴: 트리 구조, 사용자별 동적 메뉴 + 권한 매트릭스
  • 엑셀: SXSSF+Cursor 다운로드(100만건), SAX+배치 업로드(70만건)
  • 로그: 로그인/API/데이터변경 자동 기록 (비동기 @DataChangeLog AOP)
  • 암호화: AES-256 CBC (resident_no, account_no TypeHandler 자동 적용)
  • 업로드 템플릿: 동적 컬럼 매핑 + 변환 규칙 관리

P0/P1 — 핵심 정산 도메인

  • 세무 (P0-1): TaxCalculator 순수 도메인 — 사업소득 3.3% / 기타소득 8.8% / 지방세 10% / VAT 10%
  • 공제 (P0-2): agent_deduction 월별 차감 마스터 + payment_deduction_detail 이체 명세
  • 명세서 (P0-3): commission_statement 발급 마스터 + ExcelStatementGenerator (SXSSF)
  • 1200%룰 (P1-1): regulatory_limit 마스터 + RegulatoryLimitChecker (효력일 이력 추적)
  • 분급 (P1-2): installment_plan 7년 (35/25/15/10/7/5/3%) + InstallmentPlanGenerator
  • 차등환수 (P1-3): chargeback_grade 5단계 + ChargebackCalculator

P2 — 운영 필수 8 도메인 (V29~V36)

  • 마감 (P2-1): period_close — 월 마감 + 마감 후 수정 차단 가드
  • 정정 (P2-2): settle_correction — 원본 참조 정정 + 사유 코드
  • 이의신청 (P2-3): commission_dispute — OPEN/IN_REVIEW/APPROVED/REJECTED 워크플로우
  • 보류사유 (P2-4): settle_master.hold_reason_code + HOLD_REASON 코드그룹
  • 시책·인센티브 (P2-5): incentive_program + incentive_payment
  • 해촉정산 (P2-6): termination_settlement (agent_org_history 연계)
  • 세금계산서 (P2-7): tax_invoice 발행 이력 (SUPPLY/PURCHASE)
  • 외부회신 (P2-8): carrier_reconciliation_out — 보험사 회신 인터페이스

P3 — KPI 대시보드 (V37~V39)

  • 월별 KPI: mv_monthly_summary Materialized View + AG Grid 합계행
  • 조직별 KPI: mv_org_summary — 조직 트리별 실적
  • 유지율 KPI: mv_retention_rate — 13M/25M 유지율 추적
  • 누계 KPI: mv_cumulative — 연초 누계 + 차트

P4-A — 수수료 종류 보강 (V40~V44)

  • commission_master 통합 (P4-A-1): commission_type 9종 코드 통합 — 모집/유지/수금/오버라이드/갱신/부활/유지보수수당/시책/위촉
  • 수금수수료 (P4-A-2): collection_commission_rule + collection_commission_ledger — 납입주기별 차등
  • 갱신·부활수수료 (P4-A-3): renewal_commission_rule/ledger + reinstatement_commission_rule/ledger
  • 유지보수수당 (P4-A-4): persistency_bonus_rule + persistency_bonus — 13M/25M/37M 유지율 1회 지급
  • 오버라이드 원장 (P4-A-5): override_ledger + override_summary — 직급별/조직별 합계 + 검증

P4-B — 운영 필수 9 도메인 (V45~V53)

  • 위촉계약 (P4-B-1): agent_contract — 보험사별 위촉계약서 + 위촉수수료 + 효력 기간
  • 자격관리 (P4-B-2): agent_license — 생보/손보/변액 자격증 + 만료일 + 갱신 이력
  • 보수교육 (P4-B-3): agent_training — 의무 12시간/년 이수 추적
  • 계약변경 (P4-B-4): contract_endorsement — 변경 유형 + 수수료 재계산 트리거
  • 민원관리 (P4-B-5): complaint — 고객 민원 + 설계사 책임 + 환수 연동
  • 결재워크플로우 (P4-B-6): approval_line + approval_request — 최대 3단계 다단 결재
  • 공지·알림 (P4-B-7): notice + user_notification — 시스템 공지 + 읽음 여부
  • 첨부파일 (P4-B-8): attachment — 도메인 무관 공통 첨부 (소속/경로/타입)
  • 출금신청 (P4-B-9): withdraw_request — 결재 + 펌뱅킹 송신 + 결과 반영

P5 Wave 2 — 원천세/부가세 분기신고 (V67~V69)

  • 원천세 신고 (/tax/withholding-tax): 분기별 설계사 사업소득 원천세 신고 집계, 재집계 + 제출완료 처리
    • GET /api/withholding-tax-reports — 목록 조회 (settleQuarter/agentId/orgId/fileStatus 필터)
    • GET /api/withholding-tax-reports/{id} — 단건 상세
    • POST /api/withholding-tax-reports/regenerate {"settleQuarter":"YYYY-Qn"} — 분기 재집계 (EXECUTE 권한)
    • PUT /api/withholding-tax-reports/complete {"ids":[...]} — 제출완료 처리 (EXECUTE 권한)
  • 부가세 신고 (/tax/vat): tax_invoice 기반 분기 매출/매입 VAT 집계, 재집계 + 제출완료 처리
    • GET /api/vat-reports — 목록 조회 (settleQuarter/fileStatus 필터)
    • GET /api/vat-reports/{id} — 단건 상세
    • POST /api/vat-reports/regenerate {"settleQuarter":"YYYY-Qn"} — 분기 재집계 (EXECUTE 권한)
    • PUT /api/vat-reports/complete {"ids":[...]} — 제출완료 처리 (EXECUTE 권한)

P5 Wave 1 — 회계 진입점 (V63~V66)

  • 연말 사업소득 명세서 (/settle/annual-income): 설계사별 귀속연도 사업소득 집계, 재집계 버튼
    • GET /api/agent-annual-incomes — 목록 조회 (settleYear/agentId/orgId 필터)
    • GET /api/agent-annual-incomes/{agentId}/{settleYear} — 단건 상세
    • POST /api/agent-annual-incomes/regenerate?year=YYYY — 연도 전체 재집계 (EXECUTE 권한)
  • 분개장 (/settle/accounting-journal): 수수료 지급 자동분개 엔트리, 마감(journalNo 채번) 기능
    • GET /api/accounting-entries — 분개 목록 (settleMonth/journalNo/status 필터)
    • POST /api/accounting-entries/generate — 정산월 기준 분개 자동생성 (settleMonth or paymentIds)
    • PUT /api/accounting-entries/close — 분개 마감 처리 (entryIds + journalNo)
  • 계정코드 마스터 (공통 드롭다운용)
    • GET /api/common/account-codes?accountType=DEBIT|CREDIT|BOTH — 활성 계정코드 목록
    • GET /api/common/account-codes/all — 전체 (시스템관리용)
    • POST /api/common/account-codes — 등록
    • PUT /api/common/account-codes/{accountCode} — 수정
    • DELETE /api/common/account-codes/{accountCode} — 삭제

정산 배치 10 Step

  1. receiveData — 보험사별 DataReceiver → raw_commission_data 적재
  2. transformData — MappingEngine 으로 raw → 표준 원장 (TRIM/UPPER/DATE/DIVIDE/CODE_MAP)
  3. reconcile — 보험사 통보액 vs 시스템 계산액 대사
  4. calcRecruit — 모집수수료 (계약시점 commission_rate/payout_rule 적용)
  5. calcMaintain — 유지수수료 (납입주기 매칭, 1~5년차)
  6. chargebackException — 실효 계약 환수 자동생성
  7. calcOverride — 조직 트리 상향 탐색 → 상위 직급에 분배
  8. aggregate — 설계사별 통합 집계 → settle_master UPSERT (3.3% 세금)
  9. accountingEntryGenerate — recruit_ledger+maintain_ledger → contract_accounting_entry INSERT
  10. yearEndIncomeAggregate — 12월 마감 시만 실행: payment 합산 → agent_annual_income UPSERT

🛠 신입 개발자 표준 패턴 (5분 컷)

// 1) VO (XxxVO + XxxResp + XxxSaveReq + XxxSearchParam)
@Data
public class FooSearchParam extends SearchParam { }

// 2) Mapper Interface + XML
@Mapper
public interface FooMapper {
    List<FooResp> selectList(FooSearchParam p);
}

// 3) Service
@Service @RequiredArgsConstructor
public class FooService {
    private final FooMapper mapper;
    public PageResponse<FooResp> list(FooSearchParam p) {
        p.startPage();
        return PageResponse.of(mapper.selectList(p));
    }
}

// 4) Controller
@RestController @RequestMapping("/api/foos") @RequiredArgsConstructor
public class FooController {
    private final FooService service;
    @GetMapping
    @RequirePermission(menu = "FOO", perm = "READ")
    public ApiResponse<PageResponse<FooResp>> list(FooSearchParam p) {
        return ApiResponse.ok(service.list(p));
    }
}

🔒 보안

  • JWT (HS256) — 액세스 2시간, 리프레시 7일
  • AES-256 CBC 암호화 (EncryptTypeHandler 자동 적용)
  • RBAC — role_menu_permission 매트릭스
  • @DataChangeLog — 데이터 변경 이력 AOP 자동
  • API 접근 로그 — 비동기 저장 (api_access_log)

🗄 DB 마이그레이션

버전 내용
V1~V8 도메인 스키마 + 초기 데이터 (직급, 예외코드)
V9~V12 공통코드/메뉴/시스템관리 + 초기 데이터
V13 인덱스 최적화
V14 파티셔닝 helper 함수
V15 통계/리포트 뷰 (v_agent_monthly_summary 등)
V16 관리자 계정 + 메뉴 상세 + 권한 매트릭스
V17 테스트 데이터 (보험사 5 / 상품 20 / 설계사 50 / 계약 200 + 수수료 규정)
V18 메뉴 트리 구조 재정렬 (동적 사이드바용)
V19 업로드 템플릿 마스터 (upload_template / upload_column)
V20 데이터 사전 (data_domain / data_dictionary)
V21 프로필·이력서 도메인 (agent_profile)
V22 비즈니스 도메인 확장 (계약·정산 보조 컬럼)
V23 세무 처리 — agent.tax_type/business_no/vat_type, payment 세금 컬럼
V24 공제차감 — agent_deduction + payment_deduction_detail
V25 수수료 명세서 — commission_statement
V26 규제한도 마스터 — regulatory_limit (1200%룰)
V27 분급 계획 — installment_ratio + installment_plan
V28 차등환수 룰 — chargeback_grade
V29 마감 마스터 — period_close
V30 정정 — settle_correction
V31 이의신청 — commission_dispute
V32 보류사유 코드 — HOLD_REASON 공통코드 그룹
V33 시책·인센티브 — incentive_program + incentive_payment
V34 해촉정산 — termination_settlement
V35 세금계산서 — tax_invoice
V36 보험사 회신 인터페이스 — carrier_reconciliation_out
V37 KPI Materialized View 4종 (월별/조직별/유지율/누계)
V38 리포트 메뉴 INSERT
V39 KPI 메뉴 INSERT
V40 수수료종류 코드 + commission_master 통합 마스터
V41 수금수수료 — collection_commission_rule + collection_commission_ledger
V42 갱신·부활수수료 — renewal/reinstatement commission rule+ledger
V43 유지보수수당 — persistency_bonus_rule + persistency_bonus
V44 오버라이드 원장 — override_ledger + override_summary
V45 위촉계약 — agent_contract
V46 자격관리 — agent_license
V47 보수교육 — agent_training + training_requirement
V48 계약변경 — contract_endorsement
V49 민원관리 — complaint
V50 결재 워크플로우 — approval_line + approval_line_step + approval_request + approval_history
V51 공지·알림 — notice + user_notification
V52 첨부파일 — attachment
V53 출금신청 — withdraw_request
V54 P4 메뉴 INSERT (P4-A + P4-B 14개 메뉴)
V55 P4 공통코드 추가 (approval_type, complaint_type, license_type 등)
V56 agent 세무 컬럼 보강 (tax_type/business_no/vat_type — V23 체크섬 충돌 보정)
V57 admin 계정 초기화
V58 1200%룰 메뉴 권한
V59 신규 메뉴 권한
V60 statement 메뉴 권한
V61 installment_plan 메뉴 권한
V62 추가 메뉴 권한
V63 P5-W1: agent_annual_income 테이블 (설계사 연말 사업소득 집계)
V64 P5-W1: contract_accounting_entry 테이블 (회계 분개 엔트리)
V65 P5-W1: 테스트 데이터 + 메뉴 INSERT (ANNUAL_INCOME / ACCOUNTING_JOURNAL)
V66 P5-W1: account_code 마스터 + 초기 4건 (8350/2530/1130/4110)
V67 P5-W2: withholding_tax_report 테이블 (원천세 분기 신고)
V68 P5-W2: vat_report 테이블 (부가세 분기 신고)
V69 P5-W2: 테스트 데이터 + 메뉴 INSERT (원천세/부가세 신고)
V70 rule 도메인 감사 컬럼 보강 (commission_rate/payout_rule/override_rule 등)
V71 payment 세무 컬럼 보강 (income_tax_amount/local_tax_amount/vat_amount/net_amount)
V72 P5-W1 EXECUTE 권한 보강 (ANNUAL_INCOME / ACCOUNTING_JOURNAL)
V73 P5-W2 EXECUTE 권한 보강 (WITHHOLDING_TAX / VAT_REPORT)

운영 DB (192.168.0.60) 현재 V73 까지 적용 완료. ga-api 재시작 시 Flyway 가 신규 마이그레이션을 자동으로 순차 적용합니다.


진행 상황

  • 1단계 — 프로젝트 뼈대 + DB (V1~V17)
  • ga-common — 공통 프레임워크 일체
  • ga-core — 65+ 테이블 VO/Mapper/XML (P0~P4 전체)
  • ga-api — Auth + 50+ 도메인 컨트롤러 (128개 Java 파일)
  • ga-batch — MonthlySettlementJob 8 Step (실제 동작 로직 포함)
  • Docker — docker-compose + multi-stage Dockerfile + nginx
  • ga-frontend — 50+ 페이지 (대시보드/설계사/계약/원장/정산/지급/배치/KPI/수수료/시스템관리)
  • DB 마이그레이션 — V1~V71 (71개 파일, ga-common/src/main/resources/db/migration)
  • 코드 품질 — Enum/DTO/MapStruct/readOnly 트랜잭션 일괄 정비
  • P0 세무·공제·명세서 — TaxCalculator / DeductionService / ExcelStatementGenerator
  • P1 1200%룰·분급·차등환수 — RegulatoryLimitChecker / InstallmentPlanGenerator / ChargebackCalculator
  • P2 마감·정정·이의·보류·시책·해촉·세금계산서·외부회신 (8 도메인)
  • P3 KPI 대시보드 — Materialized View 4종 + Service + 화면
  • P4-A 수수료 종류 보강 — commission_master 통합 / 수금 / 갱신 / 부활 / 유지보수수당 / 오버라이드원장
  • P4-B 운영 도메인 — 위촉계약 / 자격관리 / 보수교육 / 계약변경 / 민원 / 결재워크플로우 / 공지·알림 / 첨부파일 / 출금신청
  • P5-W1 회계 진입점 — agent_annual_income / contract_accounting_entry / account_code (V63~V66, 통합검증 완료)
  • P5-W2 원천세·부가세 분기신고 — withholding_tax_report / vat_report (V67~V69, 통합검증 완료 2026-05-17)
  • 운영 DB — 192.168.0.60:55432/trading_ai/ga (V73 까지 적용 완료)
  • 단위/통합 테스트 — 미작성 (SqlSessionFactory 환경 문제로 보류)
  • MappingEngine 정밀화 — 일부 변환 규칙은 단순화된 형태
  • P5-W3 결산 / 이상치 / 연말 지급명세서 — 미착수
  • P6 외부 연동 — 펌뱅킹 실연동 / SMS·카카오 / 모바일 셀프 조회

🔮 향후 확장

  • 프론트 페이지 추가: menu 테이블 등록 → React 페이지 구현 → 동적 라우팅 적용
  • 신규 보험사: company_profile + company_field_mapping 등록 + 필요 시 DataReceiver 구현
  • 신규 정산 규정: commission_rate/payout_rule/override_rule/chargeback_ruleeffective_from 만 다른 버전으로 추가 (versioning)
  • 이체파일 포맷: 은행별 EBCDIC/CSV 출력 어댑터 추가

📡 외부 시스템 연결 정보 (요약)

항목
운영 DB 호스트 192.168.0.60
운영 DB 포트 55432
운영 DB 데이터베이스 trading_ai
운영 DB 스키마 ga
운영 DB 사용자 kyu
Git 원격 https://gl.kyleyang.co.kr/kyu/ga-commission-system
초기 관리자 admin / admin1234!
S
Description
GA Commission Settlement Solution
Readme 3.5 MiB
Languages
Java 61.3%
TypeScript 37.6%
CSS 0.6%
Python 0.3%