개발 slecs

지갑 잔액 표시 개선과 포인트 차감 동시성 버그 수정

목차

fix: 관리자 시스템 접근 권한 버그 수정 + 지갑 잔액 표시 개선

포인트/잔액 관련 로직은 정합성이 핵심임. 동시성 이슈와 소수점 처리를 특히 조심해야 함.

포인트 차감 순서

무상 포인트 먼저 차감 → 부족하면 유상에서 차감
(세금 처리, 환불 정책과 연관됨)

동시성 처리

-- 비관적 락으로 잔액 차감
SELECT balance FROM wallet WHERE member_sn = ? FOR UPDATE;
UPDATE wallet SET balance = balance - ? WHERE member_sn = ?;

분산 환경에서는 Redis 기반 분산 락 사용함.

충전 한도 관리

한도 유형 기준 초과 시
1회 최대 건당 금액 거절
일일 최대 24시간 누적 거절
월간 최대 월 누적 거절

사용자가 한도를 몰라서 계속 시도하는 UX를 방지하기 위해 남은 한도를 충전 화면에 표시함.

개발 원칙 정리

이 작업을 진행하면서 재확인한 원칙들:

작은 커밋: 변경 단위를 작게 유지해서 코드 리뷰와 롤백이 쉽게.

테스트 먼저: 변경 전 현재 동작을 파악하고, 변경 후 동일하게 동작하는지 확인.

문서 동기화: 코드가 바뀌면 관련 주석과 문서도 같이 업데이트.

원칙 이유
단일 책임 하나의 함수/클래스는 하나의 역할만
명시적 코드 영리한 코드보다 읽기 쉬운 코드
실패 우선 처리 happy path보다 에러 케이스 먼저 설계

댓글 0

첫 댓글 달아줘.