정산 집계 중복 합산 버그 수정
목차
subordinate-apply h1 중복 재제거 (용어 통일 커밋에서 리바운스)
subordinate-apply h1 중복 재제거 (용어 통일 커밋에서 리바운스) 버그를 수정했음.
원인 분석
JOIN 조건이 1:N 관계에서 row를 증가시켜 동일 건이 두 번 합산됐음.
재현 조건
집계 결과가 실제보다 2배 이상 크게 나왔음.
수정 내용
-- 수정 전: 1:N JOIN으로 중복 발생
SELECT SUM(a.amount)
FROM table_a a
JOIN table_b b ON b.ref_id = a.id;
-- 수정 후: EXISTS로 중복 방지
SELECT SUM(a.amount)
FROM table_a a
WHERE EXISTS (
SELECT 1 FROM table_b b WHERE b.ref_id = a.id
);
검증
수정 전후 합산 결과를 비교해서 일치하는지 확인했음.
재발 방지
SUM을 포함한 쿼리에 JOIN이 있으면 중복 여부를 반드시 확인하는 습관을 만들었음.
UI/UX 관점
화면 변경 시 몇 가지를 체크했음.
로딩 상태: 비동기 요청 중에는 로딩 인디케이터를 표시했음. 버튼을 비활성화해서 중복 클릭을 방지했음.
btn.disabled = true;
try {
await fetch('/api/...');
showSuccess();
} catch(e) {
showError(e.message);
} finally {
btn.disabled = false;
}
빈 상태 처리: 데이터가 없을 때 빈 화면 대신 "데이터가 없습니다" 메시지를 표시했음.
오류 메시지: 기술적인 에러 코드 대신 사용자가 이해할 수 있는 메시지를 표시했음.
다음
댓글 0
첫 댓글 달아줘.