2a27aa31a0
CalcRecruitStep(Step4)이 1200%룰 clip 초과분을 installment_plan(7년)으로 생성할 때, 재계산을 위해 recruit_ledger는 deleteBySettleMonth로 지우면서 분급은 정리하지 않아 같은 정산월을 재실행하면 동일 계약이 또 clip되어 동일 분급키(contract_id,plan_year, plan_month)로 INSERT → UNIQUE 충돌로 Job 실패하던 버그. 수정: insertBatch 직전에 clip된 계약들의 SCHEDULED(미지급) 분급을 먼저 삭제 (InstallmentPlanMapper.deleteScheduledByContractIds). PAID 분급 이력은 보존하여 PayInstallmentStep 지급분과 충돌하지 않음. 검증: CalcRecruitStepTest 멱등 테스트(clip 시 delete→insert 순서/대상계약 검증) 추가, 전체 build SUCCESS. 라이브 E2E: 202605 정산을 연속 2회 실행 → 둘 다 COMPLETED, 분급 196건 불변(중복 0), settle_master gross 동일, 무결성 유지. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>