🆕 신규 메뉴 개발
무엇 — 신규오픈 지역 대응을 위해 공급사·상품 마진율을 권역 단위로 일괄 조정하고, 특정 상품을 MFC 권역(센터 묶음)별로 정액/정률 지정하는 가격 정책 화면📍 위치: 상품관리 › 가격 관리 › 권역별 가격
핵심 결정
기능 분리
신규오픈 마진율 일괄(범위 마진 조정) 과 권역별 타겟가격(상품 정액/정률 지정)은 별개 기능 — 둘 다 구현
권역 정의
권역 = 센터 묶음(신규). center_area는 동(洞) 단위라 재사용 불가 → center_region 신설
지정 방식
권역별 = 정액(고정가) 또는 정률(마진율 %) 선택
가드레일
지정가 ≥ 넷 공급가(net), 마진율 범위 검증(마이너스/과도 차단), 적용기간 겹침 차단
필드 재사용
일괄 마진은 seller_product.margin_flag/margin_rate·seller_center.margin_rate 재사용, 권역 지정가만 신규 테이블
01화면 — 먼저 보기
이 티켓이 실제로 어떤 화면이 되는지 먼저 봅니다
[결정 필요] ① 신규오픈은 '마진율 일괄'과 '권역별 지정가' 두 기능이 별개(둘 다 필요) ② 권역=센터 묶음의 신규 개념으로, 기존 center_area(동 단위)를 그대로 쓸 수 없음 — 권역 정의를 먼저 확정해야 착수 가능
현행 화면 · 실제 캡처현행 「가격수정」 모달 — 여기에 지역별 탭 추가
변경안 · 제안 화면
◆ OrderHero 어드민🔍 통합검색관리자 ▾
📊 대시보드
📦 상품관리
🧾 주문관리
🏬 재고관리
🎯 프로모션
💳 정산
⚙️ 설정
상품관리 › 가격 관리 › 권역별 가격신규 메뉴
권역 ▾상태 ▾🔍 히어로코드 / 상품명권역 지정가 등록신규오픈 마진율 일괄
▲ 권역별 타겟가격 목록 — 바뀌는 컬럼은 🆕 로 표시(예시 데이터)
1권역 정의(센터 묶음) — 신규오픈 대응 권역을 만들고 소속 센터를 매핑한다. center_area(동 단위)가 아닌 center를 묶어 권역을 신규 정의한다.
2신규오픈 마진율 일괄 — 권역 + (전체/공급사/카테고리) 범위를 선택해 마진율을 일괄 지정하거나 기존 마진율(지정가)을 재사용한다. seller_product.margin 필드를 갱신.
3권역별 타겟가격 등록 — 특정 상품(히어로코드)을 골라 권역별로 정액 또는 정률을 지정하고 적용기간을 입력한다.
4유효성 검증 — 지정가 ≥ 넷 공급가(원가 하한), 마진율 범위, 동일 권역×상품 적용기간 겹침을 검증하고 위반 시 저장을 차단한다.
5적용·노출 — 우선순위(회원별>권역>기본)에 따라 앱 판매가에 반영된다. 미지정 권역은 전사 기본가로 fallback.
6이력·모니터링 — 등록·수정·일괄배치 이력을 created_by/시각과 함께 기록하고 목록에서 상태(적용중/예약/차단)를 확인한다.
center_region 신규
region_idPK varchar(30)
region_namevarchar(100)
descriptionvarchar(255)
use_flagboolean
created_byvarchar(20)
created_attimestamp
권역(센터 묶음) 마스터. 신규 개념 — center_area(동 단위)와 별개.
center_region_mapping 신규
region_idFK varchar(30)
center_idFK varchar(20)
created_byvarchar(20)
created_attimestamp
권역 ↔ 센터 N:M 매핑. 어떤 센터가 어느 권역에 속하는지.
product_region_price 신규
idPK bigserial
region_idFK varchar(30)
hero_product_codeFK varchar(100)
price_typevarchar(10)
price_valuenumeric(12,3)
start_datedate
end_datedate
use_flagboolean
created_byvarchar(20)
updated_byvarchar(20)
권역별 상품 타겟가격(정액/정률) + 적용기간. 핵심 신규 테이블.
seller_product WRITE
hero_product_codePK varchar(100)
net_pricebigint
priceinteger
margin_flagboolean
margin_ratedouble precision
상품 마스터. 신규오픈 마진율 일괄은 이 테이블의 margin 필드를 갱신(신규 컬럼 불필요).
center READ
idPK varchar(20)
center_namevarchar(100)
center_codevarchar(20)
센터 마스터. 권역 매핑 시 센터 목록 소스.
center_region_mapping.region_id → center_region.region_id
center_region_mapping.center_id → center.id
product_region_price.region_id → center_region.region_id
product_region_price.hero_product_code → seller_product.hero_product_code
(참고) seller_center.margin_rate = 공급사×센터 마진 — 일괄 조정 시 함께 갱신 가능
-- 권역(센터 묶음) 마스터 : 신규 개념, center_area(동 단위)와 별개
CREATE TABLE center_region (
region_id varchar(30) PRIMARY KEY, -- 권역 식별자
region_name varchar(100) NOT NULL, -- 권역명(예: 성동광진권)
description varchar(255), -- 설명/신규오픈 메모
use_flag boolean NOT NULL DEFAULT true, -- 사용 여부
created_by varchar(20), -- 생성 관리자
created_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
);
-- 권역 ↔ 센터 N:M 매핑 (한 센터가 여러 권역에 소속 가능 — [가정])
CREATE TABLE center_region_mapping (
region_id varchar(30) NOT NULL REFERENCES center_region(region_id), -- 권역
center_id varchar(20) NOT NULL REFERENCES center(id), -- 센터
created_by varchar(20),
created_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (region_id, center_id)
);
-- 권역별 상품 타겟가격(정액/정률) + 적용기간
CREATE TABLE product_region_price (
id bigserial PRIMARY KEY,
region_id varchar(30) NOT NULL REFERENCES center_region(region_id), -- 권역
hero_product_code varchar(100) NOT NULL REFERENCES seller_product(hero_product_code), -- 히어로코드
price_type varchar(10) NOT NULL, -- FIXED(정액) / RATE(정률)
price_value numeric(12,3) NOT NULL, -- 정액=금액, 정률=마진율(%)
start_date date NOT NULL, -- 적용 시작
end_date date, -- 적용 종료(NULL=무기한)
use_flag boolean NOT NULL DEFAULT true,
created_by varchar(20),
created_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_by varchar(20),
updated_at timestamp,
CONSTRAINT chk_price_type CHECK (price_type IN ('FIXED','RATE'))
);
-- 동일 권역×상품 활성 지정가 조회/겹침검증 인덱스
CREATE INDEX idx_prp_region_hero ON product_region_price (region_id, hero_product_code, use_flag);
-- [가정] 기간 겹침 차단은 애플리케이션 검증 또는 EXCLUDE 제약으로 보강
-- ALTER TABLE product_region_price ADD CONSTRAINT no_overlap
-- EXCLUDE USING gist (region_id WITH =, hero_product_code WITH =,
-- daterange(start_date, COALESCE(end_date,'infinity'::date)) WITH &&) WHERE (use_flag);
-- 신규오픈 마진율 일괄은 기존 컬럼 재사용(신규 컬럼 없음):
-- UPDATE seller_product SET margin_flag=true, margin_rate=:rate, updated_by=:admin
-- WHERE hero_product_code IN (:권역 소속 센터의 대상 상품);
04화면 상세 — 세부 표·규칙
목록 외 품목표·모달·규칙 등 세부 화면
권역 정의(센터 묶음) 모달
center 테이블에서 센터를 다중 선택해 권역을 구성. center_area(동)와 무관한 신규 묶음. [가정] 한 센터의 다중 권역 소속 허용.
신규오픈 마진율 일괄 지정 모달
권역·공급사·카테고리로 대상을 좁혀 seller_product.margin_rate를 일괄 세팅. '기존 재사용'은 값 미입력 시 현재 마진 유지. 마이너스/과도 마진은 승인 필요.