소개
지난 사례에서는 엑셀 작업큐를 확인해 실행 시간이 된 자동화 작업을 파이썬으로 실행하는 rpa_pilot_package_v2_1을 만들었습니다. 월간 보고서 생성, 여러 엑셀 파일 병합, 주간 PPT 생성, PDF 병합 같은 작업을 하나의 목록에서 관리할 수 있다는 점은 유용했습니다.
하지만 직접 사용 해 보니 몇 가지 불편과 위험이 보였습니다. 작업 등록과 결과 확인을 위해 엑셀 파일과 폴더를 계속 열어야 했고, 실행 중 중복 실행이나 동시 편집이 발생할 가능성도 있었습니다. 자동화가 성공했다는 표시만으로는 산출물이 정상인지 확인하기 어려웠으며, 담당자의 검증 결과를 체계적으로 기록하는 기능도 부족했습니다.
이번에는 기존 RPA 실행 구조를 유지하면서 안정성을 보완하고, 업무 담당자가 브라우저 화면에서 쉽게 운영할 수 있는 로컬 Streamlit 웹앱으로 확장해 보았습니다.
진행 방법
ChatGPT에 기존 패키지의 파일 구조와 소스코드를 제공하고, 실행 엔진은 유지하면서 운영 기능을 개선하도록 요청했습니다. 대표 프롬프트를 정리하면 다음과 같습니다.
기존
rpa_pilot_package_v2_1의 엑셀 작업큐와 파이썬 실행 방식을 유지하면서 안정성과 사용성을 개선해줘.중복 실행 방지, 작업큐 자동 백업, 안전한 저장, 허용된 스크립트만 실행하는 기능을 추가하고, 실행 결과에는 산출물 경로와 검증 상태, 오류 내용을 남겨줘. 업무 담당자가 명령 프롬프트나 엑셀을 직접 조작하지 않아도 되도록 Streamlit 기반의 로컬 웹 화면을 만들어줘.
웹앱에서는 대시보드, 작업 등록·수정, 개별 작업 실행, 실행 예정 작업 확인, 실행 로그 조회, 산출물 다운로드, 담당자 검증 결과 입력, 사용 문서 열람이 가능하게 해줘.
자동화 결과는 담당자가 검증한 후에만 공유 완료로 처리하도록 구성해줘.
가장 큰 변화는 기존 실행 엔진 앞에 웹 기반 운영 화면을 추가한 것입니다. 배치파일을 실행하면 현재 PC의 브라우저에서 대시보드가 열리고, 전체 작업 수, 실행 예정 작업, 검증대기, 오류, 예상 절감시간 등을 확인할 수 있습니다.
작업큐에는 검토자, 검증 상태, 검증 메모, 최근 산출물, 최대 실행시간 항목을 추가했습니다. 실행이 끝난 작업은 바로 완료되지 않고 검증대기 상태가 되며, 담당자가 결과물을 확인하고 검증 의견을 입력해야 검증완료 또는 공유완료로 변경할 수 있게 했습니다.
안정성을 위한 기능도 보완했습니다. 같은 작업이 동시에 실행되지 않도록 잠금 기능을 적용하고, 작업큐를 저장하기 전에 백업본을 만들도록 했습니다. 임의의 명령어 대신 허용된 업무 스크립트만 실행하게 했으며, 실제 실행 전 대상 작업과 명령어만 확인하는 Dry Run 기능도 추가했습니다. 파이썬과 필수 패키지, 주요 파일의 설치 상태를 확인하는 환경점검 기능도 포함했습니다.
[캡처 1: Streamlit 대시보드 화면]
파란색 배경의 한국 웹사이트 스크린샷
[캡처 2: 작업 실행 후 검증 상태와 검증 메모를 입력하는 화면]
한국어가 포함된 웹사이트의 스크린샷
결과와 배운 점
이번 개선을 통해 RPA가 단순히 스크립트를 실행하는 도구에서, 작업 등록·실행·기록·검증까지 관리하는 작은 업무 운영 도구로 발전했습니다. 특히 기존 실행 엔진을 버리고 새로 만드는 대신, 검증된 기능은 유지하고 그 위에 사용하기 쉬운 화면과 통제 기능을 추가하는 방식이 효과적이었습니다.
가장 크게 배운 점은 “실행된다”와 “운영할 수 있다”가 다르다는 것입니다. 실제 업무에 사용하려면 중복 실행 방지, 오류 기록, 백업, 산출물 확인, 담당자 검증 같은 기능이 함께 필요했습니다. ChatGPT에 화면을 만들어 달라고만 요청하기보다, 사용자 역할과 작업 상태, 검증 절차를 구체적으로 설명했을 때 더 실용적인 결과를 얻을 수 있었습니다.
시행착오도 있었습니다. 기존 엑셀 작업큐와 웹앱에서 사용하는 컬럼명이 맞지 않아 수정이 필요했고, 웹 화면과 엑셀에서 동시에 작업큐를 편집하면 충돌할 가능성도 확인했습니다. 그래서 실행 중에는 편집을 차단하고, 웹앱과 엑셀을 동시에 수정하지 않는 운영 원칙을 두었습니다.
현재 패키지는 개인 또는 소규모 부서의 로컬 파일럿에 적합합니다. 앞으로 여러 사용자가 함께 쓰려면 엑셀 작업큐를 데이터베이스로 전환하고, 사용자별 권한과 승인 절차를 추가하는 부분에 도움이 필요할 것 같습니다.
다음 번에는 초보적인 DB로 SQLite를 사용하고, FastAPI를 웹서버로 도입할 예정입니다. 스터디장님과 AI로부터 자문을 받은 결과 Python + Streamlit + FastAPI + SQLAlchemy + SQLite 조합이 상당히 안정적인 모듈화 구조라는 것을 알았습니다. 실행 로직은 Python, 웹 UI + 서버는 Streamlit + FastAPI, 데이터 모델과 저장소는 SQLAlchemy + SQLite 구조가 되므로 향후 다른 프로그램으로 확장하는 경우에도 해당하는 부분만 변경하면 된다고 합니다.
도움 받은 글
별도의 외부 사례보다는 기존 패키지를 직접 실행하면서 발견한 문제를 ChatGPT에 전달하고, 수정된 결과를 다시 확인하는 방식으로 진행했습니다.