fix: 수수료 계산 전수감사 — 1200%룰 단위버그 외 5건 수정
적대적 코드감사(4영역)에서 검증된 정확성 결함 수정: - fix(HIGH): 1200%룰 단위 불일치. regulatory_limit.limit_value(PERCENT:1200,35)를 KRW 금액과 직접 비교 → 사실상 "1200원/35원 룰"로 망가져 거의 모든 계약이 위반 처리. 연환산보험료×비율/100로 KRW 환산 후 비교. RegulatoryLimitChecker(api/batch) 양쪽, ContractMapper 주입(시그니처 무변경). - fix(HIGH): 음수 gross(환수>지급) 세금 계산이 음수 원천세 생성 → net 왜곡 + 분기 원천세신고 SUM 잠식. gross<=0 시 세금0·net=원금 가드. Tax/BatchTaxCalculator. - fix(HIGH): AwardService 시상 threshold_amount 미적용 → 기준 미달자에게 시상 전액 지급. threshold 미만 차단 + FIXED award_fixed null 가드. - fix(MED): 차등환수 최저구간 months_from 1→0(V109). 체결 1개월내 즉시해지가 grade=null로 환수 0원 처리되던 누락 보정. - fix(MED): company_rate/payout_rate NULL→0 폴백 무경보. log.warn 추가로 데이터 공백에 의한 과소지급 추적 가능. 테스트 4건 추가(단위변환/음수세금/시상threshold 경계). 전체 build+test GREEN: 152건 0실패. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
-- V109: 차등환수 최저구간 months_from 1 → 0 보정
|
||||
--
|
||||
-- 문제: 기존 시드(V28)의 최저 환수구간이 months_from=1 이라,
|
||||
-- 체결 후 1개월 미만 즉시 해지/실효(ChronoUnit.MONTHS.between=0)는
|
||||
-- selectByMonths(0) 매칭 행이 없어 grade=null → 환수 0원으로 처리됐다.
|
||||
-- 가장 환수율이 높아야 할(100%) 초단기 해지가 오히려 환수 면제되는 결함.
|
||||
-- 수정: 100% 전액환수 구간의 시작을 0개월로 내려 0~12개월을 모두 커버.
|
||||
|
||||
UPDATE chargeback_grade
|
||||
SET months_from = 0
|
||||
WHERE months_from = 1
|
||||
AND chargeback_percent = 100;
|
||||
Reference in New Issue
Block a user