TBM Hermes Automation Report
TBM 텔레그램·Hermes·Selenium 자동화
최종 작업 결과보고서
작성일: 2026-05-17 | 대상 경로: /root/pms | 최종 상태: VPS 직접 실행 및 텔레그램/Hermes 실행 성공
1. 작업 목적
텔레그램에서 사용자가 TBM 자동화를 요청하면 Hermes Agent가 참여인원수와 추가사항을 확인하고, VPS에서 PMX TBM 자동입력 파이썬 코드를 실행하는 구조를 완성하는 것이 목적이었다.
텔레그램 TBM 요청 → Hermes 질문/답변 수집 → VPS 명령 실행 → Python/Selenium → PMX 로그인 → TBM 입력 → 사진 첨부 → 저장 → 최종 스크린샷 전송
2. 최종 성공 결과 요약
- VPS에서 PMX TBM 자동입력 직접 실행 성공.
- 텔레그램/Hermes를 통한 명령 실행 테스트 성공.
- 로그인 페이지 접속, 안내 팝업 확인 클릭, 로그인 실행, 조회, 행추가, 필드 입력, 사진 첨부, 저장 확인 팝업 처리, 최종 스크린샷 저장까지 완료.
- 성공본 gs_pmx_bot.py 백업 완료.
최종 실행 명령 | cd /root/pms && xvfb-run -a /root/pms/.venv/bin/python gs_pmx_bot.py 190 "101동 20F 바닥배관" |
Selenium 버전 | 4.44.0 |
Chrome 버전 | Google Chrome 148.0.7778.167 |
chromedriver 상태 | PATH에 없음 - Selenium Manager가 자동 선택 |
실행 방식 | headless 아님. xvfb-run -a 가상 디스플레이 사용 |
성공 백업 | gs_pmx_bot_WORKING_20260517_FINAL.py |
3. 최종 성공 로그 핵심 구간
2026-05-17 10:15:24 [INFO] 로그인 페이지 URL: https://www.gs-pmx.com/com/login
2026-05-17 10:15:29 [INFO] 로그인 안내 팝업 확인 중...
2026-05-17 10:15:33 [INFO] 팝업 요소 클릭: //*[normalize-space(text())='확인']
2026-05-17 10:15:43 [INFO] 로그인 input 확인 완료
2026-05-17 10:15:43 [INFO] 로그인 실행 완료
2026-05-17 10:15:52 [INFO] 버튼 클릭 완료: 조회
2026-05-17 10:15:57 [INFO] 버튼 클릭 완료: 행추가
2026-05-17 10:16:08 [INFO] 작업공종 입력 완료: 통신공사
2026-05-17 10:16:17 [INFO] 작성구분 입력 완료: 오전
2026-05-17 10:16:19 [INFO] 시작시간 입력 완료: 07 : 20
2026-05-17 10:16:20 [INFO] 참여인원수 입력 완료: 190
2026-05-17 10:16:20 [INFO] 추가사항 입력 완료: 101동 20F 바닥배관
2026-05-17 10:16:21 [INFO] 사진 3장 첨부 완료
2026-05-17 10:16:23 [INFO] 버튼 클릭 완료: 저장
2026-05-17 10:16:30 [INFO] 저장 확인 팝업 클릭 완료
2026-05-17 10:16:35 [INFO] 최종 스크린샷 저장: /tmp/tbm_final_k6rotux0.png
4. 주요 문제와 해결 과정
4.1 Ubuntu Python 패키지 설치 제한
문제: Ubuntu 24.04 계열에서 시스템 Python에 pip install을 직접 실행하자 externally-managed-environment 오류가 발생했다.
해결: /root/pms 안에 가상환경을 만들고, 해당 가상환경에 selenium, python-dotenv, requests를 설치했다.
cd /root/pms
python3 -m venv .venv
source .venv/bin/activate
pip install -U pip
pip install -U selenium python-dotenv requests
4.2 Chrome과 ChromeDriver 버전 불일치
문제: Chrome은 148 버전인데 PATH의 /usr/bin/chromedriver는 147 버전이라 SessionNotCreatedException이 발생했다.
해결: 기존 chromedriver 147을 백업 이름으로 변경하고, webdriver_manager를 제거했다. 이후 Selenium Manager가 현재 Chrome에 맞는 드라이버를 자동 선택하게 했다.
sudo mv /usr/bin/chromedriver /usr/bin/chromedriver.bak147
rm -rf ~/.cache/selenium
rm -rf ~/.wdm
4.3 PMX 로그인 화면 input 대기 실패
문제: PMX 로그인 페이지는 HTTP 200으로 접속되었지만, Selenium 본 코드에서는 input 태그가 잡히지 않는 문제가 반복됐다.
해결: 로그인 안내 팝업을 input 대기 전에 먼저 닫도록 close_login_popups(driver)를 적용했다. 또한 실패 시 debug_login_timeout.png와 HTML을 저장하도록 하여 화면 상태를 확인했다.
4.4 흰 화면 및 렌더링 문제
문제: debug_login_timeout.png가 흰 화면으로 저장되었다. 단독 테스트 코드에서는 정상 렌더링이 되었으나, 본 코드에서는 렌더링이 불안정했다.
해결: 자동화 우회 옵션을 제거하고 build_driver()를 단순화했다. 이후 매 실행마다 새 Chrome 프로필을 사용하도록 --user-data-dir 옵션을 추가했다.
def build_driver():
options = Options()
profile_dir = tempfile.mkdtemp(prefix="pmx_chrome_")
options.add_argument("--no-sandbox")
options.add_argument("--disable-dev-shm-usage")
options.add_argument("--disable-gpu")
options.add_argument("--window-size=1920,1080")
options.add_argument("--lang=ko-KR")
options.add_argument("--accept-lang=ko-KR,ko;q=0.9")
options.add_argument(f"--user-data-dir={profile_dir}")
driver = webdriver.Chrome(options=options)
return driver
5. 최종 운영 절차
5.1 VPS 직접 실행
cd /root/pms
source .venv/bin/activate
xvfb-run -a python gs_pmx_bot.py 190 "101동 20F 바닥배관"
5.2 Hermes에서 실행할 고정 명령
cd /root/pms && xvfb-run -a /root/pms/.venv/bin/python gs_pmx_bot.py {참여인원수} "{추가사항}"
5.3 텔레그램 대화 흐름
- 사용자: TBM
- Hermes: 참여인원수를 입력하세요.
- 사용자: 190
- Hermes: 추가사항을 입력하세요. 없으면 - 입력하세요.
- 사용자: 101동 20F 바닥배관
- Hermes: 최종 명령 실행 및 결과 안내
6. 텔레그램 테스트 결과 업데이트
최종적으로 텔레그램/Hermes에서 아래 명령을 실행하는 테스트가 성공했다. 이때 python과 python3의 차이를 검토했으며, Hermes 실행 명령에는 /root/pms/.venv/bin/python을 직접 지정하는 방식이 가장 안전한 것으로 정리했다.
cd /root/pms && xvfb-run -a /root/pms/.venv/bin/python gs_pmx_bot.py 190 "101동 20F 바닥배관"
주의: 텔레그램에 명령을 보낼 때 같은 명령을 두 번 이어 붙이지 말고 한 번만 전송해야 한다.
7. 백업 및 복구
cd /root/pms
cp gs_pmx_bot.py gs_pmx_bot_WORKING_20260517_FINAL.py
복구가 필요할 때는 아래 명령을 사용한다.
cd /root/pms
cp gs_pmx_bot_WORKING_20260517_FINAL.py gs_pmx_bot.py
8. 향후 주의사항
- 성공본 코드에는 불필요한 수정 금지.
- PMX 입력 필드가 바뀐 경우에만 해당 selector 함수만 최소 수정.
- Chrome이 자동 업데이트되면 chromedriver를 직접 설치하지 말고 Selenium Manager 구조를 유지.
- 실패 시 먼저 debug_login_timeout.png, debug_error.png, 터미널 로그를 확인.
- Hermes에는 코드를 수정하지 말고 명령만 실행하라는 지시를 명확히 줄 것.
9. 최종 결론
TBM 자동화는 VPS 직접 실행과 텔레그램/Hermes 실행 모두 성공했다. 최종 안정화의 핵심은 가상환경 사용, webdriver_manager 제거, Selenium Manager 사용, Chrome 옵션 최소화, Xvfb 가상 디스플레이 사용, 임시 Chrome 프로필 적용이었다.
이제 운영 단계에서는 Hermes가 참여인원수와 추가사항만 받아 고정 명령 형식으로 실행하면 된다.