Skip to content

silvinggit-hue/AutoERP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AUTOERP v4.3 Developer README

1. 프로젝트 개요

AUTOERP는 Selenium 기반 ERP 자동화 프로그램으로, Excel 데이터를 입력으로 받아 서비스 접수 및 처리 과정을 자동화한다.


2. 아키텍처 개요

프로젝트는 UI / Core / Automation / Data 레이어로 분리된다.

ui/           → GUI (PySide6)
automation/   → ERP 제어 (Selenium)
core/         → Context / Logger / 공통 구조
data/         → Excel 처리 / 변환

3. 실행 흐름

프로그램 시작 시 전체 흐름은 다음과 같다.

Excel 로드 → settings / selectors 로드 → driver 생성
→ ERP 접속 → 로그인 → GUI 실행

핵심 진입점:

ui/app_gui.py → main()

4. 핵심 구성 요소

4.1 AppContext

모든 Phase에서 공유되는 실행 컨텍스트

포함 요소:

  • Selenium driver
  • settings.json
  • selectors.yml
  • logger

4.2 StepRunner

UI와 Phase 로직 사이의 중간 계층

역할:

  • Phase 단위 실행 제어
  • UI 이벤트와 자동화 로직 연결

주요 메서드:

  • login()
  • receipt_fill()
  • receipt_save_confirm()
  • process_fill()
  • process_save()
  • prepare_next_receipt()

4.3 GUIController

UI 이벤트 처리 및 상태 관리

역할:

  • 버튼 이벤트 바인딩
  • 현재 row 관리
  • AutoWorker 실행 제어

4.4 AutoWorker (QThread)

자동 실행 루프 담당

동작:

for row in range:
    접수 입력
    접수 저장
    처리 입력
    처리 저장
    다음 접수 준비

중단 처리:

  • stop_event 기반 체크포인트 종료

5. Phase 구조

각 Phase는 독립적인 역할을 가진다.

Phase 역할
Phase1 로그인
Phase2 서비스 접수
Phase3 서비스 처리

Phase 인터페이스

각 Phase는 다음 메서드를 따른다:

validate(context, row)
fill_only(context, row)
run(context, row)

6. 데이터 처리

6.1 Excel 로딩

load_excel()
  • pandas 기반 로딩
  • SerialNo / MacNo → string 강제

6.2 데이터 정규화

data/transform.py

주요 처리:

  • NaN → ""
  • 날짜 변환
  • 문자열 정리

6.3 필수값 검증

각 Phase의 validate()에서 수행

정책:

  • 필수값 누락 시 즉시 실패
  • 재시도 대상 아님

7. 설정 파일

7.1 settings.json

역할:

  • ERP URL
  • 로그인 정보
  • 로그 경로

7.2 selectors.yml

역할:

  • DOM selector 정의
  • iframe id
  • SpreadJS 입력 구조

원칙:

  • 코드 내 selector 하드코딩 금지
  • UI 변경 시 selectors.yml만 수정

8. ERP 자동화 구조

8.1 ERPClient

Selenium wrapper

주요 기능:

  • iframe 전환
  • element 클릭/입력
  • SpreadJS 입력
  • 저장(Ctrl+S)

8.2 SpreadJS 입력

ERP 테이블 입력 방식

접수:

canvas 클릭 → TAB 이동 입력

처리:

F2 → 입력 → Enter → Tab 반복

9. 실행 제어 정책

상태 머신

각 작업은 다음 상태를 가진다:

RUNNING / PAUSED / FAILED / DONE

Auto 실행 정책

  • start_idx ~ end_idx 범위 처리
  • 중단 요청 시 현재 단계 완료 후 종료

10. 에러 처리 정책

유형 처리
element not found 새로고침 후 1회 재시도
iframe 오류 2회 재시도
timeout 2회 재시도
validation 실패 즉시 실패

11. 로그 및 결과

로그

logs/YYYY-MM-DD.log

결과 파일

output/result_YYYYMMDD.csv
output/fail_YYYYMMDD.csv

행 결과 구조

  • row_index
  • phase
  • status
  • message
  • timestamp
  • receipt_no
  • url

12. 개발 규칙 (중요)

금지 사항

  • time.sleep() 사용 금지 → explicit wait 사용
  • selector 하드코딩 금지
  • input() 사용 금지
  • UI에서 자동화 로직 직접 호출 금지

필수 규칙

  • GUI / Automation 완전 분리
  • 모든 실패는 결과 객체에 기록
  • Phase 단위 독립 실행 가능해야 함

13. 빌드

PyInstaller 기반 exe 생성

예시:

pyinstaller --noconfirm --onefile --windowed app_gui.py

14. 유지보수 포인트

1. ERP UI 변경

→ selectors.yml 수정


2. 입력 필드 변경

→ Phase2 / Phase3 수정


3. 데이터 구조 변경

→ data/transform.py 수정


15. 확장 방향

  • Phase4 (인맥관리 자동화)
  • 실패 행 재처리 기능 강화
  • GUI 상태 머신 고도화
  • 로그 시각화

16. 요약

AUTOERP는 다음 구조로 동작한다:

Excel → Transform → Phase 실행 → ERP 입력 → 결과 기록

핵심 설계 원칙:

  • 구조 분리 (UI / Automation / Core / Data)
  • selector 외부화
  • 명시적 대기 기반 안정성 확보

About

ERP automation tool built with Python, Selenium, and PySide6

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages