CHALLENGE
클라이언트가 필요로 한 이유
클라이언트는 일반 소비자 주문과 병의원 거래처 발주를 동시에 운영하고 있었습니다. 두 구매자는 같은 상품과 재고를 사용하지만 가격, 주문 자격, 승인 방식이 달라 별도 화면만 늘리면 재고와 주문 상태가 쉽게 어긋나는 구조였습니다.
필요했던 것은 온라인몰을 하나 더 만드는 일이 아니라, 구매자 유형을 먼저 판별하고 그 결과에 따라 가격과 주문 규칙이 일관되게 적용되는 운영 체계였습니다. 주문이 접수된 뒤에는 결제 확인부터 송장 등록까지 담당자가 같은 상태를 보며 처리할 수 있어야 했습니다.
병의원 전용 건강기능식품을 유통하는 고객사는 일반 소비자와 병의원 거래처라는 두 종류의 구매자를 동시에 상대합니다. 소비자는 단골 병의원을 지정해야 주문할 수 있고, 거래처는 공급가로 대량 발주합니다. 운영자는 두 흐름의 주문을 함께 받아 결제 확인, 배송 준비, 송장 등록, 거래처와 프로모션 관리까지 처리합니다.
소비자 주문과 거래처 발주가 같은 상품 재고를 공유하면서도 가격 정책과 주문 규칙이 달라, 운영 화면 하나로 두 흐름을 관리해야 하는 구조
이중 구매 구조의 핵심 문제
| 문제 | 영향 |
|---|---|
| 구매자 유형별 규칙 차이 | 소비자는 단골 병의원 지정이 필수이고 거래처는 공급가 적용이라, 규칙을 화면마다 따로 구현하면 누락이 발생 |
| 주문 상태 관리 | 결제, 배송준비, 배송중, 완료 단계가 명확하지 않으면 송장 누락과 고객 문의가 반복 |
| 거래처 관리 부담 | 병의원별 발주 실적과 소속 회원을 별도로 추적하지 않으면 정산과 영업 관리가 어려움 |
| 외부 연동 의존 | 식품 품목 정보, 사업자 확인, 배송 추적 등 외부 조회가 많아 연동 실패 시 운영이 중단 |
설계 과제는 두 구매자 흐름을 분리하지 않고 하나의 주문 처리 위에 올리되, 유형별 규칙은 한 곳에서만 적용되도록 구조를 정하는 것이었습니다.
클라이언트 요청사항과 기획 방향
| 클라이언트 요청 | 이렇게 기획한 이유 | 해결 방식 |
|---|---|---|
| 소비자 주문과 거래처 발주를 한 곳에서 관리 | 재고를 이중으로 관리하면 판매 가능 수량과 주문 금액이 달라질 수 있음 | 공통 상품·재고·주문 구조 위에 구매자별 규칙만 분기 |
| 단골 병의원과 공급가를 자동 적용 | 화면마다 가격과 주문 자격을 따로 확인하면 누락 가능성이 큼 | 회원 역할과 소속 병의원을 주문 시작 단계에서 판별 |
| 배송 상태와 송장 누락을 함께 통제 | 송장 없이 배송중으로 바뀌면 문의와 추적 업무가 늘어남 | 상태 전이 조건에 택배사와 송장 번호를 필수값으로 설정 |
SOLUTION
시온랩은 소비자 몰, 거래처 발주, 관리자 운영의 세 영역을 하나의 주문 흐름 위에 구성하고, 구매자 유형별 규칙을 화면이 아니라 주문 처리 단계에서 강제하는 구조로 설계했습니다.
시스템 구조
소비자와 거래처는 서로 다른 화면을 쓰지만, 주문은 같은 처리 단계를 지나 같은 재고와 같은 관리자 화면에 도달합니다. 규칙이 한 곳에 있으므로 화면이 늘어나도 규칙은 늘어나지 않습니다.
흐름 1: 소비자 주문
소비자 주문은 단골 병의원 확인이 먼저이고, 프로모션 반영과 결제가 그 뒤를 따릅니다.
흐름 2: 거래처 발주와 관리자 배송 처리
거래처는 공급가 기준 발주서에서 수량만 입력하고, 관리자는 상태를 단계별로 전환합니다. 배송중 전환에는 택배사와 송장 번호가 반드시 필요합니다.
데이터 구조
주문 흐름을 결정하는 핵심 엔티티와 관계입니다. 소비자와 거래처가 같은 상품, 재고, 주문을 공유하고, 구매자 유형은 회원과 주문에 각각 표시합니다.
- 구매자 유형은 회원과 주문 양쪽에 기록: 회원에는 역할(소비자, 거래처 담당자, 관리자)과 소속 병의원을, 주문에는 소비자 주문인지 거래처 발주인지를 남겨 집계와 권한 판단을 분리했습니다.
- 가격과 재고는 상품 옵션 단위: 정가, 공급가, 재고를 옵션마다 두고 대표값만 상품에 반영해 옵션이 늘어도 주문 계산 방식이 바뀌지 않습니다.
- 주문 품목은 주문 시점 스냅샷: 이후 가격이나 프로모션이 바뀌어도 과거 주문의 금액이 변하지 않습니다.
- 거래처 발주 승인 확장 여지: 거래처 담당자 구분(원장, 직원)과 1건당 발주 한도, 승인 상태를 데이터 모델에 미리 두어 직원 요청과 원장 승인 절차를 추가할 수 있게 했습니다.
구매자별 규칙이 운영자의 기억에 의존하지 않도록 주문 처리 계층에서 일관되게 적용하고, 화면은 그 결과만 보여주는 방향으로 설계했습니다.
BUILD
구축 방향과 데이터 처리 로직
구매자, 상품 옵션, 장바구니, 주문, 배송 상태를 하나의 처리 흐름으로 연결했습니다. 가격은 주문 시점 값으로 고정하고, 재고와 프로모션은 주문 생성 단계에서 함께 판정해 이후 상품 정보가 바뀌어도 과거 주문 금액이 달라지지 않도록 했습니다.
| 구간 | 들어오는 데이터 | 판정·처리 기준 | 다음 상태 |
|---|---|---|---|
| 구매자 판별 | 회원 역할, 소속 병의원 | 소비자·거래처와 주문 자격 확인 | 일반가 또는 공급가 적용 |
| 주문 생성 | 장바구니, 옵션 재고, 프로모션 | 가격 스냅샷과 판매 가능 수량 검증 | 주문 생성과 재고 반영 |
| 배송 처리 | 결제 상태, 택배사, 송장 번호 | 필수 정보가 있어야 배송중 전환 | 배송 이력과 감사 기록 저장 |
VALIDATION
검증한 업무 범위
| 검증 구간 | 확인한 상황 | 완료 기준 |
|---|---|---|
| 소비자 주문 | 단골 병의원 미지정과 정상 주문 | 미지정 주문은 차단되고 정상 주문만 생성 |
| 거래처 발주 | 공급가, 다수 품목, 재고 부족 | 합산 금액과 재고 판정이 동일한 주문 규칙을 사용 |
| 배송 상태 | 송장 누락과 정상 등록 | 누락 시 전환이 막히고 등록 후 이력이 남음 |
비슷한 업무에 적용할 수 있는 부분
소비자 판매와 거래처 공급을 함께 운영하는 식품, 의료소모품, 프랜차이즈 물류 업무에 같은 구조를 적용할 수 있습니다. 핵심은 화면을 둘로 나누는 것이 아니라 가격·재고·승인 규칙의 기준점을 주문 처리 단계에 두는 것입니다.
RESULT
| 업무 | 기존 방식 | 설계 결과 |
|---|---|---|
| 소비자 주문 | 단골 병의원 규칙을 운영자가 확인 | 병의원 미지정 시 주문 차단, 프로모션 자동 반영 |
| 거래처 발주 | 발주서를 별도 양식으로 접수 | 공급가 기준 발주서, 실시간 합산, 재고 차감 |
| 주문·배송 처리 | 상태와 송장을 수기로 관리 | 6단계 상태 전이, 배송중 전환 시 송장 필수 |
| 운영 관리 | 상품, 회원, 거래처를 개별 관리 | 통합 대시보드와 관리 화면, 관리자 조작 감사 로그 |
※ 본 프로젝트는 고객사 실제 업무 요건을 바탕으로 설계한 결과물이며, 보안 정책에 따라 일부 화면만 공개했습니다.



