Files
wace_plm/ERP_SYNC_README.md
2026-02-04 18:37:26 +09:00

6.4 KiB

ERP API 데이터 동기화 배치 시스템

개요

이 시스템은 외부 ERP API로부터 거래처, 부서, 사원 정보를 자동으로 가져와 PLM 시스템의 데이터베이스에 동기화하는 배치 프로그램입니다.

주요 기능

1. 거래처 정보 동기화 (CustomerApiClient)

  • API 엔드포인트: /apiproxy/api16S11
  • 대상 테이블: client_mng
  • 동기화 데이터:
    • 거래처코드, 거래처명, 거래처약칭
    • 사업자등록번호, 대표자명
    • 업태, 종목
    • 주소, 연락처 정보
    • 사용여부

2. 부서 정보 동기화 (DepartmentApiClient)

  • API 엔드포인트: /apiproxy/api16S10
  • 대상 테이블: dept_info
  • 동기화 데이터:
    • 부서코드, 부서명
    • 회사코드, 부서레벨
    • 상위부서 정보
    • 정렬순서, 등록일/종료일

3. 사원 정보 동기화 (EmployeeApiClient)

  • API 엔드포인트: /apiproxy/api16S05
  • 대상 테이블: user_info
  • 동기화 데이터:
    • 사원번호, 사원코드, 사원명
    • 부서 정보
    • 직급, 직책
    • 연락처 (이메일, 휴대폰)
    • 재직구분, 입사일, 생년월일

배치 실행 스케줄

자동 실행

  • 실행 시간: 매일 새벽 00시 00분
  • Cron 표현식: 0 0 0 * * ?
  • 실행 메서드: BatchService.syncErpData()

수동 실행

필요시 BatchService.syncErpData() 메서드를 직접 호출하여 수동 실행 가능

설치 및 설정

1. 데이터베이스 설정

# PostgreSQL에 접속하여 테이블 생성 스크립트 실행
psql -U [사용자명] -d [데이터베이스명] -f database/create_erp_sync_tables.sql

2. 소스 파일 구조

wace_plm/
├── src/com/pms/
│   ├── api/
│   │   ├── CustomerApiClient.java      # 거래처 API 클라이언트
│   │   ├── DepartmentApiClient.java    # 부서 API 클라이언트
│   │   └── EmployeeApiClient.java      # 사원 API 클라이언트
│   ├── service/
│   │   └── BatchService.java           # 배치 서비스 (동기화 로직)
│   └── mapper/
│       └── batch.xml                    # MyBatis 매퍼 (SQL 쿼리)
└── database/
    └── create_erp_sync_tables.sql       # 테이블 생성 스크립트

3. MyBatis 설정

mybatisConf.xml에 batch 매퍼가 등록되어 있는지 확인:

<mapper resource="/com/pms/mapper/batch.xml" />

4. API 인증 정보

API 클라이언트에 다음 정보가 설정되어 있습니다:

  • Base URL: https://erp.rps-korea.com
  • 회사코드: 1000
  • Caller Name: API_gcmsAmaranth40578
  • Access Token: (소스 코드 참조)
  • Hash Key: (소스 코드 참조)

동작 방식

1. API 호출

각 API 클라이언트가 ERP 시스템에 HTTPS POST 요청을 전송합니다.

  • TLS 1.2 프로토콜 사용
  • HMacSHA256 기반 인증
  • JSON 형식 데이터 송수신

2. 데이터 파싱

API 응답 JSON을 파싱하여 Map 객체로 변환합니다.

  • JDK 1.7 호환 방식의 수동 JSON 파싱
  • 필요한 필드만 추출

3. 데이터베이스 저장

  • 기존 데이터 존재 여부 확인 (코드 기준)
  • 신규 데이터: INSERT
  • 기존 데이터: UPDATE
  • 트랜잭션 처리로 데이터 무결성 보장

4. 로깅

  • 각 단계별 진행 상황 콘솔 출력
  • 성공/실패 건수 집계
  • 오류 발생 시 상세 로그 출력

에러 처리

API 호출 실패

  • 연결 타임아웃: 30초
  • 리다이렉트 자동 처리
  • HTTP 에러 코드 확인 및 로깅

데이터 파싱 오류

  • JSON 파싱 실패 시 해당 레코드 스킵
  • 오류 로그 출력 후 다음 레코드 처리 계속

데이터베이스 오류

  • 트랜잭션 롤백
  • 전체 배치 실패 처리
  • 상세 오류 메시지 출력

모니터링

로그 확인

배치 실행 시 다음 정보가 출력됩니다:

====================================
ERP 데이터 동기화 배치 시작
====================================
거래처 정보 동기화 시작...
거래처 정보 동기화 완료 - 신규: X건, 수정: Y건
부서 정보 동기화 시작...
부서 정보 동기화 완료 - 신규: X건, 수정: Y건
사원 정보 동기화 시작...
사원 정보 동기화 완료 - 신규: X건, 수정: Y건
ERP 데이터 동기화 배치 완료

데이터 확인

-- 거래처 정보 확인
SELECT COUNT(*) FROM client_mng WHERE reg_user = 'batch_system';

-- 부서 정보 확인
SELECT COUNT(*) FROM dept_info WHERE reg_user = 'batch_system';

-- 사원 정보 확인
SELECT COUNT(*) FROM user_info WHERE reg_user = 'batch_system';

-- 최근 동기화 데이터 확인
SELECT * FROM client_mng WHERE reg_user = 'batch_system' 
ORDER BY reg_date DESC LIMIT 10;

주의사항

  1. 데이터 중복 방지

    • 거래처: tr_cd (거래처코드) 기준
    • 부서: dept_cd (부서코드) 기준
    • 사원: emp_cd (사원코드) 기준
  2. 네트워크 환경

    • ERP API 서버 접근 가능 여부 확인
    • 방화벽 설정 확인
    • SSL 인증서 검증 우회 (개발 환경)
  3. 성능 고려사항

    • 대량 데이터 처리 시 시간 소요 가능
    • 배치 실행 시간대 조정 가능 (현재: 새벽 00시)
    • 필요시 페이징 처리 추가 고려
  4. 데이터 정합성

    • 배치 실행 전 데이터 백업 권장
    • 테스트 환경에서 충분한 검증 후 운영 적용

트러블슈팅

API 호출 실패

원인: 네트워크 연결 문제, 인증 실패
해결: 
- 네트워크 연결 확인
- API 인증 정보 확인
- ERP 서버 상태 확인

JSON 파싱 오류

원인: API 응답 형식 변경
해결:
- API 응답 로그 확인
- 파싱 로직 수정

데이터베이스 오류

원인: 테이블 구조 불일치, 권한 문제
해결:
- 테이블 생성 스크립트 재실행
- 데이터베이스 권한 확인

향후 개선 사항

  1. 성능 최적화

    • 배치 INSERT/UPDATE 처리
    • 페이징 처리 추가
  2. 모니터링 강화

    • 배치 실행 이력 테이블 추가
    • 알림 기능 추가 (이메일, 슬랙 등)
  3. 에러 복구

    • 실패 레코드 재처리 로직
    • 부분 실패 시 이어서 처리
  4. 설정 외부화

    • API URL, 인증 정보를 설정 파일로 분리
    • 환경별 설정 관리

문의

기술 지원이 필요한 경우 개발팀에 문의하시기 바랍니다.