이번 작업은 사내 ERP에 있는 여러 사업장의 월별 인건비 데이터를 추출해 하나의 엑셀 파일로 정리하는 것이었습니다.
다만 이번에는 자동화 자체보다 먼저 데이터와 시스템 접근 보안을 중요한 전제로 두고 진행했습니다.
ERP에는 인건비와 손익 등 외부에 공개해서는 안 되는 회사 내부 정보가 포함되어 있기 때문입니다.
그래서 작업을 시작할 때부터 다음 원칙을 적용했습니다.
비밀번호
→ AI에게 전달하지 않음
→ 사용자가 직접 로그인
ERP 접근
→ 로그인된 세션 범위에서만 진행
추출 데이터
→ 작업에 필요한 항목만 사용
중간 스크린샷
→ 민감정보가 포함된 자료로 취급
최종 결과물
→ 내부 업무용 파일로 관리
공개 사례글
→ 회사명, 계정, 사업장명,
매출·영업이익·인건비 등 실제 수치 제거즉 이번 사례의 목표는 단순히
ERP 데이터를 얼마나 자동으로 뽑을 수 있는가?가 아니라,
민감한 업무 데이터를 다루면서도
접근 범위를 통제하고,
정확성을 검증하고,
안전하게 결과물을 만들 수 있는가?를 함께 확인하는 것이었습니다.
필요한 데이터는 크게 두 종류였습니다.
손익 관련 주요 지표와 인건비 항목
원가 관련 주요 인건비 항목
처음에는 비교적 단순한 작업이라고 생각했습니다.
ERP 접속
→ 사업장별 보고서 조회
→ 월별 데이터 추출
→ 엑셀 정리
→ 합계 검증하지만 실제로는 예상보다 많은 시행착오가 있었습니다.
가장 큰 이유는 사용 중인 ERP의 보고서 화면이 일반적인 HTML 테이블이 아니라 Canvas 기반 UI로 만들어져 있었기 때문입니다.
결국 이번 작업은 단순한 웹 스크래핑이 아니라,
브라우저 자동화 + 화면 조작 + 스크린샷 판독 + 데이터 검증 + 엑셀 생성 + 보안 점검
을 함께 수행하는 작업이 됐습니다.
진행 방법
1. ERP에 접속하고 필요한 보고서 구조 확인
먼저 사내 ERP에 접속해 필요한 보고서를 확인했습니다.
크게 다음 두 종류였습니다.
손익 관련 보고서
→ 월별 주요 지표와 인건비 확인
원가 관련 보고서
→ 월별 주요 인건비 확인로그인 정보는 AI에게 전달하지 않았습니다.
자동화 환경에 로그인 정보가 저장되어 있지 않았기 때문에 로그인은 직접 수행하고, 로그인된 브라우저 세션부터 AI가 이어서 사용하도록 했습니다.
로그인
→ 사용자 직접 수행
로그인 이후 조회·분석
→ AI가 수행비밀번호를 대화나 코드에 남기지 않으면서 필요한 업무만 자동화하기 위한 방식이었습니다.
이후 AI가 보고서 화면과 조회 조건을 확인했습니다.
기간
→ 여러 달의 월별 데이터
기간 단위
→ 월
대상
→ 여러 사업장
조회 수준
→ 보고서별 필요한 상세 수준2. 일반적인 웹 스크래핑을 시도했지만 실패
처음에는 보고서 화면에서 데이터를 직접 읽어오려고 했습니다.
일반적인 웹페이지라면 다음과 같이 처리할 수 있습니다.
페이지 구조 확인
→ HTML 테이블 탐색
→ 행과 열 추출
→ 필요한 숫자 수집하지만 ERP에서는 이 방식이 통하지 않았습니다.
사람의 눈에는 숫자가 분명히 보였지만, 브라우저가 읽을 수 있는 HTML 요소에는 실제 데이터 셀이 존재하지 않았습니다.
보고서 전체가 Canvas 위에 그려지고 있었기 때문입니다.
화면에는 숫자가 보임
↓
DOM에는 데이터 셀이 없음
↓
일반적인 텍스트 추출 실패브라우저의 DOM을 직접 읽는 방식이나 화면 텍스트 구조를 가져오는 방법도 시도했지만 보고서 숫자는 나타나지 않았습니다.
그래서 접근 방법을 바꿨습니다.
3. 스크린샷을 기반으로 데이터 수집
Canvas에서 값을 직접 추출하기 어려웠기 때문에 각 사업장의 보고서를 화면에 표시한 뒤 스크린샷으로 저장했습니다.
사업장 조회
→ 보고서 화면 캡처
→ 필요한 행과 월별 값 확인
→ 구조화된 데이터로 정리스크린샷에서 숫자를 확인해 임시 데이터 구조에 옮겼습니다.
완전히 자동화된 방식은 아니었습니다.
하지만 Canvas를 억지로 자동 추출하다 잘못된 숫자를 가져오는 것보다, 화면에 실제 표시된 값을 기준으로 확인하는 편이 더 안전하다고 판단했습니다.
동시에 스크린샷 자체에도 사내 수치가 포함될 수 있기 때문에, 단순한 임시 이미지가 아니라 민감한 중간 데이터로 취급했습니다.
이번 작업에서는 자동화 비율보다 정확성과 데이터 통제를 우선했습니다.
4. 사업장 선택 팝업에서 계속 실패
다음 문제는 사업장을 변경하는 과정에서 발생했습니다.
사업장 선택 팝업 역시 일반적인 HTML 체크박스가 아니라 Canvas 기반으로 만들어져 있었습니다.
처음에는 Canvas 크기와 화면 좌표를 계산해 원하는 행을 클릭하려 했습니다.
Canvas 크기 확인
→ 대상 행 위치 계산
→ 마우스 클릭하지만 원하는 항목과 다른 행이 선택됐습니다.
좌표를 다시 조정하자 이번에는 커서만 이동하고 선택은 되지 않았습니다.
화면 배율과 Canvas 내부 해상도까지 고려해 좌표를 변환해봤지만 안정적으로 동작하지 않았습니다.
여러 번 시도한 뒤 방법을 바꿨습니다.
마우스로 원하는 행까지 이동
→ Space 키로 선택
→ Enter 키로 확정이 방법은 훨씬 안정적이었습니다.
복잡하게 좌표를 계산하는 것보다 키보드 조작이 더 강한 자동화 방법이 될 수 있다는 점을 확인했습니다.
5. 여러 달의 데이터가 한 화면에 나오지 않는 문제
월별 데이터는 열이 많아 한 화면에 전부 표시되지 않았습니다.
뒤쪽 월을 보려면 수평 스크롤이 필요했는데, 스크롤바 역시 Canvas 기반이었습니다.
스크롤 위치를 계산해 마우스로 드래그해봤지만,
같은 위치에서 움직이지 않거나
너무 많이 움직이거나
예상과 반대 방향으로 움직이는
문제가 반복됐습니다.
결국 데이터를 앞쪽과 뒤쪽 구간으로 나눠 확인했습니다.
첫 번째 화면
→ 앞쪽 월 데이터
두 번째 화면
→ 뒤쪽 월 데이터그리고 양쪽 화면에 공통으로 포함되는 일부 월을 비교했습니다.
첫 화면의 겹치는 월
=
두 번째 화면의 겹치는 월
→ 값이 같으면 두 구간 연결불편한 방식이었지만, 겹치는 구간 자체를 데이터 정합 성 검증에 활용할 수 있었습니다.
6. 원가 보고서가 비어 있었던 원인 찾기
원가 데이터를 조회할 때 처음에는 화면이 비어 있었습니다.
처음에는 해당 사업장에 데이터 자체가 없는 것으로 볼 수도 있었습니다.
하지만 조회 조건을 다시 확인해보니 문제는 조회 상세 수준이었습니다.
처음 설정
→ 지나치게 세부적인 조회 수준
수정
→ 필요한 항목 수준조건을 변경하자 정상적인 데이터가 나타났습니다.
드롭다운 역시 일반적인 HTML select 요소가 아니어서 자동 선택 기능을 사용할 수 없었습니다.
결국 드롭다운을 직접 열고 원하는 항목을 클릭하는 방식으로 처리했습니다.
이후 일부 사업장에서는 실제로 해당 원가 데이터가 없는 경우도 별도로 확인했습니다.
공개용 사례글에서는 어떤 사업장이 어떤 기능을 수행하는지와 같은 조직 정보도 제거했습니다.
7. 장시간 작업 중 세션 만료와 중간 데이터 소실
사업장과 보고서가 여러 개다 보니 작업 시간이 길어졌습니다.
진행 도중 ERP 세션이 만료돼 다시 로그인이 필요했습니다.
이때도 AI에게 인증정보를 넘기는 대신 사용자가 직접 재로그인했습니다.
또 자동화 환경의 상태가 정리되는 과정에서 임시 변수로 보관했던 일부 데이터가 사라지는 문제도 있었습니다.
다행히 기존 스크린샷은 남아 있었습니다.
ERP 세션 만료
→ 사용자 재 로그인
임시 데이터 일부 소실
→ 기존 스크린샷 확인
→ 데이터 복원
→ 작업 재개이 과정을 통해 긴 자동화에서는 중간 데이터를 메모리에만 가지고 있는 것은 위험하다는 것을 확인했습니다.
다음에는 각 사업장의 데이터가 확보될 때마다 JSON이나 CSV 같은 파일로 즉시 저장하는 편이 안전합니다.
8. 데이터를 모은 뒤 합계부터 검증
모든 데이터를 모았다고 바로 엑셀을 만들지는 않았습니다.
먼저 각 항목의 월별 값을 합산하고 ERP 화면의 합계와 비교했습니다.
월별 값
+ 월별 값
+ ...
=
ERP 화면에 표시된 합계주요 인건비 항목을 같은 방식으로 검증했습니다.
월별 입력값 합계
→ ERP 합계와 대조
→ 불일치 여부 확인스크린샷에서 값을 옮긴 만큼, 이 과정은 단순한 확인이 아니라 필수 검증 단계였습니다.
9. ERP를 다시 조회하니 일부 원본 데이터가 변경됨
첫 번째 합계 검증이 끝난 뒤 일부 핵심 데이터를 ERP에서 다시 조회했습니다.
그 과정에서 처음 수집했을 때와 일부 손익 값이 달라져 있는 것을 발견했습니다.
처음에는 입력 실수라고 생각했습니다.
하지만 인건비 세부 항목을 다시 비교해보니 해당 값들은 변하지 않았고, 다른 손익 항목이 변경돼 있었습니다.
재조회 과정에서 차이 발견
→ 인건비 항목 재확인
→ 인건비 값은 동일
→ 다른 항목의 변동 확인
→ 관련 결과도 함께 수정공개 사례글에서는 실제 변경 금액이나 세부 재무수치를 모두 제외했습니다.
여기서 중요한 점은 추출 대상인 원본 데이터도 작업 중 변경될 수 있다는 것이었습니다.
10. 이상하게 큰 값은 수정하지 않고 다시 확인
일부 월의 값은 다른 월과 비교해 유난히 크게 보였습니다.
처음에는 숫자를 잘못 읽었거나 입력했다고 의심했습니다.
그래서 ERP 원본의 관련 행을 다시 확인했습니다.
값이 이상해 보임
→ 입력 오류 의심
→ ERP 원본 재조회
→ 관련 지표와 교차 확인
→ 원본과 일치하면 그대로 유지확인 결과 실제 ERP 원본 값과 같았습니다.
AI가 보기에도 이상하다는 이유만으로 데이터를 변경하지 않고, 이상값은 수정 대상이 아니라 검증 대상으로 처리했습니다.
11. 최종 엑셀 파일 생성
검증이 끝난 데이터는 Python과 openpyxl을 이용해 하나의 엑셀 파일로 만들었습니다.
사업장별로 시트를 구분했고, 각 시트는 크게 세 영역으로 나눴습니다.
1. 손익 관련 데이터
2. 원가 관련 데이터
3. 검증 영역검증 영역에는 월별 데이터의 합계를 다시 확인할 수 있도록 SUM 수식도 넣었습니다.
ERP 원본
→ 월별 데이터 추출
→ 합계 검증
→ Excel 생성
→ Excel 내부에서도 재검증실제 업무 파일에는 민감한 수치가 포함되어 있지만, 공개 사례글에서는 회사명·시스템 주소·계정·사업장명·실제 매출·영업이익·인건비 숫자 등을 모두 제외했습니다.
12. 엑셀 생성 과정에서 실행 환경 문제 발생
데이터 수집이 끝난 뒤에는 파일 생성이 쉽게 끝날 것이라고 생각했습니다.
하지만 실행 환경에서도 문제가 생겼습니다.
처음에는 다른 운영체제에서 사용하는 셸 문법으로 Python 코드를 실행하려 했는데 현재 환경에서는 동작하지 않았습니다.
다른 방식으로 실행하니 한글 경로 처리가 깨졌고, 사용자 홈 폴더를 자동으로 가져오는 방식도 실제 Windows 경로와 맞지 않았습니다.
결국 다음처럼 처리했습니다.
Python 코드
→ 별도 .py 파일로 저장
스크립트 실행
→ 결과 파일 생성
생성 파일 확인
→ 실제 결과물 폴더로 이동브라우저 자동화뿐 아니라 실행환경과 파일 경로 역시 전체 자동화의 일부였습니다.
결과와 배운 점
최종적으로 여러 사업장의 월별 인건비 데이터를 하나의 엑셀로 정리할 수 있었습니다.
✅ 여러 사업장의 월별 데이터 정리
✅ 손익 관련 인건비 데이터 수집
✅ 원가 관련 인건비 데이터 수집
✅ 월별 합계와 ERP 합계 비교
✅ 사업장별 시트 구성
✅ SUM 검증 수식 적용
✅ ERP 원본 재조회하지만 이 번 사례에서는 결과물 자체만큼이나 보안과 자동화 수준을 같이 평가해본 것이 중요했습니다.
1. 로그인 정보를 AI에 넘기지 않았다
로그인 정보가 자동화 환경에 저장돼 있지 않았기 때문에 사용자가 직접 로그인했습니다.
비밀번호 전달
→ 하지 않음
사용자 직접 로그인
→ 로그인된 세션에서 필요한 작업만 수행사내 시스템 자동화에서 꼭 모든 단계를 AI에게 맡길 필요는 없었습니다.
민감한 인증 단계는 사람이 수행하고, 로그인 이후의 반복 작업만 자동화하는 방식도 충분히 현실적인 선택이었습니다.
2. 데이터 추출 과정 자체에도 보안 위험이 있었다
Canvas 데이터를 읽기 위해 사용한 스크린샷에는 실제 업무 데이터가 포함됩니다.
따라서 스크린샷도 결과 엑셀만큼이나 민감한 자료입니다.
ERP 화면 캡처
→ 단순 이미지가 아님
→ 내부 데이터가 포함된 임시 파일향후에는 작업이 끝난 뒤 다음 과정을 명시적으로 수행하는 편이 좋습니다.
작업 완료
→ 결과 검증
→ 불필요한 스크린샷 삭제
→ 임시 데이터 정리
→ ERP 로그아웃3. 로그인뿐 아니라 로그아웃도 자동화 설계의 일부였다
비밀번호를 AI에게 전달하지 않더라도 로그인된 브라우저 세션이 살아 있다면 ERP 접근 권한은 계속 유지됩니다.
따라서 앞으로는 업무 완료 조건에 명시적 로그아웃도 넣는 것이 좋습니다.
로그인
→ 작업
→ 검증
→ 파일 생성
→ 민감자료 정리
→ 로그아웃자동화의 시작뿐 아니라 종료까지 설계해야 한다는 점을 배웠습니다.
4. 결과 엑셀도 별도의 보안 관리가 필요하다
최종 엑셀 역시 내부 재무·인건비 정보를 포함하기 때문에 일반 문서처럼 다루면 안 됩니다.
실제 업무에서는 다음을 고려할 필요가 있습니다.
저장 폴더 접근권한
공유 대상 제한
필요시 파일 암호화
불필요한 복사본 제거
외부 전송 제한
즉 데이터를 잘 뽑는 것과 데이터를 안전하게 보관하는 것은 별개의 문제였습니다.
5. 자동화 수준을 과장하지 않았다
겉으로 보면 AI가 ERP에서 데이터를 가져와 엑셀까지 만들었기 때문에 거의 모든 작업이 자동화된 것처럼 보일 수 있습니다.
하지만 실제로는 그렇지 않았습니다.
자동화가 잘 된 부분:
페이지 이동
조회 조건 설정
일부 화면 조작
스크린샷 저장
합계 계산
엑셀 생성사람 또는 화면 판독이 필요했던 부분:
로그인
Canvas 데이터 확인
일부 스크롤
사업장 선택 보정
데이터 의미 판단
최종 검증따라서 이번 사례는 완전자동화보다는