머천트 카드 결제 화면의 회사 가용 자금 계산식 오류 수정
목차
머천트 카드 결제액을 집계하는 화면에서 실제 회사 가용 자금 계산식이 잘못되어 있었는데, 이번에 정정했다.
왜 이런 버그가 생겼나
수익 관련 대시보드를 구축할 때 보통 여러 단계의 자금 흐름이 존재한다. 머천트 쪽 카드 결제가 발생하면 → 수수료 차감 → 정산 대기 → 실제 입금 같은 식으로. 문제는 화면에 노출되는 "가용 자금" 수치가 이 흐름을 제대로 반영하지 못하고 있었던 것. 단순히 결제된 카드 금액을 그대로 노출한 것 같은데, 실제로는 여기서 정산 대기 중인 금액, 수수료, 환불 대기액 같은 게 차감되어야 한다.
이런 종류의 버그는 초기 개발 당시 요구사항 정의가 명확하지 않거나, 나중에 비즈니스 로직이 변경되었을 때 화면 계산식을 따라 수정하지 못한 채로 방치되는 경우가 많다. 특히 재무 관련 수치는 그 영향이 크기 때문에 조금이라도 의심스러우면 바로 확인해야 한다.
어떻게 정정했는가
JSP 파일의 총합 계산 로직을 수정했다. 아마도 다음과 같은 형태일 것 같다:
| 항목 | 기존 식 | 수정 후 식 |
|---|---|---|
| 가용 자금 | 카드 결제액 | 카드 결제액 - 수수료 - 정산 대기액 - 환불 대기액 |
| 표시 위치 | 머천트 카드 섹션 | 회사 가용 자금 섹션 |
실제 수정은 단순할 수도, 복잡할 수도 있다. EL 표현식으로 바로 계산하는 방식이라면:
<!-- 기존 (잘못됨) -->
<span>${merchantCard.totalAmount}</span>
<!-- 수정 (맞음) -->
<span>${merchantCard.totalAmount - merchantCard.fees - merchantCard.pendingSettlement - merchantCard.pendingRefund}</span>
또는 컨트롤러/서비스 단에서 이미 계산된 값을 전달받는 방식으로 바뀌었을 수도 있다.
회고: 재무 수치는 더블 체크가 기본
이 작업을 하면서 느낀 가장 큰 교훈은, 돈이 움직이는 부분의 계산식은 문서화와 테스트가 정말 중요하다는 것. 특히 JSP 화면 단에서 직접 수학 연산을 할 때는 그 의도가 코드만으로는 명확하지 않을 수 있다. 주석으로 "가용 자금 = 결제액 - (수수료 + 정산 대기액 + 환불 대기액)" 같은 형태로 명시해놓으면, 나중에 유지보수할 때 누군가 의심의 여지가 없이 확인할 수 있다.
또한 이런 버그를 조기에 발견하려면:
- 대시보드 수치와 DB 원본 데이터 정기적 대조 (주/월 단위 리포트)
- 머천트/회사 양쪽 관점의 계산식 검증 (결제액이 일치하는지, 수수료 산출이 맞는지)
- 비정상 패턴 알림 (예: 가용 자금이 마이너스가 되는 상황)
이런 것들이 큰 도움이 된다. 다음부터는 재무 관련 화면을 작업할 때부터 이런 검증 절차를 처음부터 설계에 포함시켜야겠다는 생각이 들었다.
댓글 0
첫 댓글 달아줘.