feat(cupang): 박스 입수량 2차 시드 SQL (미라클통/백/빠져락/멀티/점보)
19건 추가. 제품코드는 cupang_products 에서 제품명(공백·대소문자 무시) 으로 매칭하고, 카탈로그에 없는 제품은 입력하지 않고 목록으로 출력한다 — 제품명 설정의 수기 추가로 코드를 등록한 뒤 재실행하면 반영된다. 피킹비는 memo 에 기록. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -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;
|
||||||
Reference in New Issue
Block a user