🆕 신규 화면 개발
무엇 — 업로드 상품을 1차 자동 그룹핑해 후보를 제시하고, MD가 같음·수정·제외 3버튼으로 건별 확정한다. 임계 99.9% 신뢰 전까지 전건 사람 확인.📍 위치: 상품관리 › 공급사 상품 등록 › 업로드 검수
핵심 결정
확정 임계
99.9% 신뢰 전까지 전건 사람 확인 (review_decision=PENDING 기본)
매칭 엔진
「공급사 상품등록」 재사용 — 이름 75% → 이름+중량 86% (top1 자동확정 불가)
검수 워크플로우
같음=자동그룹 확정 / 수정=그룹코드 지정·신규 / 제외=제외분 엑셀 재다운
강제 수동
신선·수산은 신뢰도 무관 자동확정 금지 (auto_confirm_blocked)
후보 없음
매칭 0건 → 신규 등록 플로우로 분기 (NEW)
01화면 — 먼저 보기
이 티켓이 실제로 어떤 화면이 되는지 먼저 봅니다
자동 그룹핑은 후보 제시까지만 — 임계 99.9% 전까지 전건 사람 확인, 신선·수산은 신뢰도 무관 자동확정 금지.
현행 화면 · 실제 캡처현행 「상품관리」 목록 — 업로드 자동 그룹핑 대상
변경안 · 제안 화면
상품관리 › 공급사 상품 등록 › 업로드 검수신규 화면
검수상태 ▾카테고리 ▾🔍 상품명·히어로코드 검색일괄 확인(같음)제외분 엑셀 재다운
▲ 업로드 검수 현황 — 바뀌는 컬럼은 🆕 로 표시(예시 데이터)
1엑셀 업로드 — 공급사가 상품 엑셀을 업로드하면 seller_product_request 배치가 생성되고 행들이 seller_product_request_item으로 적재된다.
21차 자동 그룹핑 — 매칭 엔진(이름+중량+원산지+카테고리)이 행별 top-3 후보를 산출해 seller_product_match_candidate에 저장하고 top1 신뢰도를 item에 기록한다.
3검수 현황 화면 진입 — MD가 어드민 업로드 검수 화면에서 업로드 상품·후보·신뢰도를 나란히 본다. 신선·수산 행은 자동확정 금지 뱃지로 강조된다.
4건별 확인(같음) — 후보가 맞으면 '같음' 클릭 → 후보 그룹으로 자동 그룹핑 확정, hero_product_code·group_id 반영, 검수 이력 기록.
5수정 / 제외 분기 — 후보가 틀리면 '수정'으로 다른 그룹코드 지정·신규 생성, 또는 '제외'로 보류. 후보가 아예 없으면 신규 등록 플로우로 이동.
6제외분 엑셀 재다운 — 제외(EXCLUDE) 행만 모아 엑셀로 재다운로드해 공급사에 재작업 요청, 배치의 success/fail 카운트를 갱신한다.
seller_product_request READ
idPK bigint
seller_idvarchar(100)
statusvarchar(20)
total_countinteger
success_countinteger
fail_countinteger
업로드 배치 헤더(엑셀 1건). 상태·건수 집계 재사용, 신규 컬럼 불필요.
seller_product_request_item WRITE
idPK bigint
request_idFK bigint
group_idinteger
hero_product_codevarchar(100)
main_product_nametext
weightvarchar(255)
net_pricebigint
review_decisionvarchar(20)
top_match_scorenumeric(5,2)
auto_confirm_blockedboolean
reviewed_byvarchar(50)
업로드 스테이징 행. 검수 결정·신뢰도·강제수동 컬럼 ALTER 추가.
seller_product_match_candidate 신규
idPK bigserial
request_item_idFK bigint
rankinteger
group_idinteger
hero_product_codevarchar(100)
candidate_nametext
scorenumeric(5,2)
match_fieldvarchar(30)
행별 자동 매칭 후보 top-3. 검수 화면의 같음/수정 선택지 원천.
hero_code_mapping READ
hero_product_codePK varchar(100)
typePK varchar(30)
specific_codevarchar(100)
히어로코드↔관리코드 4종 매핑. 확정 시 코드 표시·검증에 참조.
seller_product READ
hero_product_codevarchar(100)
group_idinteger
parent_hero_codevarchar(20)
기존 운영 상품·그룹. 매칭 후보 산출의 카탈로그 소스.
seller_product_request 1 : N seller_product_request_item (request_id)
seller_product_request_item 1 : N seller_product_match_candidate (request_item_id, top-3)
seller_product_match_candidate.hero_product_code → seller_product.hero_product_code (추천 그룹 카탈로그)
seller_product_request_item.hero_product_code → hero_code_mapping.hero_product_code (확정 후 관리코드 4종 조회)
-- [MD-11] 업로드 자동 그룹핑 검수: 매칭 후보 저장 + 검수 결정 필드 추가
-- 기존 seller_product_request(업로드 배치) / seller_product_request_item(스테이징 행)은 재사용
-- 1) 신규: 업로드 행별 매칭 후보(top-3) 저장 테이블
CREATE TABLE seller_product_match_candidate (
id bigserial PRIMARY KEY, -- 후보 PK
request_item_id bigint NOT NULL, -- 업로드 스테이징 행 FK
rank integer NOT NULL, -- 후보 순위 1~3 (top-3 제시)
group_id integer, -- 추천 그룹ID(기존 그룹핑 대상)
hero_product_code varchar(100), -- 추천 히어로코드
candidate_name text, -- 후보 대표 상품명(비교 표시용)
weight varchar(255), -- 후보 중량(이름+중량 매칭 근거)
score numeric(5,2) NOT NULL, -- 유사도 신뢰도(%) 0.00~100.00
match_field varchar(30) NOT NULL DEFAULT 'NAME', -- 매칭근거: NAME/NAME_WEIGHT/FULL
created_at timestamp NOT NULL DEFAULT (CURRENT_TIMESTAMP AT TIME ZONE 'Asia/Seoul'),
CONSTRAINT fk_spmc_item FOREIGN KEY (request_item_id)
REFERENCES seller_product_request_item(id)
);
CREATE INDEX idx_spmc_item ON seller_product_match_candidate(request_item_id, rank);
COMMENT ON TABLE seller_product_match_candidate IS 'MD-11 업로드 행별 자동 매칭 후보(top-3). 검수 화면에서 같음/수정 선택지로 제시';
-- 2) 변경: 스테이징 행에 검수 결정/신뢰도/강제수동 플래그 추가
ALTER TABLE seller_product_request_item
ADD COLUMN review_decision varchar(20) NOT NULL DEFAULT 'PENDING', -- PENDING/SAME/EDIT/EXCLUDE/NEW
ADD COLUMN top_match_score numeric(5,2), -- 1순위 후보 신뢰도(%) 정렬·자동확정 판정용
ADD COLUMN auto_confirm_blocked boolean NOT NULL DEFAULT false, -- 신선·수산 등 자동확정 금지(강제 수동검수)
ADD COLUMN reviewed_by varchar(50), -- 검수 담당 MD
ADD COLUMN reviewed_at timestamp; -- 검수 완료 시각
COMMENT ON COLUMN seller_product_request_item.review_decision IS '건별 검수 결정: SAME=자동그룹확정, EDIT=그룹코드지정/신규, EXCLUDE=제외분엑셀재다운, NEW=후보없어 신규등록';
COMMENT ON COLUMN seller_product_request_item.auto_confirm_blocked IS '신선·수산 카테고리는 신뢰도 무관 자동확정 금지(가격비교 오염 방지)';
04화면 상세 — 세부 표·규칙
목록 외 품목표·모달·규칙 등 세부 화면
다름 → 수정 모달 (그룹코드 지정 / 신규)
수정 결정 시 top-3 중 선택하거나 히어로코드 직접 지정, 또는 신규 그룹 생성. 확정 시 관리코드 4종(hero_code_mapping) 연동.
매칭 신뢰도·자동확정 규칙표
가정: 임계 99.9% 도달 카테고리만 단계적 자동확정 개방. 신선·수산은 예외 없이 수동(가격비교 오염 리스크).