Files
dbx-main/scripts/sql/cupang_box_rules_seed2.sql
T
king f261919cc2 chore(cupang): 박스 입수량 memo 에서 피킹비 뒤 꼬리말 제거 스크립트
박스명 통일 스크립트가 호수(2호/3호/6호)를 memo 뒤에 ' · 2호' 로 옮겨
적었는데, 화면에서 불필요해 잘라낸다. '피킹비 750원' 까지만 남긴다.

- scripts/sql/cupang_box_rules_strip_memo_suffix.sql 추가
  (미리보기 SELECT → BEGIN/UPDATE/COMMIT → 잔여 건수 확인)
- 시드 재실행 시 다시 붙지 않도록 seed / seed2 의 memo 문자열도 정리
2026-08-31 12:30:36 +09:00

84 lines
3.7 KiB
PL/PgSQL

-- ════════════════════════════════════════════════════════════
-- 쿠팡 밀크런 — 박스 입수량 규칙 2차 입력 (cupang_db)
-- 미라클통/미라클백/빠져락/멀티/점보 19건
--
-- 실행:
-- docker exec -i postgres-db psql -U postgres -d cupang_db \
-- < /opt/www/main/scripts/sql/cupang_box_rules_seed2.sql
--
-- 제품코드는 cupang_products 카탈로그에서 제품명으로 매칭한다.
-- (공백 무시 + 대소문자 무시 비교)
-- 카탈로그에 없는 제품은 입력되지 않고 마지막 SELECT 에 출력된다.
-- → 제품명 설정 화면의 "수기 추가"로 제품코드를 등록한 뒤 이 파일을 다시 실행.
-- 같은 product_code 는 덮어쓴다(ON CONFLICT DO UPDATE).
-- 피킹비는 전용 컬럼이 없어 memo 에 기록한다.
-- ════════════════════════════════════════════════════════════
BEGIN;
-- box_no: 원자료의 박스 호수. 참고용 컬럼이며 memo 에는 넣지 않는다(피킹비만 기록).
CREATE TEMP TABLE _seed2 (
product_name TEXT,
picking_fee INTEGER,
units_per_box INTEGER,
box_no TEXT
) ON COMMIT DROP;
INSERT INTO _seed2 (product_name, picking_fee, units_per_box, box_no) VALUES
('미라클통 550x4', 700, 40, '2호'),
('미라클통 550x6', 700, 30, '2호'),
('미라클통 750x5', 700, 30, '2호'),
('미라클통 950x4', 700, 24, '2호'),
('미라클통 950x6', 700, 18, '2호'),
('미라클통 1800x4', 700, 16, '2호'),
('미라클통 1800x6', 700, 14, '2호'),
('미라클통 2200x4', 700, 14, '2호'),
('미라클통 2200x6', 700, 10, '2호'),
('미라클통 3200x4', 700, 10, '2호'),
('빠져락 x1', 500, 35, '2호'),
('빠져락 x3', 580, 8, '2호'),
('빠져락 x5', 780, 8, '2호'),
('미라클백 2.5L', 500, 30, '5호'),
('미라클백 6.0L', 500, 23, '6호'),
('멀티 5,000ml x2', 700, 8, '2호'),
('멀티 5,000ml x4', 680, 2, '3호'),
('점보 7,000ml x2', 700, 6, '2호'),
('점보 황토 7,000ml x2', 700, 6, '2호');
INSERT INTO cupang_box_rules
(product_code, product_name_snapshot, box_name, units_per_box, memo, active)
SELECT p.product_code,
p.product_name,
'쿠팡박스',
s.units_per_box,
'피킹비 ' || s.picking_fee || '',
TRUE
FROM _seed2 s
JOIN cupang_products p
ON lower(regexp_replace(p.product_name, '\s', '', 'g'))
= lower(regexp_replace(s.product_name, '\s', '', 'g'))
ON CONFLICT (product_code) DO UPDATE
SET product_name_snapshot = EXCLUDED.product_name_snapshot,
box_name = EXCLUDED.box_name,
units_per_box = EXCLUDED.units_per_box,
memo = EXCLUDED.memo,
active = TRUE;
-- 카탈로그에 없어 입력되지 않은 제품 (수기 추가 후 재실행 대상)
SELECT s.product_name AS "카탈로그_미등록_제품명",
s.units_per_box AS "입수량",
s.box_no AS "박스호수"
FROM _seed2 s
WHERE NOT EXISTS (
SELECT 1 FROM cupang_products p
WHERE lower(regexp_replace(p.product_name, '\s', '', 'g'))
= lower(regexp_replace(s.product_name, '\s', '', 'g'))
)
ORDER BY s.product_name;
COMMIT;
-- 결과 확인
SELECT product_code, product_name_snapshot, box_name, units_per_box, memo
FROM cupang_box_rules
ORDER BY product_code;