🆕 신규 화면 개발
무엇 — 동일 휴무 패턴 공급사를 다중 선택해 한 번에 등록하고, 전체 공급사 휴무를 통합 캘린더로 한눈에 보는 화면. 개별 150+ 공급사 세팅의 시간·실수를 줄인다.📍 위치: 공급사 관리 › 휴무일 관리
핵심 결정
핵심 갭
개별 세팅은 이미 있음 → 다중 공급사 일괄 등록 + 통합 캘린더 뷰만 신설
휴무 2속성
발주휴무(발주 마감/제외) · 배송 가능·불가를 독립 저장 (예: 7/18 발주휴무+배송가능)
고정 vs 게릴라 분리
주 고정휴무=seller_order_close(요일 반복) / 월별 게릴라성=seller_order_close_custom(단일일자)
재사용/신규
기존 4개 테이블 READ/WRITE + 신규는 seller_holiday_bulk_log 1개·게릴라 테이블 컬럼 추가
결정 대기
공휴일 출처 — 수동 입력 vs 공공API 자동 동기화 (MANUAL/HOLIDAY 플래그로 스키마는 선반영)
01화면 — 먼저 보기
이 티켓이 실제로 어떤 화면이 되는지 먼저 봅니다
공급사별 발주마감·배송요일·월간 휴무는 이미 partnerInfo/delivery에 개별 존재 — 이 화면은 다중 공급사 일괄 등록 + 통합 뷰만 신설. 미결: 공휴일 출처(자동/수동) 결정 필요.
신규 화면 · 제안
◆ OrderHero 어드민🔍 통합검색관리자 ▾
📊 대시보드
📦 상품관리
🧾 주문관리
🏬 재고관리
🎯 프로모션
💳 정산
⚙️ 설정
공급사 관리 › 휴무일 관리신규 화면
구분 전체 ▾공급사 ▾🔍 공급사·날짜 검색+ 휴무 일괄 등록월간 캘린더 전환
▲ 통합 휴무 현황 — 바뀌는 컬럼은 🆕 로 표시(예시 데이터)
1통합 휴무 현황 진입 — 좌측 '공급사 관리 › 휴무일 관리' 클릭. 전체 공급사의 주 고정·게릴라성 휴무가 날짜 축으로 합쳐진 목록(기본)/월간 캘린더로 표시된다.
2일괄 등록 시작 — '+ 휴무 일괄 등록' 클릭 → 모달. 먼저 유형(주 고정휴무 / 월별 게릴라성)을 선택한다.
3패턴·공급사 다중 선택 — 게릴라성이면 날짜(예 7/18), 발주휴무 ON/OFF, 배송 가능·불가를 정하고, 적용 공급사를 다중 체크(엘홀딩스·삼성웰스토리·동원홈푸드…)한다.
4검증·충돌 확인 — 지난 날짜면 저장 차단. 이미 값이 있는 공급사×날짜는 '덮어쓰기' 확인. 저장 시 bulk_group_id로 묶여 로그 1건 생성.
5통합 뷰 반영 확인 — 저장 즉시 통합 캘린더/목록에 '적용 공급사 수'와 발주·배송 뱃지로 반영. 발주마감·배송예정일 계산 배치가 이 휴무를 제외 처리.
6되돌리기 — 잘못 등록한 묶음은 이력에서 bulk_group_id 단위로 되돌리기 → 해당 엔트리 일괄 삭제, status=REVERTED 기록.
seller READ
idPK varchar(100)
seller_namevarchar(20)
seller_typevarchar(20)
공급사 마스터(151행). 일괄 등록 대상 다중 선택 소스.
seller_order_close WRITE
seller_idPK,FK varchar(100)
day_weekPK integer
close_hourtime
use_flagboolean
주 고정휴무(요일 반복) 발주마감. 기존 500행 재사용, 일괄 등록이 upsert.
seller_order_close_custom WRITE
seller_idPK,FK varchar(100)
event_datePK date
close_hourtime
delivery_ynboolean
holiday_sourcevarchar(10)
bulk_group_idFK varchar(36)
월별 게릴라성 단일 휴무일. 기존 23행 + 배송여부·감사·묶음 컬럼 신규 추가.
seller_holiday_bulk_log 신규
idPK bigserial
bulk_group_idvarchar(36)
holiday_kindvarchar(10)
target_countinteger
seller_idstext
statusvarchar(10)
created_byvarchar(20)
일괄 세팅 이력(감사·되돌리기 단위). 한 묶음=여러 공급사×날짜.
seller.id 1 : N seller_order_close.seller_id (주 고정휴무 요일)
seller.id 1 : N seller_order_close_custom.seller_id (게릴라성 단일 휴무일)
seller_holiday_bulk_log.bulk_group_id 1 : N seller_order_close(_custom).bulk_group_id (일괄 묶음 → 되돌리기 단위)
통합 캘린더 뷰 = seller_order_close ∪ seller_order_close_custom 을 seller 기준 UNION 조회(신규 저장 없음)
-- =========================================================
-- MD-21 휴무일 일괄 세팅
-- 기존 테이블 재사용(주 고정=seller_order_close / 게릴라성=seller_order_close_custom),
-- 신규는 (1) 게릴라성 테이블에 배송여부·감사 컬럼 추가 (2) 일괄 등록 이력 테이블만.
-- =========================================================
-- 1) 게릴라성 단일 휴무일에 '배송 가능/불가' 2속성 + 감사 컬럼 추가
-- 기존: seller_id, event_date, close_hour (감사 컬럼 없음)
ALTER TABLE seller_order_close_custom
ADD COLUMN IF NOT EXISTS delivery_yn boolean NOT NULL DEFAULT true, -- 해당일 배송 가능 여부(true=배송가능, false=배송불가). 발주휴무여도 기존 발주분 배송은 별개
ADD COLUMN IF NOT EXISTS holiday_source varchar(10) NOT NULL DEFAULT 'MANUAL', -- 출처: MANUAL(수동) / HOLIDAY(공휴일 자동) [결정 대기]
ADD COLUMN IF NOT EXISTS bulk_group_id varchar(36), -- 일괄 등록 묶음 식별자(되돌리기 단위). 개별 등록이면 NULL
ADD COLUMN IF NOT EXISTS memo varchar(200), -- 휴무 사유 메모(예: 창고 이전, 광복절)
ADD COLUMN IF NOT EXISTS created_by varchar(20) NOT NULL DEFAULT 'auto',
ADD COLUMN IF NOT EXISTS created_at timestamp NOT NULL DEFAULT (CURRENT_TIMESTAMP AT TIME ZONE 'Asia/Seoul');
-- 2) 일괄 세팅 이력(감사·되돌리기) — 신규
CREATE TABLE IF NOT EXISTS seller_holiday_bulk_log (
id bigserial PRIMARY KEY,
bulk_group_id varchar(36) NOT NULL, -- 한 번의 '일괄 등록' 트랜잭션 식별자(UUID)
holiday_kind varchar(10) NOT NULL, -- WEEKLY(주 고정휴무) / CUSTOM(월별 게릴라성)
event_date date, -- CUSTOM일 때 대상일. WEEKLY면 NULL
day_week integer, -- WEEKLY일 때 요일(0=일 ~ 6=토, 가정). CUSTOM이면 NULL
order_close_yn boolean NOT NULL, -- 발주휴무 여부(true=발주 마감/제외)
delivery_yn boolean NOT NULL, -- 배송 가능 여부(true=배송가능)
holiday_source varchar(10) NOT NULL DEFAULT 'MANUAL', -- MANUAL / HOLIDAY(공휴일 자동)
target_count integer NOT NULL, -- 이 묶음에 적용된 공급사 수
seller_ids text NOT NULL, -- 적용 공급사 id 목록(csv 스냅샷, 되돌리기·감사용)
memo varchar(200),
status varchar(10) NOT NULL DEFAULT 'APPLIED', -- APPLIED / REVERTED(되돌림)
created_by varchar(20) NOT NULL,
created_at timestamp NOT NULL DEFAULT (CURRENT_TIMESTAMP AT TIME ZONE 'Asia/Seoul'),
reverted_by varchar(20),
reverted_at timestamp
);
COMMENT ON TABLE seller_holiday_bulk_log IS 'MD-21 휴무일 다중 공급사 일괄 세팅 이력(감사·되돌리기 단위)';
CREATE INDEX IF NOT EXISTS idx_holiday_bulk_group ON seller_holiday_bulk_log (bulk_group_id);
CREATE INDEX IF NOT EXISTS idx_holiday_bulk_date ON seller_holiday_bulk_log (event_date);
-- 통합 캘린더 뷰는 별도 저장 없이 seller_order_close(주 고정) ∪ seller_order_close_custom(게릴라성)을
-- seller 기준으로 UNION 조회하는 read-only 뷰/쿼리로 렌더(신규 테이블 불필요).
04화면 상세 — 세부 표·규칙
목록 외 품목표·모달·규칙 등 세부 화면
휴무 일괄 등록 모달
한 모달에서 패턴 1개 + 공급사 N개 → N건 upsert & 로그 1건. 이미 존재하는 건은 덮어쓰기 확인 후 저장.
휴무 2속성 × 고정/게릴라 매핑 규칙표
발주휴무와 배송여부는 항상 독립 저장. 공휴일 자동 동기화는 미결 — 스키마(holiday_source)만 선반영.