파트너 계층별 수수료 정산 배치 설계
목차
feat: 파트너 레벨 설정 및 쿠폰 수익 분리를 위한 SQL 추가
배치 작업은 운영 중에 터지면 치명적이라 스케줄링 설계를 꼼꼼히 해야 함.
배치 설계 원칙
- 멱등성: 동일 조건으로 여러 번 돌아도 같은 결과
- 실패 로그: 어떤 건이 실패했는지 추적 가능해야 함
- 부분 성공: 일부 실패해도 나머지는 처리 계속
- 알림: 오류 발생 시 담당자에게 즉시 알림
스케줄 구성
@Scheduled(cron = "0 0 2 * * ?") // 매일 새벽 2시
public void runBatch() {
log.info("배치 시작");
try {
int processed = service.processPending();
log.info("처리 완료: {}건", processed);
} catch (Exception e) {
log.error("배치 실패", e);
notificationUtil.alertAdmin("배치 실패: " + e.getMessage());
}
}
배치 실행 이력 관리
| 컬럼 | 설명 |
|---|---|
| batch_key | 배치 고유 식별자 |
| started_at | 시작 시각 |
| ended_at | 종료 시각 |
| processed_cnt | 처리 건수 |
| status | SUCCESS / FAIL / PARTIAL |
배치 이력은 최소 3개월 보관. 문제 발생 시 특정 시점 데이터 재처리가 가능해야 함.
파트너 계층 구조
유통 단계가 깊어질수록 수수료 계산이 복잡해짐. 각 단계의 요율 차이가 해당 단계의 수익임.
최상위 운영사 (0%)
└── 총판 A (0.5%) → 수익 0.5%
└── 판매점 B (0.8%) → 수익 0.3%
└── 최하위 C (1.0%) → 수익 0.2%
파트너 등록 시 상위 파트너의 요율을 초과할 수 없는 검증 로직이 필요함. 초과 설정을 허용하면 마진 역전이 발생함.
끝
댓글 0
첫 댓글 달아줘.