1.9 KiB
1.9 KiB
에이전트 정산 비율 수정 오류 대응 계획
- 에이전트 정산 비율 수정 API/서비스/엔티티/리포지토리 흐름을 확인한다.
Duplicate entry '2-1' for key 'agent_settlement_ratio.uk_agent_settlement_ratio_member_active'발생 조건과 현재 활성 비율 갱신 방식의 충돌 지점을 확인한다.- 실패를 재현하는 테스트를 먼저 추가하고, 테스트가 의도한 이유로 실패하는지 확인한다.
- 기존 활성 비율을 안전하게 종료한 뒤 새 비율을 저장하도록 최소 범위로 수정한다.
- 관련 테스트와 필요한 검증 명령을 실행하고 결과를 문서 하단에 누적 기록한다.
검증 기록
- 1차 구현
- 무엇을: 에이전트 정산 비율 수정 시 기존 활성 row 종료를 먼저 flush하도록 바꾸고, active unique 제약 충돌 시 같은 세션 재조회 없이 비즈니스 예외로 변환하도록 수정했다.
- 왜: 기존 활성 row가 DB에 닫히기 전에 새 row insert가 먼저 flush되면
uk_agent_settlement_ratio_member_active충돌이 발생하고, 그 뒤 같은 세션 재조회가 이어지면 Hibernatenull idassertion이 연쇄로 발생할 수 있기 때문이다. - 어떻게:
./gradlew test --tests kr.co.vividnext.sodalive.admin.partner.agent.ratio.AgentSettlementRatioServiceTest→ 실패, 수정 전 flush 순서 검증이 깨지고 예외 후 재조회 검증도 실패해 재현 확인../gradlew test --tests kr.co.vividnext.sodalive.admin.partner.agent.ratio.AgentSettlementRatioServiceTest→ 성공../gradlew test --tests kr.co.vividnext.sodalive.admin.partner.agent.ratio.AdminAgentSettlementRatioControllerTest→ 성공../gradlew test --tests "kr.co.vividnext.sodalive.admin.partner.agent.ratio.*"→ 성공../gradlew ktlintCheck→ 성공.