AUTOERP는 Selenium 기반 ERP 자동화 프로그램으로, Excel 데이터를 입력으로 받아 서비스 접수 및 처리 과정을 자동화한다.
프로젝트는 UI / Core / Automation / Data 레이어로 분리된다.
ui/ → GUI (PySide6)
automation/ → ERP 제어 (Selenium)
core/ → Context / Logger / 공통 구조
data/ → Excel 처리 / 변환
프로그램 시작 시 전체 흐름은 다음과 같다.
Excel 로드 → settings / selectors 로드 → driver 생성
→ ERP 접속 → 로그인 → GUI 실행
핵심 진입점:
ui/app_gui.py → main()
모든 Phase에서 공유되는 실행 컨텍스트
포함 요소:
- Selenium driver
- settings.json
- selectors.yml
- logger
UI와 Phase 로직 사이의 중간 계층
역할:
- Phase 단위 실행 제어
- UI 이벤트와 자동화 로직 연결
주요 메서드:
- login()
- receipt_fill()
- receipt_save_confirm()
- process_fill()
- process_save()
- prepare_next_receipt()
UI 이벤트 처리 및 상태 관리
역할:
- 버튼 이벤트 바인딩
- 현재 row 관리
- AutoWorker 실행 제어
자동 실행 루프 담당
동작:
for row in range:
접수 입력
접수 저장
처리 입력
처리 저장
다음 접수 준비
중단 처리:
- stop_event 기반 체크포인트 종료
각 Phase는 독립적인 역할을 가진다.
| Phase | 역할 |
|---|---|
| Phase1 | 로그인 |
| Phase2 | 서비스 접수 |
| Phase3 | 서비스 처리 |
각 Phase는 다음 메서드를 따른다:
validate(context, row)
fill_only(context, row)
run(context, row)
load_excel()
- pandas 기반 로딩
- SerialNo / MacNo → string 강제
data/transform.py
주요 처리:
- NaN → ""
- 날짜 변환
- 문자열 정리
각 Phase의 validate()에서 수행
정책:
- 필수값 누락 시 즉시 실패
- 재시도 대상 아님
역할:
- ERP URL
- 로그인 정보
- 로그 경로
역할:
- DOM selector 정의
- iframe id
- SpreadJS 입력 구조
원칙:
- 코드 내 selector 하드코딩 금지
- UI 변경 시 selectors.yml만 수정
Selenium wrapper
주요 기능:
- iframe 전환
- element 클릭/입력
- SpreadJS 입력
- 저장(Ctrl+S)
ERP 테이블 입력 방식
접수:
canvas 클릭 → TAB 이동 입력
처리:
F2 → 입력 → Enter → Tab 반복
각 작업은 다음 상태를 가진다:
RUNNING / PAUSED / FAILED / DONE
- start_idx ~ end_idx 범위 처리
- 중단 요청 시 현재 단계 완료 후 종료
| 유형 | 처리 |
|---|---|
| element not found | 새로고침 후 1회 재시도 |
| iframe 오류 | 2회 재시도 |
| timeout | 2회 재시도 |
| validation 실패 | 즉시 실패 |
logs/YYYY-MM-DD.log
output/result_YYYYMMDD.csv
output/fail_YYYYMMDD.csv
- row_index
- phase
- status
- message
- timestamp
- receipt_no
- url
- time.sleep() 사용 금지 → explicit wait 사용
- selector 하드코딩 금지
- input() 사용 금지
- UI에서 자동화 로직 직접 호출 금지
- GUI / Automation 완전 분리
- 모든 실패는 결과 객체에 기록
- Phase 단위 독립 실행 가능해야 함
PyInstaller 기반 exe 생성
예시:
pyinstaller --noconfirm --onefile --windowed app_gui.py
→ selectors.yml 수정
→ Phase2 / Phase3 수정
→ data/transform.py 수정
- Phase4 (인맥관리 자동화)
- 실패 행 재처리 기능 강화
- GUI 상태 머신 고도화
- 로그 시각화
AUTOERP는 다음 구조로 동작한다:
Excel → Transform → Phase 실행 → ERP 입력 → 결과 기록
핵심 설계 원칙:
- 구조 분리 (UI / Automation / Core / Data)
- selector 외부화
- 명시적 대기 기반 안정성 확보