OrderHero · MD / 공급사

공급사 상품 등록 — 기획 문서 v2

공급사가 올린 상품을 시스템이 기존 그룹 상품과 자동 매칭·자동채움한 뒤, 사람은 매칭 실패분(후보군·신규·오류)만 본다. 공급사 화면과 MD 어드민은 권한으로 자동 분기되는 별개 화면.

v2 · 회의(음성) 9개 피드백 반영 · 실제 엑셀 양식(상품 등록 양식_필수,선택_260901.xlsx) 실측 반영 · 개발DB 스키마 실측 없음(요구사항 기반)

  1. 개요 · 배경
  2. 사용자 · 역할 · 화면 분리
  3. 공급사 포털 — 내 상품 리스트
  4. 핵심 정책 · 매칭 자동채움
  5. 실제 엑셀 양식(필수·선택)
  6. 상태 판정
  7. 화면 흐름 — 단건
  8. 화면 흐름 — 엑셀 · 성능
  9. 정책 · 예외
  10. v13 → v2 변경점
  11. 미정 항목
  12. 오픈 이슈

0. 개요 · 배경 — 왜 자동 매칭인가

문제의 뿌리는 "공급사는 자기 상품이 오더히어로에 이미 있는지 모른다"는 것.

공급사는 자기가 파는 상품을 오더히어로에 등록한다. 그런데 그 상품이 오더히어로에 이미 등록돼 판매 중인 상품인지, 완전히 새로운 상품인지 공급사는 알 수 없다. 같은 "요쿠르트 1000ml 냉장"을 A 공급사가 이미 올려놨어도, B 공급사는 그걸 모른 채 또 올린다.

그대로 두면 같은 상품이 중복 등록되거나, MD가 검수할 때마다 "이거 우리한테 이미 있는 거 아닌가?"를 수동으로 하나하나 찾아야 한다. 1,000줄짜리 엑셀을 올리면 그 수고가 1,000번 반복된다.

이 문서의 한 줄 목표 MD 검수 전에 시스템이 "이미 있는 상품"과 자동으로 매칭해준다. 사람(MD)은 시스템이 자신 없어 하는 것만 본다.

이번 v2가 겨냥하는 것

1. 사용자 · 역할 · 화면 분리

두 주체가 등장한다. 각자 하는 일과 보지 않아도 되는 일이 명확히 갈린다.

역할하는 일보지 않는 것
공급사
외부
상품 등록(단건 또는 엑셀 업로드). 상품명·용량·보관상태·단위·개수·단가 등 조건값 입력. 신규 상품일 때만 이미지 업로드. 자기 상품이 기존 상품인지 신규인지 판단할 필요 없음. 히어로코드·그룹코드 등 내부 식별자 몰라도 됨.
MD
내부
자동 매칭이 못 붙인 것 — 후보군(확인 필요)·신규·오류 — 만 검수. 후보군에서 맞는 것 선택, 신규 정보 보완, 최종 확정. 자동 매칭 건은 사후 수정만. 자동으로 붙은 건(후보 1개=완전일치)의 매칭 과정. 내부에서 확정되므로 목록에서 굳이 안 봐도 됨.
핵심 분업 "확실한 건 시스템이, 애매한 것만 사람이." — 자동 매칭 건은 MD 앞에 후보를 노출조차 하지 않는다. 어차피 MD가 나중에 수정할 수 있으므로 자동 확정으로 넘어가도 문제없다는 게 이번 결정.

1-2. 두 화면은 완전히 분리 — 권한 자동 분기 피드백 ①

공급사 포털어드민(MD)은 데모 토글이 아니라 별개의 화면이다. 로그인 계정의 권한(공급사 / MD)에 따라 자동으로 분기되며, 한 사용자가 두 화면을 오가지 않는다.

공급사 포털 (외부 로그인)
내 상품 리스트 · 단건/엑셀 등록 · 매칭 자동채움. 내부 식별자·MD 검수 화면은 안 보임.
어드민 · MD (내부 로그인)
후보군·신규·오류 검수 · 사후 수정. 상품 관리 메뉴 안에 위치.
프로토타입 표기 주의 프로토타입에서는 설명을 위해 두 화면을 상단 토글로 나란히 보여주지만, 실제로는 권한에 따라 화면이 자동으로 갈린다. 토글은 데모 장치일 뿐 기능 요구사항이 아니다.

1-3. 어드민 메뉴 위치 — 신규 메뉴 공존 피드백 ②③

어드민 상품 관리 아래에서, 기존 메뉴는 그대로 두고 이 프로젝트를 별도 메뉴로 추가한다. 둘은 공존한다(기존 메뉴 대체 아님).

메뉴경로상태
공급사 상품 관리 (기존)product/manage그대로 유지
신규 공급사 상품 관리 (이 프로젝트)신규 메뉴별도 추가 · 공존

1-4. 내부 식별자 — 공급사에게 숨김

MD만 다루는 자동/숨김 항목은 v2에서도 공급사에게 노출하지 않는다.

정정 net공급가는 공급사가 입력하는 값이다(숨김 아님). 실제 엑셀 양식에서도 필수 컬럼(§실제 양식). 반대로 유통사명은 자동채움에서 제외돼 공급사가 직접 적는다.

1·5. 공급사 포털 — 내 상품 리스트 피드백 ④⑤

공급사가 로그인하면 자기 공급사에 귀속된 모든 상품이 리스트로 먼저 뜬다(남의 상품은 안 보임).

리스트의 상품 노출·구분은 기존 공급사 상품 관리(product/manage)와 동일한 방식·컬럼을 따른다. 새 표 형식을 만들지 않고 이미 익숙한 리스트를 그대로 재사용한다.

리스트 컬럼 (기존 product/manage와 동일)

그룹 ID그룹핑 갯수상품 이미지그룹 상품명상품명 카테고리총 중량중량수량원산지 제조사브랜드특성등급크기색상
GRP-…3🖼감귤(10~11과),1kg,국산감귤 과일>감귤1KG1KG1국내산

컬럼 목록은 회의 피드백 ⑤에서 지정된 그대로. 예시 행 값은 실제 엑셀 양식 예시(§실제 양식)에서 가져온 설명용이며 개발DB 실측 아님.

이 리스트에서 등록으로 리스트 상단의 등록(단건 / 엑셀) 진입점에서 §4·§5 흐름으로 이어진다. 등록된 상품은 다시 이 리스트에 상태와 함께 쌓인다.

2. 핵심 정책 · 매칭 자동채움

v2의 뼈대. 매칭 · 자동채움 · 검색 · 양식/정규화 · 이미지 승계.

2-1. 매칭 = 조건값 기반 자동 매칭 중심 v2 핵심

매칭 키는 하나의 코드가 아니라 조건값 묶음이다.

매칭 키 상품명 + 용량/중량 + 보관상태 + 단위 ( + 개수 ) 등 조건값을 다 걸어서 후보를 뽑는다.

예시 — 1,000줄 업로드 시 대략: 자동 매칭 650 + 자동 통과 250 + 확인 필요(후보군) 나머지 + 신규(매칭 0) + 오류. (수치는 v13 예시 배분을 참고한 가정, 실측 아님)

2-2. 매칭되면 자동채움 — 공급사는 net·유통사명만 입력 v2 핵심 · 피드백 ⑦⑧

공급사가 등록할 때 필수값을 입력하거나 상단 검색창에 입력하면, 시스템이 동일 그룹 상품을 추천한다. 추천을 선택하면 대부분의 값이 그룹 상품에서 그대로 자동 채워진다 — 공급사가 다시 적을 필요가 없다.

매칭 시 입력 주체 공급사가 직접 적는 값은 net공급가 · 유통사 상품명 ( + 유통사 상품코드 ) 뿐. 나머지는 그룹 상품 값으로 자동 노출·채움.
구분필드출처
공급사 입력 직접 net공급가 · 유통사 상품명 · 유통사 상품코드 공급사만 아는 값(단가·자사 코드) — 자동채움 제외
자동 채움 그룹 상속 상품 이미지 · 그룹 상품명 · 상품명 · 카테고리(대/중/소분류) · 중량/총중량 · 보관상태 · 과세여부 · 원산지 · 브랜드 · 제조사 · 특성 · 등급 · 배송유형(MFC/허브) · 배송예정일수 · 주문 배수 단위 · 최소 주문 수량 등 선택한 그룹 상품에서 동일하게 상속 → 공급사 재입력 불필요

추천/매칭이 하나도 없으면 → 🔴 신규 상품으로 넘어가 전체 값을 직접 입력한다(§3·§4).

2-3. 검색 = 그룹(그룹코드) 기반

후보를 뽑는 검색은 상품 전체가 아니라 "그룹이 만들어지는 데이터"를 기준으로 한다.

넓게
"요쿠르트" 전체를 뒤진다 → 후보 수백 개
v2 · 그룹 기반
"요쿠르트 + 1000ml + 냉장" 그룹만 → 후보 소수

그룹 상품·그룹코드 중심으로 좁히면, 조건값 매칭과 자연스럽게 맞물려 후보가 1개(자동) 또는 소수(확인 필요)로 수렴한다.

2-4. 엑셀 업로드 — 양식 고정 · 정규화

왜 양식·단위를 고정하나 단위가 자유 입력이면 "1kg"·"1000g"·"1키로"가 다 다른 값으로 들어와 조건값 매칭이 깨진다. 양식에서 컬럼·단위를 고정해야 매칭·자동채움이 성립한다.

2-5. 이미지 자동 승계

2-6. 조건값 매칭 걸어보기 (예시)

공급사가 감귤 · 1KG · 냉장 · 국내산을 올렸다고 하자. 조건값을 순서대로 걸면:

거는 조건남는 후보(가정)판정
그룹 상품명 "감귤"수십 개
+ 보관 "냉장"여러 개
+ 중량 "1KG", 원산지 "국내산"2~3개🟡 확인 필요(후보군)
+ 규격 "10~11과" 완전 일치1개🟢 자동 매칭 → 자동채움

조건을 다 걸어 1개로 수렴하면 자동, 다 걸었는데도 여럿이면 확인 필요. 이 표의 후보 수는 설명용 가정이다.

실제 엑셀 양식 (필수 · 선택) 피드백 ⑥ · 실측

등록 양식은 상품 등록 양식_필수,선택_260901.xlsx의 실제 필드로 고정한다. 아래는 그 실측 목록 — 임의 필드가 아니다.

필수 필드

필드비고
유통사 상품코드 · 유통사 상품명공급사 직접 입력 자동채움 제외
net공급가공급사 직접 입력 예시 감귤 400 / 단감 700
그룹 상품명 · 상품명예: "감귤(10~11과),1kg,국산" / 감귤 — 매칭 키
과세여부면세 / 과세
보관상태냉장 / 냉동 / 상온 — 매칭 키
중량예: 1KG — 매칭 키
배송예정일수예: D-1
대분류 · 중분류 · 소분류카테고리
특성 · 원산지 · 브랜드 · 등급원산지 예: 국내산
주문 배수 단위주문 단위 규정
배송유형MFC / 허브 — 예시 감귤 MFC / 단감 허브
외부 적재가능 / 불가능
최소 주문 수량
라벨용 엑셀 다운로드 수량 단위

선택 필드

필드
제조사 · 수량 · 할인기준가 · 상품상세 · 원산지 세부사항 · 색상 · 상품단위 · 크기 · 수치 · 일시품절 · 장기품절 · 재고수량 · 수량제한 · 단위당 상품 개수 · 총량피킹
양식 ↔ 자동채움 연결 매칭이 붙으면 이 필드 중 net공급가·유통사 상품코드·유통사 상품명만 공급사가 채우고, 나머지(그룹 상품명·상품명·중량·보관·과세·카테고리·원산지·브랜드·등급·배송유형·배송예정일수·주문 배수·최소 주문 수량 등)는 그룹 상품에서 자동으로 상속된다(§2-2).
예시 행 (양식 실측) 그룹상품명 "감귤(10~11과),1kg,국산" / 상품명 감귤 / 면세 / 냉장 / 중량 1KG / net 400 / D-1 / 국내산 / 배송 MFC ·   "단감(4~5과),1kg,국산" / net 700 / 배송 허브

3. 상태 판정

업로드된 각 줄은 아래 넷 중 하나로 판정된다. 사람이 손대는 건 🟡🔴⛔ 셋뿐.

🟢
자동 매칭
후보 1개 = 완전 일치. 내부에서 자동 확정. MD는 사후 수정만. 목록에 후보 노출 안 함.
🟡
확인 필요
후보군 여러 개. 조건이 완벽히 안 맞아 여럿이 걸림. 사람이 후보 중 선택.
🔴
신규
매칭 0. 오더히어로에 없는 상품. 정보 직접 입력 + 이미지 업로드.
오류
단위 없음 · 필수 누락 · 그룹ID 오류 등. 등록 제외 → 재업로드.
상태조건후보 노출사람 개입다음 액션
🟢 자동 매칭조건값 완전 일치 · 후보 1개안 함(내부 확정)사후 수정만바로 확정
🟡 확인 필요덜한 필터로 후보군 여러 개후보 선택선택 후 확정
🔴 신규매칭 0건없음(매칭 대상 없음)정보 입력입력 후 확정
⛔ 오류단위·필수 누락, 그룹ID 오류양식 교정제외·재업로드

4. 화면 흐름 — 단건 등록

공급사가 상품 하나를 등록할 때. 초안 → (자동 매칭) → 확정.

  1. 공급사가 필수값 입력 · 또는 상단 검색
    그룹 상품명 · 중량 · 보관상태 · 원산지 등 필수값을 넣거나 상단 검색창에 입력한다.
  2. 시스템이 동일 그룹 상품 추천
    입력한 조건값을 다 걸어 그룹코드 데이터에서 후보(추천)를 뽑는다.
  3. 판정 분기
    🟢 후보 1개 자동 매칭 → net·유통사명만 공급사 입력, 나머지 값·이미지 자동채움(§2-2) → 내부 확정(후보 미노출)
    🟡 후보 여럿 "확인 필요" 화면 → 후보 중 하나 선택 → 선택 그룹으로 자동채움
    🔴 추천 0 신규 → 전체 정보 직접 입력 + 이미지 업로드
  4. 확정
    🟢은 자동, 🟡🔴은 선택/입력 완료 후. 이후 MD가 필요 시 수정.
v13과의 차이 v13은 이 단계에서 히어로코드 매칭으로 중복 확인을 하고 사용자가 결과를 봤다. v2는 후보 1개면 결과 화면 없이 그냥 붙여 확정으로 넘어간다.

5. 화면 흐름 — 엑셀 일괄 등록 · 성능

1,000줄 대량 업로드. 자동으로 최대한 처리하고, 나머지만 사람 앞에 남긴다.

  1. 엑셀 업로드
    단위 픽스된 우리 양식(용량 ML · 수량 EA 등). 이미지는 신규분만 별도/Zip.
  2. 단위 정규화 · 검증
    단위 변환/분기. 단위 없음·필수 누락·그룹ID 오류는 여기서 ⛔ 오류로 떨어진다.
  3. 줄별 자동 매칭
    조건값을 다 걸어 그룹 기반 후보 검색. 후보 1개 = 🟢 자동 확정(이미지 승계 포함).
  4. 결과 배분
    🟢 자동 매칭 · 자동 통과 — 사람 안 봄 / 🟡 확인 필요(후보군) · 🔴 신규 · ⛔ 오류 — 사람이 봄
  5. 사람 처리
    🟡 후보 선택 → 🔴 정보 입력/이미지 → ⛔ 양식 고쳐 재업로드.
  6. 확정
    처리 끝난 줄부터 확정. MD 사후 수정 가능.

대량 매칭 성능 — 동기 즉시 로딩 지양 🟠 검토 필요

100~1,000건을 업로드하면서 전 건을 기존 그룹과 즉시 비교 매칭하면 로딩이 오래 걸려 화면이 멈춘다. 동기 즉시 처리는 지양한다.

제안 — 서버 비동기 배치 매칭 업로드 직후에는 접수만 하고, 매칭은 서버에서 비동기 배치로 돌린다. 화면에는 진행률을 노출하고, 끝나면 완료 알림 → 결과(🟢🟡🔴⛔ 배분)는 나중에 확인. 사용자는 기다리며 붙잡히지 않는다.
🟠 미해결 우려 비동기 배치가 방향으로는 맞지만 구체 방식은 미정 — 배치 주기·부분 결과 노출·재시도·건수 상한이 정해지지 않았다. 성능 실측 없이 세운 제안이므로 착수 전 검증 필요(§8 M-5).

예시 배분 (1,000줄, 가정)

구분대략사람 개입
🟢 자동 매칭~650없음
🟢 자동 통과~250없음
🟡 확인 필요(후보군)나머지후보 선택
🔴 신규(매칭 0)일부정보 입력
⛔ 오류소수재업로드

수치는 v13 예시(자동통과 650 / 확인 250 / 신규 92 / 오류 8)를 참고한 가정이며 개발DB·운영 실측이 아니다.

6. 정책 · 예외

상황처리
단위 누락/불일치 (예: 중량 단위 없음)⛔ 오류로 제외 → 재업로드. 자동 매칭 대상에서 빠짐.
필수 항목 누락⛔ 오류. 확정 불가.
그룹ID 오류⛔ 오류. 그룹 매핑 실패.
기존 그룹에 매칭됐는데 공급사가 이미지 안 올림그룹 이미지 자동 승계 → 문제없음.
신규(매칭 0)인데 이미지 없음이미지 직접 업로드/Zip 필요. 없으면 보완 대상.
후보군 중 어느 것도 안 맞음🟡에서 "해당 없음" 선택 → 🔴 신규로 전환 정책 확정 필요
자동 매칭이 틀렸음(오매칭)MD 사후 수정으로 교정. 자동 확정을 되돌리는 UX 범위는 미정.

6·5. 구현 관점 · 데이터 가정 가정

스키마 실측 없이(개발DB 금지) 요구사항으로부터 세운 가정. 확정 아님 — 착수 전 검증 필요.

개념가정검증 포인트
그룹 / 그룹코드조건값(품명+용량+보관+단위)의 특정 조합이 하나의 그룹으로 묶이는 상위 개념이 이미 존재한다.그룹을 실제로 결정하는 컬럼이 무엇인지(M-1) — 화면에 안 보이는 값이 그룹을 가른다는 제보 있음.
조건값 필드상품명·용량/중량·보관상태·단위·개수가 각각 정규화된 컬럼으로 존재하거나 만들 수 있다.단위가 자유 입력인지 코드값인지. 자유 입력이면 정규화 계층 필요.
이미지 승계그룹 단위 대표 이미지가 있어 하위 상품이 참조로 물려받을 수 있다.이미지가 상품별인지 그룹별인지 — 그룹별이 아니면 승계 로직에 매핑 규칙 필요.
자동 확정매칭 결과를 사람 승인 없이 확정 상태로 쓸 수 있는 경로가 있다.확정=상태 플래그인지 별도 승인 레코드인지(M-3).
DB 실측 안 함 위 가정은 개발DB 조회 없이 요구사항·v13 문서로부터 추론한 것이다. 운영 스키마와 다를 수 있으므로 개발 착수 전 스키마 확인이 선행돼야 한다.

7. v13 → v2 변경점

회의(음성) 결론으로 무엇이 바뀌었나. 가장 큰 변화는 매칭을 앞단으로 뺀 것.

① 매칭 = 조건값 기반 자동 매칭 중심 가장 큰 변화
v13은 히어로코드로 중복을 확인하고 사용자가 결과를 봤다. v2는 상품명+중량+보관상태+원산지 등을 다 걸어 후보를 뽑고, 후보 1개면 노출 없이 자동 확정한다. 매칭되면 net·유통사명만 공급사가 입력하고 나머지는 그룹 상품에서 자동채움. 후보 여럿(확인 필요)일 때만 사람이 고른다.
② 검색을 그룹(그룹코드) 기반으로
상품 전체가 아니라 "그룹이 만들어지는 데이터"에서 검색. "요쿠르트 전체"가 아니라 "요쿠르트+1000ml+냉장" 그룹만. 후보가 소수로 수렴한다.
③ 엑셀 단위 정규화/분기 신설
양식에서 단위 픽스(용량 ML·수량 EA). 단위 변환/분기 기능. 단위 없거나 안 맞으면 ⛔로 걸러짐. 우리 양식이므로 기존 엑셀 수정 허용.
④ 이미지 자동 승계
그룹에 있는 상품이면 그룹 이미지를 자동으로 따옴(공급사 업로드 불필요). 그룹 선택 시 하위 자동 유입. 신규일 때만 직접 업로드/Zip.
⑤ 분기 줄이기 — 흐름 단순화
v13은 상태·분기가 많았다(자동통과/확인/신규/오류 + 검수 보류/반려/승인/수정후승인 등). v2는 자동 매칭을 앞단으로 빼 사람이 볼 것(후보군·신규·오류)만 남겼다.
⑥ 화면 완전 분리 · 신규 메뉴 공존
공급사 포털과 어드민(MD)은 데모 토글이 아니라 권한으로 자동 분기되는 별개 화면(§1-2). 어드민에서는 기존 product/manage를 두고 "신규 공급사 상품 관리"를 별도 메뉴로 추가·공존(§1-3). 공급사 로그인 시 자기 상품 리스트를 기존과 동일 컬럼으로 노출(§1-5).
v13 상태·검수 분기
자동통과 · 확인 · 신규 · 오류
+ 검수: 보류 · 반려 · 승인 · 수정 후 승인
v2 상태 (사람이 보는 것)
🟡 확인 필요 · 🔴 신규 · ⛔ 오류
🟢 자동 매칭은 사람 흐름 밖

8. 미정 항목 조사 필요

문서에 미정으로 남긴다. 확정 없이는 구현 스펙이 못 나오는 것들.

🟠 M-1. 그룹 생성 로직 같은 "시금치 1KG 냉장"인데 그룹이 나뉘는 케이스가 존재한다(화면에 안 보이는 값 차이 때문). 그룹을 묶는 기준 — 어떤 값이 같아야 한 그룹인가 — 을 정리해야 조건값 매칭·이미지 승계가 안정적으로 작동한다. 가장 먼저 조사할 항목.
🟠 M-2. 자동 매칭 임계 조건 몇 개가 일치하면 🟢 자동, 몇 개면 🟡 후보군인가? "완전 일치 = 후보 1개 = 자동"은 정했지만, "덜한 필터"의 경계(어떤 조건을 빼고 뽑는지)의 구체 수치·규칙은 미정.
🟠 M-3. 확정 시점 · MD 사후 수정 범위 "확정"이 정확히 언제 찍히는지(자동 확정 즉시 vs 배치 vs MD 승인), 그리고 MD가 사후에 고칠 수 있는 필드 범위(매칭 자체를 바꿀 수 있나? 조건값만?)가 미정.
🟠 M-4. "확인 필요 → 해당 없음" 전환 후보군 중 맞는 게 하나도 없을 때 🔴 신규로 넘기는 경로와 UX가 미정(§6 참조).
🟠 M-5. 엑셀 대량 매칭 성능 방식 100~1,000건 전 건 비교 매칭의 처리 방식이 미정. 방향은 서버 비동기 배치 + 진행률 + 완료 알림(동기 즉시 로딩 지양, §5)이나 배치 주기·부분 결과·재시도·건수 상한은 성능 실측 뒤 확정.
🟠 M-6. product_group 조건값 컬럼 실존 P0 · 선행 매칭·자동채움·그룹 판정이 모두 product_group(또는 상당 개념)에 조건값(중량·보관·규격·단위 등) 컬럼이 실제로 있느냐에 달려 있다. 개발DB 스키마 실측 없음 — 착수 전 가장 먼저 확인해야 할 P0.

9. 오픈 이슈

데이터 근거에 대한 주의 이 문서의 배분 수치(650/250/…)와 그룹 케이스는 요구사항·회의 예시 기반의 가정이며 운영 실측이 아니다. 임계·양식 확정 단계에서 운영 데이터로 재측정이 필요하다.
OrderHero · 공급사 상품 등록 기획 문서 v2 · 회의(음성) 기반 재설계 · 개발DB 실측 없음(요구사항 기반) · 확정 아닌 항목은 🟠 미정 / 결정필요 표기