[portfolio](https://geonwoo.kim/ko/portfolio) › 비즈톡

# 채권 미납 안내 RPA

https://geonwoo.kim/ko/portfolio/bond-rpa

기간: 2025.06 — 2025.07

기획팀은 매달 초 미납 고객사에 메일과 알림톡을 보내며, 엑셀 수기 입력과 PDF 직접 생성을 반복했습니다. 이 과정을 한 페이지로 옮기는 RPA를 기획부터 맡았습니다.

2일 넘게 걸리던 미납 안내를 10분으로

팀: 1인

역할: 기획 · DB·플로우 설계 · PDF 생성 자동화 · 메일·알림톡 고지 자동화 · 디자인 · 클라이언트 페이지

Java 17 · Spring Boot 3.5 · MyBatis · MySQL · poi-ooxml · LibreOffice · JavaMailSender · Next.js 15 · React 19

- 연체 고객사 조회부터 채권 등록·삭제까지 한 페이지에서 관리
- 미납 고객사별 미납액과 납부기한을 채운 PDF 자동 생성
- 메일·알림톡 고지를 버튼 하나로 발송

## 고객사마다 다른 PDF와 메일 본문

문제: 매달 100곳이 넘는 미납 고객사마다 다른 미납액과 납부기한을 엑셀 양식에 고쳐 넣어 PDF로 뽑고, 메일 본문도 손으로 적었습니다.

해결: 엑셀 양식에서 바뀌는 셀(문서 번호, 생성일, 수신자, 청구월, 미납액, 납부기한)의 위치를 상수로 정리했습니다. poi-ooxml로 그 셀에 DB 값을 채우고, LibreOffice로 PDF를 만들었습니다. 메일 제목과 본문도 고객사에 맞게 채워 JavaMailSender로 PDF와 함께 보냈습니다. 2일 넘게 걸리던 미납 안내 업무가 10분으로 줄었습니다.

## 설치 권한이 없는 서버에서 PDF 변환

문제: 처음에는 Aspose로 엑셀을 PDF로 바꿨지만, 무료 라이선스에서는 PDF 상단에 빨간 문구가 찍혔습니다. 운영 서버에는 프로그램을 설치할 권한도 없었습니다.

해결: LibreOffice로 바꿔 변환이 정상 동작하는 것을 확인했습니다. 설치 대신 AppImage로 올려 실행하고, WAS에서 headless 옵션으로 변환 프로세스를 띄웠습니다. 변환한 PDF의 한글이 깨져, 서버에 없던 맑은 고딕 폰트도 함께 올렸습니다.

## 같은 문서의 반복 생성

문제: 같은 조건으로 문서를 다시 요청하면 같은 파일을 또 만들어 자원을 낭비할 수 있었습니다. IDC 서버라 S3를 쓸 수 없어 파일을 서버 디스크에 저장해야 했습니다.

해결: 고객사 ID, 문서 생성일, 청구월, 납부기한, 미납액으로 16자리 해시를 만들었습니다. 이 해시와 확장자를 복합키로 하는 문서 생성 로그 테이블을 두고, 파일은 해시별 디렉터리에 저장했습니다. 로그에 있는 문서는 다시 쓰고, 없을 때만 새로 만들었습니다.

## 대량 발송 중 진행 상황

문제: 버튼 하나로 여러 고객사에 보내면 화면에서 진행 상황을 알 수 없었습니다.

해결: 발송 건별 로그를 저장하고 SSE로 진행 이벤트를 흘렸습니다. 메일·알림톡은 병렬(core 4, max 8)로 보냈습니다.


[BGMS 로그 마스킹 모듈](https://geonwoo.kim/ko/portfolio/log-masking) · [BGMS 메시지 발송 시스템 개발과 운영](https://geonwoo.kim/ko/portfolio/biztalk-bgms)
