프로젝트 배경
1) 문제점 - 180개 거래처가 제출하는 Excel 발주서의 헤더 행 위치·컬럼 순서가 모두 달라 고정 파서로는 대응 불가능 — 헤더 키워드 탐지 알고리즘과 Strategy 패턴을 결합하여 런타임 파서 교체 구조를 설계 - 중량 기반 금액 계산(W×D×H×비중÷1,000,000)에서 JavaScript 부동소수점 오차가 거래처별 단가 조건(최소 주문 중량, 스텝 단가)과 복합될 때 누적 오차 발생 — D
프로젝트 성과
거래처별 동적 파서 Registry 구조 설계
Strategy + Registry 패턴으로 12종 발주서 양식을 단일 파싱 엔진에서 처리, 신규 거래처 추가 시 기존 코드 변경 없이 JSON 규칙 파일 등록만으로 대응 가능한 확장 구조 구현
Decimal.js 중량·금액 이중 검증 파이프라인 구축
IEEE 754 부동소수점 오차를 Decimal.js로 제거하고 중량 계산 순수 함수에 단위 테스트 100% 커버리지 적용, 계산 결과 정합성을 위한 Zod 스키마 이중 검증 레이어 설계
14개 커스텀 명세서 Template Strategy 구현
용지 방향·헤더 위치·서명란 유무 등 거래처별 출력 규칙 차이를 Template Strategy 패턴으로 추상화, pdf-lib 단일 렌더러로 14종 양식을 처리하는 명세서 생성 엔진 설계
Web Worker 기반 배치 PDF 병합 처리 구조 적용
50건 이상 거래명세서 PDF 일괄 생성을 Web Worker로 위임하여 메인 스레드 블로킹 없는 배치 처리 구조 구현, 진행 상태를 postMessage로 UI에 실시간 전달하는 통신 설계
5단계 Wizard 컴포넌트 아키텍처 설계
신규 거래처 등록 마법사를 독립 React 컴포넌트 5단계 Stepper로 분리, Context API로 폼 상태를 공유하고 각 단계별 Zod 스키마 독립 검증으로 이전/다음 네비게이션 상태 안정성 확보
핵심 기능
진행 단계
발주서 양식 수집 및 셀 매핑 설계
2025.01.
180개 거래처 발주서 샘플 수집 후 컬럼 레이아웃 패턴 12종 분류, xlsx.js 기반 헤더 자동 탐지 알고리즘 초안 설계 및 JSON Schema 매핑 규칙 포맷 확정
프로젝트 상세
1) 포트폴리오 소개 철강·금속 소재 유통사의 거래처별 발주서 파싱 엔진과 거래명세서 자동 생성 워크플로우를 React + Node.js 기반 웹 플랫폼으로 구현. 180개 이상의 거래처가 각기 다른 양식으로 전달하는 발주서를 동적 셀 매핑 엔진으로 구조화 데이터로 변환하고, 단가·중량 기반 정밀 금액 계산 후 표준 거래명세서 PDF를 자동 생성·합본하는 파이프라인을 설계·구현. 2) 작업 범위 -







