채권 미납 안내 RPA
기간 —
기획팀은 매달 초 미납 고객사에 메일과 알림톡을 보내며, 엑셀 수기 입력과 PDF 직접 생성을 반복했습니다. 이 과정을 한 페이지로 옮기는 RPA를 기획부터 맡았습니다.
2일 넘게 걸리던 미납 안내를 10분으로
- 연체 고객사 조회부터 채권 등록·삭제까지 한 페이지에서 관리
- 미납 고객사별 미납액과 납부기한을 채운 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)로 보냈습니다.