SELECTED WORK / ERP

DDM ERP

상품 옵션부터 주문, 출고, 미수금까지. 도매 현장의 거래 흐름을 담은 전용 ERP.

PHPMariaDBRocky Linux

외부 서비스는 별도 사이트에서 열리며, 일부 화면은 로그인 권한이 필요합니다.

인터페이스 구성 예시 · 실제 운영 화면 캡처 아님
PROJECT OVERVIEW

업무를 연결하는 핵심 기능

도매 업무의 거래처·품목·발주·입고·출고·반품·거래명세서·정산을 하나의 흐름으로 연결한 멀티테넌트 ERP입니다. 회사별 데이터 범위와 직원별 업무 권한을 서버에서 확인합니다.

컬러·사이즈별 상품·재고

주문·거래명세서·정산

문자·문서·원격지원 연계

HOW IT WORKS

어떤 기술로 구현했나요?

사용한 프로그램과 각 기술이 맡은 역할을 함께 소개합니다.

서버 · 운영 환경

Rocky Linux 9.8Apache 2.4PHP 8.4PHP-FPMOPcachesystemd

Apache가 웹 요청을 받아 PHP-FPM으로 전달하고, PHP가 업무 API와 관리자 화면을 처리합니다. OPcache로 PHP 실행 코드를 캐시하며, systemd로 문서 전송 작업자와 별도 서비스를 관리합니다. Linux 권한·TLS·로그·백업 및 복구 절차를 함께 운영하는 구조입니다.

업무 프로그램 · API

PHP서비스 계층PHP ViewJSON API

업무 규칙을 출고·거래·회사·인증 등의 서비스로 나누고, PHP View에서 화면을 구성합니다. JSON API가 거래처·품목·발주·출고·반품·명세서·정산 요청을 검증합니다. 부분 입고·부분 출고와 취소·반품의 상태 변화를 업무 이력에 연결합니다.

데이터베이스 · 업무 일관성

MariaDB 10.11InnoDBPDO트랜잭션행 잠금

공유 데이터베이스에서 인증된 회사 범위를 기준으로 데이터를 분리합니다. 입고·출고·재고 이동과 감사 기록을 트랜잭션으로 처리하고, 수량·금액·주문 잔량을 서버에서 검증합니다. 입금 배분·미수금·반품 차감·환불 기록을 정산 잔액으로 연결하고 중복 처리를 방지합니다.

관리자 화면 · 반응형 UI

HTMLCSSJavaScript ES ModulesjQuery 일부Bootstrap 일부

ES 모듈과 공통 CSS로 관리자 화면을 구성하고 비동기 요청으로 업무 데이터를 갱신합니다. PC·태블릿·모바일 레이아웃, 작업 탭과 개인 도구함 상태 유지, 인쇄 화면과 다국어 UI를 구현합니다.

거래명세서 · 파일 처리

Headless ChromePopplerPHP GD작업 대기열

거래명세서 HTML을 Headless Chrome으로 PDF 출력하고 Poppler로 이미지 변환한 뒤 PHP GD로 압축합니다. 작업 시간과 동시 작업 개수를 제한하고 문서 스냅샷과 발송 이력을 연결합니다. 문서 생성과 발송을 별도 작업자로 처리하는 구조를 갖췄습니다.

문자 · 이메일 · 외부 연결

ALIGO SMS/MMSPostfixDovecotRoundcubeGoogle Calendar OAuth

출고 알림과 거래명세서를 문자·이메일로 전송하고, 문자 공급자 접수와 실제 전달 결과를 구분합니다. Postfix·Dovecot·Roundcube로 전송과 웹메일 기능을 구성하며, Google Calendar OAuth 연결 코드를 통해 업무 캘린더 계정 연동을 지원합니다.

별도 서비스 · 업무 보조

Node.js 24MeshCentralPython OCRbwip-js

Node.js와 MeshCentral로 원격지원 연결을 구성하고 Python 작업자로 문서 OCR을 처리합니다. PHP 웹 요청과 별도 프로세스로 역할을 나누며, bwip-js는 업무 도구함의 바코드 생성에 사용합니다.

인증 · 권한 · 변경 관리

PHP 세션CSRFOTPArgon2id메뉴별 권한Git

비밀번호를 Argon2id로 해시하고 세션·OTP·로그인 시도 제한을 적용합니다. 회사·메뉴·조회/등록/수정/삭제 권한을 API에서도 검사합니다. 격리 데이터베이스 회귀 검사, 배포 체크섬 대조와 백업·복구 문서로 변경을 관리합니다.

기술 설명은 확인한 로컬 프로젝트 소스를 기준으로 작성했습니다. 운영 서버의 설정·버전과 공개 서비스의 배포 범위는 다를 수 있습니다.

우리 업무에도 이런 시스템이 필요하다면.

필요한 기능을 정리하는 단계부터 함께합니다.

맞춤 개발 상담
프로젝트 문의하기