diff --git a/scripts/sql/cupang_box_rules_seed2.sql b/scripts/sql/cupang_box_rules_seed2.sql new file mode 100644 index 0000000..1ca5c37 --- /dev/null +++ b/scripts/sql/cupang_box_rules_seed2.sql @@ -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;