CHALLENGE
클라이언트가 필요로 한 이유
클라이언트는 거래처별 재고를 엑셀에서 확인하고 발주 품목을 선정한 뒤 이카운트 ERP에 거래처 코드, 품목 코드, 수량을 다시 입력하고 있었습니다. 거래처와 품목이 늘어날수록 수작업 시간이 증가하고 코드 오류가 다음 단계까지 이어졌습니다.
필요했던 것은 정해진 시간에 엑셀을 올리는 기능만이 아니라 발주 판단, 데이터 변환, ERP 전송, 실패 복구를 한 회차로 추적하는 시스템이었습니다. 일부 품목이 실패하더라도 전체 결과와 원인을 확인하고 안전하게 다시 처리할 수 있어야 했습니다.
유통·제조 고객사는 50개 이상의 거래처에 대한 발주를 엑셀과 이카운트(Ecount) ERP 수기 입력으로 처리하고 있었습니다. 구매 담당자 1명이 매일 거래처별 재고를 엑셀에서 확인하고, 발주 필요 품목을 선별한 뒤 ERP에 거래처 코드·품목 코드·수량·단가를 건건이 입력했습니다.
건당 평균 12분, 하루 25~30건 기준으로 매일 4시간 이상을 발주 업무에 소요
수기 발주의 핵심 문제
| 문제 | 영향 |
|---|---|
| 수기 입력 오류 | 품목 코드 오입력, 수량 착오, 거래처 혼동으로 주 15건 이상 오류 |
| 경험 의존 발주 | 거래처별 리드타임·최소 발주량을 담당자 기억에 의존, 긴급 누락·과잉 발주 반복 |
| 처리량 한계 | 주 300건 수준에서 정체, 거래처 추가가 물리적 한계에 봉착 |
| 재입력 비용 | 오류 발견 시 ERP 발주 취소 → 재입력에 추가 시간 소요 |
사업 확장에 따른 거래처 추가가 구매팀의 물리적 한계에 막히는 상황이었습니다.
클라이언트 요청사항과 기획 방향
| 클라이언트 요청 | 이렇게 기획한 이유 | 해결 방식 |
|---|---|---|
| 엑셀 발주 데이터를 ERP 형식으로 자동 변환 | 거래처·품목 코드와 숫자 형식이 맞지 않으면 수기 수정이 반복됨 | 입력 규칙과 코드 매핑을 저장해 업로드 단계에서 검증 |
| 재고 기준으로 발주 제안을 제공 | 담당자 기억만으로는 리드타임과 최소 수량을 일관되게 반영하기 어려움 | 현재 재고·안전재고·리드타임·최소 수량을 함께 계산 |
| 실패 건만 재처리 | 전체 회차를 다시 보내면 이미 등록된 발주가 중복될 수 있음 | 회차·행별 상태와 ERP 응답을 저장하고 실패 행만 재시도 |
SOLUTION
시온랩은 엑셀 데이터를 자동 파싱하여 이카운트 ERP API로 발주를 전송하고, 스케줄러 기반으로 정기 발주를 자동 실행하는 발주 자동화 시스템을 설계·구축했습니다.
시스템 구조
- 실시간 모니터링 대시보드 : 7일간 총 발주 건수(1,450건), 발주 성공률(98.2%), 실패 건수, 다음 실행 예정 시각을 한눈에 확인합니다. 요일별 트랜잭션 처리량 추이 차트로 발주 패턴을 파악하고, API 연결 상태·인증 토큰·디스크 공간 등 시스템 상태를 실시간으로 모니터링합니다.
보안 정책으로 확대가 제한됩니다
- 발주 데이터 구조화 (Tree View) : 거래처별 발주 데이터를 회사 → 부서 → 프로젝트 → 품목 단위의 계층적 트리 구조로 체계화합니다. 엑셀 입력 파일을 자동 파싱하여 각 품목의 코드·수량·금액이 ERP 규격에 맞게 변환되고, 검색바에서 제품명·부서명·제품코드로 즉시 필터링할 수 있습니다.
보안 정책으로 확대가 제한됩니다
- 시스템 로그 모니터링 : 발주 프로세스의 전체 실행 흐름을 INFO/DEBUG/WARNING/ERROR 레벨별로 실시간 추적합니다. API 인증 성공, 데이터 파싱 완료, 재고 부족 경고, 발주 실패(미존재 거래처 코드 등) 원인을 즉시 확인하여 빠르게 대응할 수 있습니다.
보안 정책으로 확대가 제한됩니다
- 자동화 스크립트 설정 : 웹 UI에서 이카운트 API 인증 정보(회사 코드·사용자 ID·API 키), 자동화 스케줄(실행 주기·실행 시간), 데이터 및 로깅 설정(입력 형식·로그 레벨·파일 경로)을 직접 관리합니다. 실패 시 자동 재시도(최대 3회, 지수 백오프 적용) 옵션도 설정 화면에서 활성화할 수 있습니다.
보안 정책으로 확대가 제한됩니다
- 재고 기반 자동 발주량 산정 : 거래처별 리드타임, 최소 발주 수량, 현재 재고 수준을 분석하여 적정 발주 시점과 수량을 자동 계산합니다. 담당자의 기억 의존 없이 데이터 기반 발주 의사결정을 지원합니다.
사이드바에 ERP 연동·데이터 구조·로그·설정 메뉴를 배치하여, 관리자가 별도 교육 없이 전체 자동화 프로세스를 관리할 수 있도록 구성했습니다.
BUILD
구축 방향과 데이터 처리 로직
입력 파일 원본, 변환된 발주 행, 전송 회차, ERP 응답을 분리했습니다. 코드 매핑과 수량 규칙을 통과한 행만 전송하고, 행마다 고유 키를 두어 재시도 시 이미 성공한 발주를 건드리지 않도록 구성했습니다.
| 구간 | 들어오는 데이터 | 판정·처리 기준 | 다음 상태 |
|---|---|---|---|
| 입력 검증 | 거래처 코드, 품목 코드, 재고, 수량 | 필수값·코드 매핑·숫자 형식 확인 | 전송 가능 또는 수정 필요 |
| 발주 계산 | 현재 재고, 안전재고, 리드타임, 최소 수량 | 예상 소진과 진행 중 발주 반영 | 제안 수량 확정 |
| ERP 전송 | 회차 ID, 행 고유값, 변환 데이터 | 인증·중복·응답 코드 확인 | 성공 또는 재시도 가능한 실패 |
VALIDATION
검증한 업무 범위
| 검증 구간 | 확인한 상황 | 완료 기준 |
|---|---|---|
| 인증 만료 | 전송 중 ERP 인증 오류 | 회차를 중단하고 인증 복구 후 미처리 행만 재개 |
| 코드 불일치 | 미등록 거래처·품목 | 해당 행만 실패로 분리되고 나머지는 정상 처리 |
| 재시도 | 일부 성공 후 같은 회차 재실행 | 성공 행은 중복 전송되지 않고 실패 행만 처리 |
비슷한 업무에 적용할 수 있는 부분
회계, 물류, 구매처럼 엑셀이나 외부 데이터를 ERP에 반복 등록하는 업무에 적용할 수 있습니다. 파일 변환보다 행별 검증, 고유 키, 부분 실패 복구가 운영 안정성을 결정합니다.
RESULT
| 지표 | Before | After | 개선율 |
|---|---|---|---|
| 발주 처리 시간 | 건당 12분 | 건당 45초 | 94% 절감 |
| 발주 성공률 | 수기 입력 기준 | 98.2% | 오류 96% 감소 |
| 주간 발주 처리량 | 300건 | 1,450건 | 4.8배 확대 |
| 담당자 업무 시간 | 하루 4시간 | 30분(모니터링만) | 88% 절감 |
※ 본 프로젝트는 고객사 실제 업무 요건을 바탕으로 설계한 결과물이며, 보안 정책에 따라 일부 화면만 공개했습니다.



