Spaces:
Sleeping
Sleeping
File size: 3,210 Bytes
aa9892b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | -- μΉ΄ν μμ± μ λ¬ΌμΏ ν° β λ¨μ²΄ λ°μ‘ + λ°λμ΄ μλ³ (2026-05-28, P1a μ μ‘ 2κ²½λ‘)
--
-- μμ²μ: doc/runbook/req_cafe_gift_mvp.md Β§5
-- μ€κ³: doc/runbook/cafe_gift_p1a.md (Phase B-2 / μ μ‘ 2κ²½λ‘)
--
-- λ³κ²½:
-- 1) gift_orders μ order_kind/company_name/company_contact μΆκ° (λ¨μ²΄ λΆκΈ°)
-- 2) gift_coupons μ order_id UNIQUE μ κ±° (corporate=1 order β N coupons)
-- 3) gift_coupons μ recipient_phone_e164/recipient_name μΆκ° (λ°λμ΄ unique λ§ν¬ νΈλνΉ)
--
-- β νκ· κ°λ (sql/043 λ°μ΄ν° μμ€ μ¬κ³ κ΅ν):
-- - λͺ¨λ μ κ· μ»¬λΌ nullable + default β κΈ°μ‘΄ λ°μ΄ν° μλ° 0
-- - CHECK λ μ κ· μ»¬λΌμλ§ (κΈ°μ‘΄ CHECK 무μμ )
-- - order_id UNIQUE μ κ±°λ idempotent (DROP CONSTRAINT IF EXISTS)
-- - order_kind λ―Έμ§μ νμ 'personal' λ‘ ν΄μ β κΈ°μ‘΄ mock_paid νλ¦ νκ· 0
-- - μλ¦Όν‘ νΈμΆ μ½λ 0건 (μμ²μ Β§5-3 λ°μ )
-- βββββββββ gift_orders νμ₯ βββββββββ
ALTER TABLE public.gift_orders
ADD COLUMN IF NOT EXISTS order_kind TEXT NOT NULL DEFAULT 'personal'
CHECK (order_kind IN ('personal','corporate')),
ADD COLUMN IF NOT EXISTS company_name TEXT,
ADD COLUMN IF NOT EXISTS company_contact TEXT;
CREATE INDEX IF NOT EXISTS idx_gift_orders_kind
ON public.gift_orders (order_kind, status, created_at DESC);
COMMENT ON COLUMN public.gift_orders.order_kind IS
'personal: 1 order β 1 coupon, Kakao Share. corporate: 1 order β N coupons, SMS μΌκ΄.';
COMMENT ON COLUMN public.gift_orders.company_name IS
'corporate μ μ© β νμ¬λͺ
. SMS λ³Έλ¬Έ [νμ¬λͺ
] 머리μ μ¬μ©.';
COMMENT ON COLUMN public.gift_orders.company_contact IS
'corporate μ μ© β λ΄λΉμ μ΄λ¦/μ°λ½μ²(μμ ν
μ€νΈ). νλΆΒ·λ¬Έμ μλμ©.';
-- βββββββββ gift_coupons νμ₯ (1 order β N coupons) βββββββββ
-- order_id UNIQUE μ κ±° (corporate λΆκΈ° μν΄). sql/049 μμ μΈλΌμΈ UNIQUE β μ μ½ μ΄λ¦ = gift_coupons_order_id_key
ALTER TABLE public.gift_coupons
DROP CONSTRAINT IF EXISTS gift_coupons_order_id_key;
-- λ°λμ΄ μλ³ (corporate λ°μ‘ μ μ±μμ§). personal νλ¦μ NULL = gift_orders.recipient_name μ¬μ©.
ALTER TABLE public.gift_coupons
ADD COLUMN IF NOT EXISTS recipient_phone_e164 TEXT,
ADD COLUMN IF NOT EXISTS recipient_name TEXT,
ADD COLUMN IF NOT EXISTS dispatched_at TIMESTAMPTZ, -- SMS λ°μ‘ μκ°
ADD COLUMN IF NOT EXISTS dispatch_status TEXT NOT NULL DEFAULT 'pending'
CHECK (dispatch_status IN ('pending','sent','failed','skipped')),
ADD COLUMN IF NOT EXISTS dispatch_error TEXT;
-- order λ³ + λ°λμ΄λ³ μ‘°ν (λμ보λ)
CREATE INDEX IF NOT EXISTS idx_gift_coupons_order_dispatch
ON public.gift_coupons (order_id, dispatch_status);
COMMENT ON COLUMN public.gift_coupons.recipient_phone_e164 IS
'corporate λ°μ‘ λ°λμ΄ λ²νΈ. personal=NULL (gift_orders.recipient_name μ¬μ©).';
COMMENT ON COLUMN public.gift_coupons.dispatch_status IS
'pending: λ°κΈλ§ / sent: SMS λ°μ‘ OK / failed: λ°μ‘ μ€ν¨(λ²νΈ λ¬΄ν¨ λ±) / skipped: λ°μ‘ μ ν¨(personal νλ¦).';
|