-- ============================================================================= -- Migration 004: 競品價格快取表 -- MOMO PRO — AI Intelligence Module -- 2026-04-17 台北 -- ============================================================================= -- 說明: -- 獨立爬蟲 Worker (competitor_price_feeder.py) 的寫入目標。 -- AI Pipeline 消費端只做 LEFT JOIN,零網路等待,100% 內網速度。 -- -- 鍵: (sku, source) — 支援未來擴充 Shopee、蝦皮等競品 -- TTL: expires_at,過期資料視為無效(Hermes 自動跳過) -- -- 執行方式: -- psql -U momo -d momo_pro -f migrations/004_competitor_prices.sql -- ============================================================================= CREATE TABLE IF NOT EXISTS competitor_prices ( id SERIAL PRIMARY KEY, -- 商品識別(對應 products.i_code) sku VARCHAR(50) NOT NULL, -- 競品來源: 'pchome', 'shopee', 'momo_other' ... source VARCHAR(30) NOT NULL DEFAULT 'pchome', -- 比對結果 price NUMERIC(10,2) NOT NULL, -- 競品售價 original_price NUMERIC(10,2), -- 競品原價 discount_pct INTEGER, -- 折扣 % (null=未折扣) -- 商品識別(競品側) competitor_product_id VARCHAR(100), -- PChome prod ID competitor_product_name TEXT, -- PChome 商品名稱(供日誌核對) -- 模糊比對品質 match_score NUMERIC(4,3), -- 0.000~1.000,< 0.6 視為低信心 -- 語意標籤 (JSON array) tags JSONB DEFAULT '[]'::jsonb, -- 範例: ["on_sale", "discount_10pct", "24h_delivery", "限時下殺"] -- 供 Hermes 生成更豐富的情境分析 -- 時間控制 crawled_at TIMESTAMP NOT NULL DEFAULT NOW(), expires_at TIMESTAMP NOT NULL DEFAULT (NOW() + INTERVAL '6 hours'), CONSTRAINT competitor_prices_sku_source UNIQUE (sku, source) ); -- 查詢加速 CREATE INDEX IF NOT EXISTS idx_comp_price_sku ON competitor_prices (sku); CREATE INDEX IF NOT EXISTS idx_comp_price_expires_at ON competitor_prices (expires_at); CREATE INDEX IF NOT EXISTS idx_comp_price_source ON competitor_prices (source); -- 授權 GRANT ALL PRIVILEGES ON competitor_prices TO momo; GRANT USAGE, SELECT ON SEQUENCE competitor_prices_id_seq TO momo; -- 完成 DO $$ BEGIN RAISE NOTICE '✅ Migration 004 完成 — competitor_prices 表已建立'; END $$;