feat(cupang): 박스 입수량 2차 시드 SQL (미라클통/백/빠져락/멀티/점보)

19건 추가. 제품코드는 cupang_products 에서 제품명(공백·대소문자 무시)
으로 매칭하고, 카탈로그에 없는 제품은 입력하지 않고 목록으로 출력한다
— 제품명 설정의 수기 추가로 코드를 등록한 뒤 재실행하면 반영된다.
피킹비는 memo 에 기록.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-28 13:26:18 +09:00
parent 5c54c99f7e
commit c36ba70a16
+82
View File
@@ -0,0 +1,82 @@
-- ════════════════════════════════════════════════════════════
-- 쿠팡 밀크런 — 박스 입수량 규칙 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;
CREATE TEMP TABLE _seed2 (
product_name TEXT,
picking_fee INTEGER,
units_per_box INTEGER,
box_name TEXT
) ON COMMIT DROP;
INSERT INTO _seed2 (product_name, picking_fee, units_per_box, box_name) 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.box_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_name 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;