WORKS / PORTFOLIO
AI SOFTWARE

병의원 전용 건강기능식품 온라인몰 구축

소비자 주문(B2C), 병의원 거래처 대량 발주(B2B), 관리자 운영을 하나의 주문 흐름 위에 설계하고 상품, 주문, 배송, 거래처, 프로모션까지 구현한 병의원 전용 온라인몰

병의원 전용 건강기능식품 온라인몰 구축

RESULT

소비자 주문, 거래처 발주, 관리자 운영을 하나의 주문 처리 흐름으로 통합 설계
구매자 유형별 규칙(단골 병의원 지정, 공급가 적용, 프로모션 반영)을 주문 처리 계층에 집중
주문 상태 6단계 전이와 배송중 전환 시 송장 필수 규칙 정의
상품, 주문, 거래처, 프로모션 등 16개 엔티티로 구성한 데이터 모델 설계

TECH STACK

Next.jsReactTypeScriptTailwind CSSDrizzle ORM

CHALLENGE

클라이언트가 필요로 한 이유

클라이언트는 일반 소비자 주문과 병의원 거래처 발주를 동시에 운영하고 있었습니다. 두 구매자는 같은 상품과 재고를 사용하지만 가격, 주문 자격, 승인 방식이 달라 별도 화면만 늘리면 재고와 주문 상태가 쉽게 어긋나는 구조였습니다.

필요했던 것은 온라인몰을 하나 더 만드는 일이 아니라, 구매자 유형을 먼저 판별하고 그 결과에 따라 가격과 주문 규칙이 일관되게 적용되는 운영 체계였습니다. 주문이 접수된 뒤에는 결제 확인부터 송장 등록까지 담당자가 같은 상태를 보며 처리할 수 있어야 했습니다.

병의원 전용 건강기능식품을 유통하는 고객사는 일반 소비자와 병의원 거래처라는 두 종류의 구매자를 동시에 상대합니다. 소비자는 단골 병의원을 지정해야 주문할 수 있고, 거래처는 공급가로 대량 발주합니다. 운영자는 두 흐름의 주문을 함께 받아 결제 확인, 배송 준비, 송장 등록, 거래처와 프로모션 관리까지 처리합니다.

소비자 주문과 거래처 발주가 같은 상품 재고를 공유하면서도 가격 정책과 주문 규칙이 달라, 운영 화면 하나로 두 흐름을 관리해야 하는 구조

이중 구매 구조의 핵심 문제

문제영향
구매자 유형별 규칙 차이소비자는 단골 병의원 지정이 필수이고 거래처는 공급가 적용이라, 규칙을 화면마다 따로 구현하면 누락이 발생
주문 상태 관리결제, 배송준비, 배송중, 완료 단계가 명확하지 않으면 송장 누락과 고객 문의가 반복
거래처 관리 부담병의원별 발주 실적과 소속 회원을 별도로 추적하지 않으면 정산과 영업 관리가 어려움
외부 연동 의존식품 품목 정보, 사업자 확인, 배송 추적 등 외부 조회가 많아 연동 실패 시 운영이 중단

설계 과제는 두 구매자 흐름을 분리하지 않고 하나의 주문 처리 위에 올리되, 유형별 규칙은 한 곳에서만 적용되도록 구조를 정하는 것이었습니다.

클라이언트 요청사항과 기획 방향

클라이언트 요청이렇게 기획한 이유해결 방식
소비자 주문과 거래처 발주를 한 곳에서 관리재고를 이중으로 관리하면 판매 가능 수량과 주문 금액이 달라질 수 있음공통 상품·재고·주문 구조 위에 구매자별 규칙만 분기
단골 병의원과 공급가를 자동 적용화면마다 가격과 주문 자격을 따로 확인하면 누락 가능성이 큼회원 역할과 소속 병의원을 주문 시작 단계에서 판별
배송 상태와 송장 누락을 함께 통제송장 없이 배송중으로 바뀌면 문의와 추적 업무가 늘어남상태 전이 조건에 택배사와 송장 번호를 필수값으로 설정

SOLUTION

시온랩은 소비자 몰, 거래처 발주, 관리자 운영의 세 영역을 하나의 주문 흐름 위에 구성하고, 구매자 유형별 규칙을 화면이 아니라 주문 처리 단계에서 강제하는 구조로 설계했습니다.

시스템 구조

소비자와 거래처는 서로 다른 화면을 쓰지만, 주문은 같은 처리 단계를 지나 같은 재고와 같은 관리자 화면에 도달합니다. 규칙이 한 곳에 있으므로 화면이 늘어나도 규칙은 늘어나지 않습니다.

흐름 1: 소비자 주문

소비자 주문은 단골 병의원 확인이 먼저이고, 프로모션 반영과 결제가 그 뒤를 따릅니다.

흐름 2: 거래처 발주와 관리자 배송 처리

거래처는 공급가 기준 발주서에서 수량만 입력하고, 관리자는 상태를 단계별로 전환합니다. 배송중 전환에는 택배사와 송장 번호가 반드시 필요합니다.

데이터 구조

주문 흐름을 결정하는 핵심 엔티티와 관계입니다. 소비자와 거래처가 같은 상품, 재고, 주문을 공유하고, 구매자 유형은 회원과 주문에 각각 표시합니다.

  • 구매자 유형은 회원과 주문 양쪽에 기록: 회원에는 역할(소비자, 거래처 담당자, 관리자)과 소속 병의원을, 주문에는 소비자 주문인지 거래처 발주인지를 남겨 집계와 권한 판단을 분리했습니다.
  • 가격과 재고는 상품 옵션 단위: 정가, 공급가, 재고를 옵션마다 두고 대표값만 상품에 반영해 옵션이 늘어도 주문 계산 방식이 바뀌지 않습니다.
  • 주문 품목은 주문 시점 스냅샷: 이후 가격이나 프로모션이 바뀌어도 과거 주문의 금액이 변하지 않습니다.
  • 거래처 발주 승인 확장 여지: 거래처 담당자 구분(원장, 직원)과 1건당 발주 한도, 승인 상태를 데이터 모델에 미리 두어 직원 요청과 원장 승인 절차를 추가할 수 있게 했습니다.

구매자별 규칙이 운영자의 기억에 의존하지 않도록 주문 처리 계층에서 일관되게 적용하고, 화면은 그 결과만 보여주는 방향으로 설계했습니다.


BUILD

구축 방향과 데이터 처리 로직

구매자, 상품 옵션, 장바구니, 주문, 배송 상태를 하나의 처리 흐름으로 연결했습니다. 가격은 주문 시점 값으로 고정하고, 재고와 프로모션은 주문 생성 단계에서 함께 판정해 이후 상품 정보가 바뀌어도 과거 주문 금액이 달라지지 않도록 했습니다.

구간들어오는 데이터판정·처리 기준다음 상태
구매자 판별회원 역할, 소속 병의원소비자·거래처와 주문 자격 확인일반가 또는 공급가 적용
주문 생성장바구니, 옵션 재고, 프로모션가격 스냅샷과 판매 가능 수량 검증주문 생성과 재고 반영
배송 처리결제 상태, 택배사, 송장 번호필수 정보가 있어야 배송중 전환배송 이력과 감사 기록 저장

VALIDATION

검증한 업무 범위

검증 구간확인한 상황완료 기준
소비자 주문단골 병의원 미지정과 정상 주문미지정 주문은 차단되고 정상 주문만 생성
거래처 발주공급가, 다수 품목, 재고 부족합산 금액과 재고 판정이 동일한 주문 규칙을 사용
배송 상태송장 누락과 정상 등록누락 시 전환이 막히고 등록 후 이력이 남음

비슷한 업무에 적용할 수 있는 부분

소비자 판매와 거래처 공급을 함께 운영하는 식품, 의료소모품, 프랜차이즈 물류 업무에 같은 구조를 적용할 수 있습니다. 핵심은 화면을 둘로 나누는 것이 아니라 가격·재고·승인 규칙의 기준점을 주문 처리 단계에 두는 것입니다.


RESULT

업무기존 방식설계 결과
소비자 주문단골 병의원 규칙을 운영자가 확인병의원 미지정 시 주문 차단, 프로모션 자동 반영
거래처 발주발주서를 별도 양식으로 접수공급가 기준 발주서, 실시간 합산, 재고 차감
주문·배송 처리상태와 송장을 수기로 관리6단계 상태 전이, 배송중 전환 시 송장 필수
운영 관리상품, 회원, 거래처를 개별 관리통합 대시보드와 관리 화면, 관리자 조작 감사 로그

※ 본 프로젝트는 고객사 실제 업무 요건을 바탕으로 설계한 결과물이며, 보안 정책에 따라 일부 화면만 공개했습니다.

문의하기