가상계좌 발급현황 조회 기능 완성
목차
가상계좌는 결제 플랫폼에서 매우 일반적인 결제 수단이다. 온라인 거래 특성상 여러 고객에게 여러 건의 계좌를 발급해야 하는데, 발급된 계좌들이 어떤 상태인지 실시간으로 파악하는 건 운영자 입장에서 필수적이다. 이번 커밋에서는 관리자가 발급된 가상계좌의 현황을 조회하고, 그 정보를 구조화해서 저장할 수 있는 기능을 추가했다. 말이 간단하지만, 웹 계층에서 데이터베이스까지 여러 계층을 아우르는 작업이었다.
왜 관리 기능이 필요했나
가상계좌 발급은 단순한 일회성 이벤트가 아니다. 발급 후에는:
- 고객이 실제로 입금했는지 확인
- 거래 상태(대기 → 입금 대기 → 완료)의 흐름 추적
- 미사용 계좌 정리 및 기한 만료 계좌 처리
- 발급 통계 및 트렌드 분석
같은 일들이 계속 필요하다. 이런 것들을 개별 쿼리나 로그로만 추적하려면 관리자의 부담이 크다. 그래서 관리 화면에서 한눈에 현황을 파악할 수 있는 인터페이스와, 그 뒤에서 정보를 체계적으로 적재할 구조가 필수였다. 초기에는 "발급"만 가능하면 되지만, 어느 정도 규모가 커지면 "모니터링"이 자연스럽게 따라오게 되는 거다.
이번 작업의 스코프와 구조
변경 파일들을 보면 이번 커밋의 범위가 꽤 넓다는 걸 알 수 있다.
| 영역 | 추가 내용 | 역할 |
|---|---|---|
| Controller (Pay) | 가상계좌 발급 현황 조회 엔드포인트 | 결제 관점에서 발급 현황 제공 |
| Controller (Wallet) | 발급된 계좌 정보 조회 엔드포인트 | 계좌 관점에서 상세 정보 제공 |
| SQL 매퍼 | 발급 정보 검색/통계 쿼리 | DB에서 필요한 데이터 추출 |
| Excel Config | 가상계좌 현황 export 설정 | 오프라인 분석 및 보고서 작성 지원 |
| 진행 문서 | jeju 프로젝트 인수인계 기록 | 다음 단계와 담당자 전달 준비 |
설계에서 주목할 점들
Controller 분리 (Pay vs Wallet)
pay/web과 wallet/web 두 곳에 엔드포인트를 나눈 건 책임을 명확히 하기 위함이다. pay는 "이 가상계좌로 얼마의 결제가 발생했나?"를 다루고, wallet은 "이 계좌의 잔액과 거래 기록은?"을 다룬다. 비슷해 보이지만, 도메인을 분리하면 나중에 결제 로직과 계좌 관리 로직이 뒤섞이지 않는다.
Excel 기능의 의미
ExcelConfigRegistry.java에 가상계좌 현황을 추가한 건 단순한 "export" 이상의 의미가 있다. 관리자가 웹 화면만으로는 부족할 때 데이터를 로컬에서 분석하고, 월별/주별 리포트의 근거 자료로 사용할 수 있다. 여러 발급 채널(API, 수동 발급 등)의 통합 현황을 한 파일에 담는 것도 운영 편의성 측면에서 중요하다.
SQL 쿼리의 역할
sqlmap/slecs/ap/ 에 여러 쿼리가 추가된 걸 보면 단순한 조회가 아니라 다양한 각도의 데이터 추출이 필요했던 것 같다. 아마도:
- 상태별 발급현황 조회 (대기, 진행중, 완료 등)
- 기간별 발급 추이 쿼리
- 발급 채널별 통계 쿼리
이런 식으로 관리자가 필요한 각 관점에서 데이터를 살펴볼 수 있도록 설계된 것으로 보인다.
이번 작업을 통해 배운 점
계층별 책임의 중요성
이 작업은 Web계층 → Service → Persistence → DB의 전체 스택을 아우른다. 각 계층이 자신의 책임만 명확하면:
- Controller: 요청 검증, 권한 확인, 응답 형식
- Service: 비즈니스 로직, 필터링과 정렬 규칙
- SQL: 쿼리 최적화, 인덱스 활용
이렇게 분리되어 있으면, 나중에 화면 UI를 바꿔도 SQL은 그대로다. 쿼리 성능을 개선해도 Controller 로직은 영향받지 않는다.
관리 기능 개발의 타이밍
신기능(발급)을 추가할 때 동시에 관리 기능도 고려하는 문화가 중요하다. 처음부터 완벽하게 할 필요는 없지만, 어느 정도 거래량이 쌓이면 "모니터링 없이는 운영이 불가능해진다"는 걸 체감하게 된다. 이번 커밋에서 그 타이밍을 맞춘 건 팀 입장에서 좋은 판단이었다.
인수인계 문서의 가치
.claude/docs/jeju/jeju-progress-handoff.md를 함께 업데이트한 것도 주목할 만하다. 코드만 남기고 문서를 안 남기면 나중에 인수받을 팀원들이 "이게 뭐 하는 기능인가?"를 이해하는 데 시간이 걸린다. 문서에는 "왜 이 기능을 만들었는가", "현재 상태는?", "다음 단계는 뭔가?" 정도가 명확하게 적혀 있어야 다음 단계로 깔끔하게 넘길 수 있다.
가상계좌 발급 관리는 "필수인 줄 모르다가 필요해지는" 기능이다. 이번 커밋은 그 필요성이 명확해진 시점에서 설계와 구현을 균형있게 진행한 사례다. 특히 Controller 분리, Excel 기능, 다양한 SQL 쿼리들이 함께 묶여 있는 걸 보면, 단순한 "기능 추가"가 아니라 "관리 체계 구축"의 관점에서 진행된 작업이라는 게 느껴진다.
🛒 이 글과 어울리는 추천 상품
*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.
댓글 0
첫 댓글 달아줘.