MD-13 · 수량제한 요일 스케줄

수량제한 요일 스케줄 (요일별 수량 자동 배정)

히어로코드×센터별로 월~일 요일별 수량제한을 미리 예약해 두면, 각 공급사 운영요일에만 활성화되고 발주마감 시각 기준으로 자동 최신화된다. 매일 손으로 올리던 작업을 없앤다.

🟡 준비 필요 상품관리 요일 스케줄 자동화 공급사 권한 위임
➕ 기능 추가
무엇 — 히어로코드×센터별로 월~일 요일별 수량제한을 미리 예약해 두면, 각 공급사 운영요일에만 활성화되고 발주마감 시각 기준으로 자동 최신화된다. 매일 손으로 올리던 작업을 없앤다.📍 위치: 상품관리 › 공급사 상품 관리 › 수량제한 수정

핵심 결정

스케줄 기준
히어로코드 × 센터 × 요일별 수량 자동 배정 (예: 월~토 20/50/20/30/60/50)
활성 요일
공급사 운영요일(seller_weekly_delivery)에 해당하는 요일만 활성 — 비운영요일은 셋팅 무의미
최신화 시각
각 공급사 발주마감(seller_weekly_deadline) 시각 기준으로 다음 발주분 수량 리셋
공급사 권한
공급사에게도 수량제한 편집 권한 부여 → MD 공수↓ (가격 스케줄의 can_partner_change_price 패턴 재사용)
기존 화면
「수량제한 수정」은 개수만(현행 유지) — 요일 스케줄은 신규 탭으로 분리
01

화면 — 먼저 보기

이 티켓이 실제로 어떤 화면이 되는지 먼저 봅니다

지금은 엑셀/개별 업로드만 되고 예약이 불가해 매일 수동으로 수량을 올린다. 「수량제한 수정」은 개수만 바꿀 뿐 요일 스케줄이 없다 — 이 화면이 요일별 자동 배정을 담당한다.
현행 화면 · 실제 캡처
현행 「수량제한」 모달 — 요일 스케줄 추가
현행 「수량제한」 모달 — 요일 스케줄 추가
변경안 · 제안 화면
상품관리 › 공급사 상품 관리 › 수량제한 수정기능 추가
스케줄 상태 ▾🔍 히어로코드·상품명 검색요일 스케줄 일괄 설정엑셀 업로드공급사 권한 관리
히어로코드상품명센터공급사스케줄 상태 🆕공급사 편집 🆕
HP0012345깐마늘 1kg성동광진늘품205020306050적용중허용
HP0023881대파 500g성동광진대상40404040적용중(운영요일만)불가
HP0044120양파 15kg남부청과직송1001001001001000미설정허용

▲ 요일 스케줄 목록 — 바뀌는 컬럼은 🆕 로 표시(예시 데이터)

1
목록 진입 — 공급사 상품 관리 › 수량제한 수정에서 [요일 스케줄] 탭 진입. 히어로코드별로 월~일 배정 수량과 스케줄 상태가 한눈에 보인다.
2
요일 스케줄 설정 — 행 또는 일괄 선택 후 모달에서 월~일 수량을 입력. 공급사 운영요일이 아닌 요일 셀은 비활성(회색)으로 입력 불가.
3
운영요일 연동 검증 — 저장 시 seller_weekly_delivery로 운영요일을 검증하고, 비운영요일 값은 is_active=false로 무시. 발주마감 시각(seller_weekly_deadline) 최신 여부를 안내.
4
자동 최신화 실행 — 매 요일 발주마감 시각에 배치가 그날 qty_limit을 seller_product_center_limit.limit_count로 반영. 실패 시 재시도 후 MD 알림(가정).
5
공급사 권한 위임 — [공급사 권한 관리]에서 공급사별 편집 허용 토글. 허용된 공급사는 자기 상품 스케줄만 직접 수정해 MD 공수를 줄인다.
02

정책 / 정의

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

용어 정의
용어정의
수량제한히어로코드×센터 단위로 하루 판매 가능한 최대 수량. 현재는 seller_product_center_limit.limit_count에 단일 값으로만 저장(요일 개념 없음).
요일 스케줄월~일 각 요일에 배정할 수량제한을 미리 저장해 두는 예약표. 발주마감 시각에 그 요일 값으로 자동 갱신.
공급사 운영요일공급사가 발주를 받는 요일(seller_weekly_delivery). 운영요일에 해당하는 요일 셀만 스케줄 입력이 활성화된다.
발주마감요일별 발주 마감 시각(seller_weekly_deadline, HH:MM). 이 시각을 리셋 트리거로 사용.
히어로코드상품 식별 표준키(hero_product_code). 수량제한·스케줄의 기준 키.
공급사매입처(seller). 히어로코드는 seller_product를 통해 공급사에 매핑된다.
0 허용특정 요일 수량을 0으로 두어 그 요일 판매를 중지하는 옵션(정책 확정 전 가정).
정책 (규칙)
#규칙비고
1요일별 수량은 히어로코드×센터 기준으로 저장한다기존 seller_product_center_limit(PK: hero+center)와 동일 키 체계 — 신규 스케줄 테이블에 day_of_week 축만 추가.
2공급사 운영요일에 해당하는 요일 셀만 입력 활성화, 비운영요일 값은 무시한다티켓 확정 — '안 하는 요일 셋팅은 무의미'. seller_weekly_delivery의 요일 boolean으로 셀 활성/비활성 결정.
3최신화는 해당 요일의 발주마감 시각에 실행한다가정 — 마감 직후 다음 발주분 수량으로 갱신. seller_weekly_deadline의 요일별 HH:MM을 배치 트리거로 사용. 논의 필요.
4발주마감 리셋과 스케줄 갱신이 겹칠 때는 발주마감 처리를 우선한다가정 — 티켓의 '발주 마감 리셋과 겹칠 때 처리' 미결 항목. 순서 확정 필요.
5요일별 0 값은 해당 요일 판매중지로 간주한다가정(옵션) — 티켓의 '요일별 0 허용 여부' 미결. 0 입력을 허용할지/판매중지로 볼지 확정 필요.
6공휴일은 요일 스케줄을 그대로 적용한다(공휴일 예외표 미적용)가정 — 티켓의 '공휴일 처리' 미결. 별도 공휴일 캘린더 연동은 후속 논의.
7자동 실행 실패 시 N회 재시도 후 MD에게 알림가정 — 티켓의 '자동 실행 실패 재시도' 항목. 재시도 횟수·알림 채널 확정 필요.
8공급사 권한이 부여된 공급사는 자기 상품의 스케줄만 편집할 수 있다seller_price_schedule_manage.can_partner_change_price 패턴 재사용 — seller 단위 편집 권한 플래그.
9기존 「수량제한 수정」은 개수(limit_count)만 수정하고 스케줄은 다루지 않는다티켓 확정 — 현행 화면 유지, 요일 스케줄은 신규 탭으로 분리하여 혼동 방지.
03

ERD

데이터 구조 · 관계 · DDL

seller_product_qty_schedule 신규
hero_product_codePK varchar(20)
center_codePK varchar(20)
day_of_weekPK smallint
qty_limitinteger
is_activeboolean
updated_byvarchar(20)
updated_attimestamp
신규 — 히어로코드×센터×요일별 수량제한 예약표. 요일 1축을 추가한 것 외 키 체계는 기존 center_limit과 동일.
seller_product_center_limit WRITE
hero_product_codePK varchar(20)
center_codePK varchar(20)
limit_countinteger
created_attimestamp
기존 수량제한 테이블. 발주마감 시각에 스케줄의 그날 값이 이 테이블의 limit_count로 반영된다(런타임 유효 수량).
seller_weekly_delivery READ
seller_idPK varchar(100)
mondayboolean
saturdayboolean
공급사 운영요일. 요일 boolean으로 스케줄 셀 활성/비활성을 결정한다.
seller_weekly_deadline READ
seller_idPK varchar(100)
mondayvarchar(5)
공급사 요일별 발주마감 시각(HH:MM). 스케줄 자동 최신화 배치의 트리거 시각.
seller_qty_schedule_permission 신규
seller_idPK varchar(20)
can_seller_change_qtyboolean
updated_byvarchar(20)
updated_attimestamp
신규 — 공급사 수량제한 편집 권한 플래그. 가격 스케줄의 can_partner_change_price 패턴을 수량제한에 적용.
seller_product_qty_schedule.hero_product_code = seller_product_center_limit.hero_product_code (동일 키, 요일축만 추가)
seller_product_qty_schedule.hero_product_code → seller_product.hero_product_code → seller_id (공급사 매핑)
seller_weekly_delivery.seller_id = seller_weekly_deadline.seller_id = seller_qty_schedule_permission.seller_id
운영요일 판정: seller_weekly_delivery[요일] = true 인 day_of_week만 is_active
-- MD-13 수량제한 요일 스케줄
-- 신규 1) 히어로코드×센터×요일별 수량제한 예약표
CREATE TABLE seller_product_qty_schedule (
    hero_product_code varchar(20)  NOT NULL,           -- 히어로코드
    center_code       varchar(20)  NOT NULL,           -- 센터코드(예: 성동광진)
    day_of_week       smallint     NOT NULL,           -- 요일 0=일 ~ 6=토 (seller_weekly_delivery 컬럼 순서 정렬)
    qty_limit         integer      NOT NULL DEFAULT 0, -- 해당 요일 배정 수량 (0 허용 여부는 정책)
    is_active         boolean      NOT NULL DEFAULT true, -- 공급사 운영요일 여부 스냅샷(비운영요일 false)
    updated_by        varchar(20)  NOT NULL,           -- 수정자(MD 또는 공급사 계정)
    updated_at        timestamp    NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 수정 시각
    CONSTRAINT seller_product_qty_schedule_pk
        PRIMARY KEY (hero_product_code, center_code, day_of_week),
    CONSTRAINT seller_product_qty_schedule_dow_chk
        CHECK (day_of_week BETWEEN 0 AND 6),
    CONSTRAINT seller_product_qty_schedule_qty_chk
        CHECK (qty_limit >= 0)
);
COMMENT ON TABLE seller_product_qty_schedule IS 'MD-13 히어로코드×센터×요일별 수량제한 예약 스케줄';

-- 신규 2) 공급사 수량제한 편집 권한 (가격 스케줄 can_partner_change_price 패턴 재사용)
CREATE TABLE seller_qty_schedule_permission (
    seller_id            varchar(20) NOT NULL,          -- 공급사 ID
    can_seller_change_qty boolean    NOT NULL DEFAULT false, -- 공급사 직접 편집 허용
    updated_by           varchar(20) NOT NULL,          -- 권한 부여자(MD)
    updated_at           timestamp   NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 수정 시각
    CONSTRAINT seller_qty_schedule_permission_pk PRIMARY KEY (seller_id)
);
COMMENT ON TABLE seller_qty_schedule_permission IS 'MD-13 공급사에게 수량제한 편집 권한 위임 플래그';

-- 조회 최적화: 발주마감 배치가 (센터, 요일)로 스캔
CREATE INDEX ix_qty_schedule_center_dow
    ON seller_product_qty_schedule (center_code, day_of_week);

-- 참고: 자동 최신화 배치는 seller_weekly_deadline[요일] 시각에
--       seller_product_qty_schedule.qty_limit → seller_product_center_limit.limit_count 로 반영(UPSERT).
04

화면 상세 — 세부 표·규칙

목록 외 품목표·모달·규칙 등 세부 화면

요일 스케줄 설정 모달
요일운영여부발주마감배정 수량
운영15:0020
미운영입력 비활성
운영13:0050
운영여부=seller_weekly_delivery, 발주마감=seller_weekly_deadline에서 자동 로드. 미운영 요일은 수량 입력칸 잠금. 하단 [엑셀 업로드]로 다건 일괄 입력 가능.
미결 처리 규칙표 (착수 전 확정 필요)
쟁점기본안(가정)상태
요일별 0 허용0=해당 요일 판매중지논의 필요
발주마감 리셋과 겹침마감 처리 우선논의 필요
공휴일 처리요일 스케줄 그대로 적용논의 필요
자동 실행 실패N회 재시도 후 MD 알림논의 필요
티켓 '처리 기준' 미결 항목. 착수 전 정책 확정용 — 확정 값으로 policies 갱신.