MD-03 · DC 작업 코드

DC 작업 코드 추가 (이지어드민 매핑)

MD-03 상세 기획 — 공급사 상품관리에 「DC 작업 코드」 매핑 컬럼 1개 추가 + 구글시트/엑셀 일괄 등록

🟡 착수 전 API 확인 히어로코드 ↔ 이지어드민 매핑 MD-14 선행 구글시트 기반

핵심 결정

핵심 결정
코드 이원화가 아니라 seller_product에 DC 작업 코드 컬럼 1개 추가(hero_product_code 마다 매핑)
매핑 관계
1개 DC 작업 코드 ↔ 여러 히어로코드(복제코드 때문에 1:N), UNIQUE 제약 걸지 않음
필수 여부
필수 아님 — 빈값 허용, DC 유통 상품만 채움
일괄 등록
구글시트/엑셀 링크 → 히어로코드 기준 매칭 UPDATE로 밀어넣기 → 늘품 VBA 불요
명칭 규칙
「DC 작업 코드」(허브 코드) 고정. 이지어드민 폐기·타 DC 대비해 '이지어드민 코드'로 쓰지 말 것
의존성
MD-14(이지어드민 재고 연동)의 선행. 착수 전 이지어드민 API가 코드 매핑까지 주는지 수요일(MD-14) 확인
01

정책 / 정의

용어를 못 박고, 규칙을 명확히

용어 정의
용어정의
히어로코드우리 어드민의 상품 식별 PK(seller_product.hero_product_code). 상품 관리의 기준 코드
DC 작업 코드(허브 코드)DC(늘품)가 DC 운영에 쓰는 작업 코드. 현재는 이지어드민 코드이나 늘품이 자체ERP로 전환하거나 다른 DC가 붙어도 재사용하도록 명칭을 중립화한 허브 코드
공급사 상품코드공급사가 자기 시스템에서 쓰는 상품코드(seller_id + product_code). 공급사별이라 우리 매칭 키로는 못 씀
복제코드같은 상품이 여러 히어로코드로 갈라진 것(parent_hero_code 포인터). 1 DC코드가 N 히어로에 매핑되는 원인
DC상품늘품 DC를 거쳐 유통되는 상품. DC 작업 코드를 채우는 대상. 비DC상품은 빈값
일괄 등록(밀어넣기)늘품이 관리하던 구글시트(엑셀)를 링크로 받아 히어로코드 기준으로 DC 작업 코드를 한 번에 UPDATE하는 기능. 늘품 VBA 수작업 대체
4대 관리코드우리가 관리하는 코드 총 4개 = 히어로코드 / 공급사 상품코드 / 복제코드 / DC 작업 코드
정책 (규칙)
#규칙비고
1DC 작업 코드는 seller_product에 컬럼 1개(dc_work_code)로만 추가한다. 별도 코드 체계·이원화가 아니다히어로코드마다 매핑값 하나. 신규 화면이 아니라 기존 공급사 상품관리 목록/상세에 칸 하나 추가
21개 DC 작업 코드는 여러 히어로코드에 매핑될 수 있다(1:N). dc_work_code에 UNIQUE 제약을 걸지 않는다복제코드 때문에 같은 DC코드가 여러 히어로 행에 반복됨. 조회 인덱스만 걸고 유일성은 강제하지 않음
3필수값이 아니다. 빈값(NULL)을 허용하며 DC 유통 상품만 채운다비DC상품은 영구 NULL. NOT NULL/기본값 강제 금지
4명칭은 「DC 작업 코드」(허브 코드)로 고정한다. '이지어드민 코드'라 부르지 않는다늘품이 자체ERP로 이지어드민을 폐기하면 명칭이 정크가 되고, 향후 다른 DC도 붙을 수 있어 공급자 중립 명칭 사용
5구글시트/엑셀 링크로 일괄 밀어넣기를 지원한다. 히어로코드 기준으로 매칭해 dc_work_code를 UPDATE한다미매칭(히어로코드 미존재) 행은 스킵하고 결과 리포트로 반환. 늘품 VBA 관리를 우리 어드민으로 흡수
6이지어드민 API가 코드 매핑까지 제공하면 수작업이 줄지만, 히어로코드와의 짝짓기는 우리 몫이라 매핑 기능 자체는 필요하다API 제공 여부는 MD-14 수요일 확인 항목에 포함. 제공되더라도 히어로코드 매칭은 우리가 수행
7본 티켓은 MD-14(이지어드민 재고 연동)의 선행이다DC 작업 코드가 있어야 늘품 재고를 히어로코드 재고에 연결 가능. MD-14 착수 전 완료 필요
02

ERD

데이터 구조 · 관계 · DDL

seller_product WRITE
hero_product_codePK varchar(100)
seller_idvarchar(100)
product_codevarchar(30)
parent_hero_codevarchar(20)
group_idinteger
product_nametext
dc_work_codevarchar(50)
delivery_typevarchar(30)
use_ynvarchar(1)
공급사 상품관리 테이블. dc_work_code 컬럼 1개 추가(변경). PK=히어로코드
dc_work_code_import 신규
import_idPK bigserial
source_typevarchar(20)
source_urltext
total_rowsinteger
matched_rowsinteger
skipped_rowsinteger
statusvarchar(20)
reg_idvarchar(100)
applied_ontimestamp
구글시트/엑셀 일괄 등록 배치 헤더(1 링크=1 배치)
dc_work_code_import_row 신규
import_idPK/FK bigint
row_noPK integer
hero_product_codevarchar(100)
dc_work_codevarchar(50)
resultvarchar(20)
messagetext
일괄 등록 행별 결과(감사/재현)
seller_product.hero_product_code = dc_work_code_import_row.hero_product_code (일괄 등록 시 히어로코드 기준 매칭 UPDATE)
dc_work_code_import_row.import_id = dc_work_code_import.import_id (배치-행 결과)
seller_product.parent_hero_code = seller_product.hero_product_code (복제코드 자기참조 — 1 DC코드가 대표+복제 히어로에 동시 매핑되는 근거)
-- ============================================================
-- MD-03 : 「DC 작업 코드」 매핑 (허브 코드)
-- 공급사 상품관리(seller_product)에 DC 작업 코드 컬럼 1개 추가
-- + 구글시트/엑셀 일괄 등록 이력 테이블
-- 대상 DBMS: PostgreSQL
-- ============================================================

-- ① [변경] 공급사 상품 테이블에 DC 작업 코드 컬럼 추가
-- 히어로코드마다 DC 작업 코드를 1개 매핑. 필수 아님(빈값 허용, DC상품만).
-- 1 DC ↔ N 히어로(복제코드 존재)라 UNIQUE 제약 걸지 않음.
ALTER TABLE public.seller_product
  ADD COLUMN dc_work_code varchar(50) DEFAULT NULL;   -- DC(늘품) 이지어드민/차기ERP의 작업 코드. 허브 코드, 명칭 중립. NULL=DC 미유통 상품

COMMENT ON COLUMN public.seller_product.dc_work_code IS
  'DC 작업 코드(허브 코드). 1개 DC코드가 여러 히어로코드에 매핑될 수 있음(1:N). NULL 허용=DC 미유통. "이지어드민 코드"로 부르지 말 것';

-- 역방향 조회(1 DC코드 -> N 히어로코드) 및 일괄 매칭 성능용 인덱스. UNIQUE 아님.
CREATE INDEX seller_product_dc_work_code_idx
  ON public.seller_product USING btree (dc_work_code)
  WHERE dc_work_code IS NOT NULL;

-- ② [신규] DC 작업 코드 일괄 등록 배치(구글시트/엑셀 링크 1회 업로드 = 1 배치)
CREATE TABLE public.dc_work_code_import (
  import_id     bigserial   PRIMARY KEY,               -- 배치 PK
  source_type   varchar(20) NOT NULL DEFAULT 'GSHEET', -- GSHEET | EXCEL
  source_url    text,                                  -- 구글시트 링크(엑셀 업로드 시 원본 파일명)
  total_rows    integer     NOT NULL DEFAULT 0,        -- 파싱 총 행수
  matched_rows  integer     NOT NULL DEFAULT 0,        -- 히어로코드 매칭 성공(UPDATE 반영)
  skipped_rows  integer     NOT NULL DEFAULT 0,        -- 미매칭/오류로 스킵
  status        varchar(20) NOT NULL DEFAULT 'PARSED', -- PARSED | PREVIEWED | APPLIED | FAILED
  reg_id        varchar(100),                          -- 실행 어드민 계정
  created_on    timestamp   NOT NULL DEFAULT now(),
  applied_on    timestamp                              -- 실제 반영(밀어넣기) 시각
);
COMMENT ON TABLE public.dc_work_code_import IS 'DC 작업 코드 구글시트/엑셀 일괄 등록 배치 헤더. 늘품 VBA 대체용';

-- ③ [신규] 일괄 등록 행 단위 결과(감사/재현용)
CREATE TABLE public.dc_work_code_import_row (
  import_id         bigint      NOT NULL REFERENCES public.dc_work_code_import(import_id), -- FK 배치
  row_no            integer     NOT NULL,                 -- 시트 원본 행번호
  hero_product_code varchar(100),                         -- 시트가 지정한 히어로코드(짝짓기 결과)
  dc_work_code      varchar(50),                          -- 밀어넣을 DC 작업 코드
  result            varchar(20) NOT NULL,                 -- APPLIED | NOT_FOUND | DUP_SKIP | INVALID
  message           text,                                 -- 스킵/오류 사유
  PRIMARY KEY (import_id, row_no)
);
COMMENT ON TABLE public.dc_work_code_import_row IS '일괄 등록 행별 처리 결과. NOT_FOUND=히어로코드 미존재';
03

스토리보드 — 매핑 흐름

히어로코드와 DC 작업 코드를 짝짓는 단계

1
공급사 상품관리 목록 진입 — 어드민 > 상품관리 > 공급사 상품관리 목록. 히어로코드/공급사/상품명/복제여부 기존 컬럼 우측에 「DC 작업 코드」 컬럼 1개가 추가되어 노출된다. DC상품이 아닌 행은 빈칸.
2
단건 DC 작업 코드 입력/수정 — 상품 행 인라인 또는 상세에서 DC 작업 코드를 직접 입력·수정. 필수 아님(빈값 저장 가능). 같은 DC코드를 여러 히어로 행에 넣어도 경고 없이 저장(1:N 허용).
3
일괄 등록 모달 열기 — 구글시트/엑셀 링크 입력 — 목록 상단 [DC 작업 코드 일괄 등록] 버튼 → 모달. 늘품이 관리하던 구글시트 링크를 붙여넣거나 엑셀 업로드. 링크가 헤더(히어로코드, DC 작업 코드)를 포함.
4
검증 프리뷰 — 파싱 후 총 N행 / 매칭 M행 / 스킵 K행 요약. 히어로코드 미존재(NOT_FOUND) 행은 사유와 함께 목록 표시. status=PREVIEWED.
5
밀어넣기 실행 — [반영] 클릭 시 매칭된 행만 seller_product.dc_work_code를 UPDATE. dc_work_code_import/_row에 결과 적재. status=APPLIED, applied_on 기록. 늘품 VBA 관리 종료.
6
MD-14 재고 연동 대비 확인 — DC 작업 코드가 채워진 상태 = 이지어드민 재고를 히어로코드 재고로 연결할 준비 완료. 이지어드민 API 코드 매핑 제공 여부는 MD-14 수요일 확인 항목.
04

화면 설계

실제 어드민에 어떤 컬럼·화면으로 노출되나

공급사 상품관리 목록 — DC 작업 코드 컬럼 추가(변경)
히어로코드공급사상품명복제여부DC 작업 코드(신규)사용여부
HERO-10231늘품국산 냉동 깐마늘 1kg대표DC-A0455Y
HERO-10232늘품국산 냉동 깐마늘 1kg(복제)복제DC-A0455Y
HERO-20988수마트대파 1단-(빈칸)Y
신규 컬럼은 목록 우측에 1칸. 복제 관계인 두 히어로가 같은 DC-A0455를 공유(1:N). 비DC상품은 빈칸. 인라인 편집 가능
DC 작업 코드 일괄 등록 모달(신규)
구분입력값
소스 유형구글시트 링크 / 엑셀 업로드
시트 링크https://docs.google.com/spreadsheets/...
프리뷰총 1,204행 / 매칭 1,180 / 스킵 24
스킵 상세행 57 HERO-99999 → 히어로코드 미존재(NOT_FOUND)
[프리뷰]로 검증 후 [반영]. 매칭된 행만 UPDATE. 결과는 dc_work_code_import/_row에 적재. 늘품 VBA 대체