[React/SpringBoot] RPA 주간보고 자동화 시스템 (사이드 프로젝트)
서론
사실 거창한 이유에서 시작된 프로젝트는 아니었습니다. 회사에서 일을 하다 보면 매주 반복되는 보고서 작성이 늘 번거롭게 느껴졌습니다.
주 후반에 몰아서 한 주를 정리하다 보면, "아, 이걸 그때그때 간단히라도 기록해뒀다면 얼마나 편했을까?"라는 생각이 들곤 했고,
그러다 문득 "이 반복적인 업무를 조금이라도 줄여보면 어떨까?" 라는 아이디어가 떠올랐습니다.
그 계기로 사이드 프로젝트로 시작된 것이 바로 이 "RPA 주간보고 자동화 시스템"이었습니다.
RPA란 ?
RPA(Robotic Process Automation)는 사람이 컴퓨터 앞에서 반복적으로 수행하는 업무를 소프트웨어 로봇(봇)으로 자동화하는 기술입니다.
즉, 사람이 마우스 클릭이나 키보드 입력으로 하던 단순·반복적인 작업을 로봇이 대신 처리하는 것이죠.
여기서 말하는 로봇은 물리적인 로봇이 아니라 PC 안에서 동작하는 프로그램을 의미합니다.
기업과 기관에서 매일 반복되는 업무는 생각보다 많습니다.
RPA를 도입하면 업무 속도는 빨라지고, 인적 오류는 줄어들며, 직원들은 좀 더 가치 있는 일(분석, 기획 등)에 집중할 수 있습니다.
개발 배경
- 회사 환경과 맞물림: 마침 회사에서도 React와 Spring Boot를 공부해야 하는 상황이었습니다. 사이드 프로젝트를 통해 자연스럽게 코드와 친해질 수 있었죠.
- 번거로운 보고 문화: 한 주의 업무를 정리하고 문서화하는 과정이 생각보다 많은 리소스를 차지했습니다. 동기들과 함께 쓸 수 있다면 더 효율적이지 않을까 싶었습니다.
- 동기부여의 결핍: 단순히 ‘보고용 문서’에 머물러선 안 된다 생각했습니다. 내가 무엇을 해왔는지 기록으로 남기고, 이를 대시보드에서 한눈에 볼 수 있다면 "쳇바퀴 같은 업무 속에서도 성취감과 동기를 얻을 수 있지 않을까?" 라는 고민이 있었습니다.
구현 기능 (현재까지)
단순한 보고 작성 툴을 넘어서 반복되는 업무를 최소화하고 동기부여를 극대화하는 플랫폼을 목표로 했습니다.
- 주간보고 작성 및 관리
- 다중 프로젝트 지원
- 이번주/다음주 계획 자동 구분
- 지난주 계획 불러오기 기능
- 엑셀 내보내기
- Apache POI 기반의 안정적인 서식 유지
- 부서별 시트 자동 생성
- AI 챗봇
- Google Gemini API 연동
- 실시간 가이드 및 질의응답
- 대시보드
- 진행률 차트 시각화
- 개인/부서별 통계 분석
- 모바일 최적화
- 반응형 UI, PWA 지원
- 알림 기능(네이티브 앱에서 푸시 지원)
사용 스택
Backend
- Java 11 / Spring Boot 2.7.18
- MyBatis 2.3.1
- PostgreSQL
- Apache POI
- Spring WebFlux (비동기 API 통신)
- Google Gemini API
Frontend
- React 18.2
- React Router 6
- Axios 1.4
- Zustand (상태관리)
- Lottie React
- CSS3 (반응형 디자인)
Infra & Tooling
- Docker & Docker Compose
- Nginx
- Maven, npm
- AWS 배포 완료
기대 효과
단순히 "보고서 작성이 편하다"에서 그치지 않고, 업무 효율성을 수치화할 수 있다고 생각했습니다.
한 사람이 보고서 작성에 평균 50분을 쓴다고 가정했을 때, 이 앱을 사용하면 이를 15~20분 수준까지 단축할 수 있을거라 기대합니다.
회사 입장에서도, 개인 입장에서도 큰 시간 절약 효과를 기대할 수 있는 셈이죠.
나아가서는 부서/조직 단위의 보고서 취합을 자동화하여 매주 월요일 자정에 n8n으로 자동 메일을 발송하는 기능까지 계획하고 있습니다. 한 주를 시작하는 회의 전, 수작업으로 보고서를 모으는 번거로움에서 벗어날 수 있지 않을까..!
처음에는 단순히 배운 걸 바탕으로 "엑셀 자동화나 해보자" 정도의 가벼운 마음으로 시작했습니다.
하지만 기능을 붙여가면서 "내가 만든 툴이 실제로 사람들의 시간을 줄이고, 불편을 해소할 수 있겠구나"라는 사실은 꽤 감명깊었습니다.
Docker 배포는 처음이었지만, 덕분에 .sh에 대해서 눈을 뜨게 되고 , 얼마전 올렸던 자동화 배포 테스트 스크립트를 만드는 계기가 되었구요.
챗봇, 엑셀 다운로드, 대시보드라는 단순한 기능 세트였지만, 이를 실제 서비스 형태로 완성한 경험은 “이렇게 배우는 맛에 개발을 하는구나” 라는 걸 내심 느끼게 된 시간이었습니다.
유지보수 측면에서 엑셀 코드 같은 경우에는 매번 템플릿이 바뀌는 경우에는 불편함이 여전히 있는데 , 이런 부분도 제 능력이 된다면 템플릿화 시켜서 서식에 맞춰서 얼마든지 찍어낼 수 있게 만드는 것이 목표입니다.
트러블 슈팅
1. 엑셀 서식이 자꾸 깨짐.
엑셀 내보내기 기능을 처음 붙였을 때, Apache POI로 생성한 파일을 열면 글씨체, 색상, 병합된 셀이 전부 깨져 보이는 문제가 있었습니다.
처음엔 코드 문제라고만 생각했는데, 템플릿 기반으로 만들지 않고 새 워크북을 매번 생성했던 게 원인이었죠.
결국 템플릿 파일을 리소스에 두고 거기서 스타일을 복사하는 방식으로 바꿔 문제를 해결했습니다.
2. “지난주 계획 불러오기” 무한루프
이번 주 보고서를 만들 때 지난주 계획을 불러오는 기능을 구현했는데, 테스트 중에 보고서를 생성할 때마다 계획이 중복으로 쌓여서 무한정 늘어나는 버그가 있었습니다.
단순히 INSERT만 하고 중복 체크를 안 했던 게 원인이었고,
이걸 해결하면서, “기본적인 예외 처리를 절대 간과하면 안 된다” 는 교훈을 얻었습니다.
3. CORS
React 프론트엔드와 Spring Boot 백엔드를 처음 연결했을 때는 CORS 에러로 몇 시간을 허비했습니다.
온갖 구글링 끝에 @CrossOrigin과 Spring Security 설정을 손봐도 해결이 안 되길래 멘붕이었는데, 알고 보니 쿠키 기반 세션 인증을 쓰면서 withCredentials: true 옵션을 Axios에 빼먹은 게 문제였습니다.
이후 계획
- 보고서 템플릿화: 부서별/개인별 맞춤 양식 지원
- 알림 시스템 고도화: 앱 푸시 기능 연동
- 조직 단위 통합 관리: 부서별 통계 및 취합 자동화
- 장기 : 마이크로서비스 아키텍처, 실시간 협업 기능, 고급 데이터 분석 , n8n
마무리
“반복되는 업무에서 자유로워지고, 스스로의 성취를 기록으로 남기며, 동기부여를 잃지 않게 하는 시스템” 이라는 목표를 담고 있습니다.
사이드 프로젝트이지만, 제가 가진 문제의식을 직접 해결해 나가는 과정이었고, 동시에 React와 Spring Boot를 현업 감각으로 체화할 수 있는 최고의 작업이자 학습이었습니다.
언젠가 기회가 된다면 이 프로젝트를 직접 시연해보고 싶습니다.
아마 여러분도 “이거 회사에서 바로 쓰면 되겠는데?”라는 생각이 드실지도 모를테구,,
AI 시대에 진정으로 살아남는 힘은 기술 그 자체가 아니라, 무엇이 불편하고 어려운지 누구보다 예리하게 포착하는 사용자 중심의 시각에 있다고 생각합니다.
추석 전 마지막 글이 아닐까 합니다 !
모두들 명절 잘 보내시길 !