3831eeaf89
도메인 P1 마지막 항목 — 차등 환수 마무리. ChargebackCalculator (pure @Component): - calculate(contractDate, terminationDate, originalCommission, productCategory) - monthsElapsed = ChronoUnit.MONTHS.between - selectByMonths로 적용 비율 조회 - chargebackAmount = originalCommission × percent / 100 (HALF_UP, scale 0) - grade 없으면 ZERO + "적용 환수 구간 없음" ChargebackResult record: - chargebackAmount, monthsElapsed, appliedPercent, reason ChargebackGradeService: - list/detail (readOnly) - create/update (@Transactional, 중복 검증) - deactivate (@Transactional) ChargebackGradeController: - GET/POST/PUT 표준 + /api/chargeback-grades/calculate (외부 호출용) - 모든 보호 엔드포인트 @RequirePermission, CUD에 @DataChangeLog ga-batch 정산 step 자동 통합은 마무리 통합 단계에서.