-- ============================================================================= -- PostgreSQL 初始化腳本 -- WOOO TECH - Momo Pro System -- ============================================================================= -- 建立 Metabase 專用資料庫 CREATE DATABASE metabase; -- 建立分析用資料表 (從 SQLite 同步) -- 這些表結構對應 SQLite 的主要資料表 -- 即時銷售月報表 CREATE TABLE IF NOT EXISTS realtime_sales_monthly ( id SERIAL PRIMARY KEY, 日期 DATE, 訂單編號 VARCHAR(50), 商品ID VARCHAR(100), 商品編號 VARCHAR(100), 商品名稱 TEXT, 數量 INTEGER, 總業績 DECIMAL(15, 2), 總成本 DECIMAL(15, 2), 毛利 DECIMAL(15, 2), 退貨數量 INTEGER, 商品單位售價 DECIMAL(15, 2), 廠商名稱 VARCHAR(255), 分類名稱 VARCHAR(255), 商品館 VARCHAR(255), 品牌名稱 VARCHAR(255), 時間 VARCHAR(50), 付款方式 VARCHAR(100), 折扣活動名稱 VARCHAR(255), 折價券折扣金額 DECIMAL(15, 2), 折扣金額 DECIMAL(15, 2), 滿額再折扣金額 DECIMAL(15, 2), 分期手續費 DECIMAL(15, 2), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- 建立索引以加速查詢 CREATE INDEX IF NOT EXISTS idx_sales_date ON realtime_sales_monthly(日期); CREATE INDEX IF NOT EXISTS idx_sales_order ON realtime_sales_monthly(訂單編號); CREATE INDEX IF NOT EXISTS idx_sales_product_id ON realtime_sales_monthly(商品ID); CREATE INDEX IF NOT EXISTS idx_sales_product_code ON realtime_sales_monthly(商品編號); CREATE INDEX IF NOT EXISTS idx_sales_vendor ON realtime_sales_monthly(廠商名稱); CREATE INDEX IF NOT EXISTS idx_sales_category ON realtime_sales_monthly(分類名稱); CREATE INDEX IF NOT EXISTS idx_sales_hall ON realtime_sales_monthly(商品館); CREATE INDEX IF NOT EXISTS idx_sales_brand ON realtime_sales_monthly(品牌名稱); -- EDM 資料表 CREATE TABLE IF NOT EXISTS edm_data ( id SERIAL PRIMARY KEY, 活動名稱 VARCHAR(500), 活動開始日期 DATE, 活動結束日期 DATE, 活動類型 VARCHAR(100), 狀態 VARCHAR(50), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- 商品資料表 CREATE TABLE IF NOT EXISTS products ( id SERIAL PRIMARY KEY, 商品編號 VARCHAR(50) UNIQUE, 商品名稱 TEXT, 廠商名稱 VARCHAR(200), 分類名稱 VARCHAR(200), 品牌名稱 VARCHAR(200), 售價 DECIMAL(10, 2), 成本 DECIMAL(10, 2), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- AI Insights — Code Review / Strategy / 洞察結果 CREATE TABLE IF NOT EXISTS ai_insights ( id SERIAL PRIMARY KEY, insight_type VARCHAR(100) NOT NULL, content TEXT, confidence FLOAT DEFAULT 0.0, created_by VARCHAR(100), status VARCHAR(50) DEFAULT 'active', metadata_json TEXT, period VARCHAR(20), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); CREATE INDEX IF NOT EXISTS idx_ai_insights_type ON ai_insights(insight_type); CREATE INDEX IF NOT EXISTS idx_ai_insights_created ON ai_insights(created_at DESC); -- Action Plans — Code Review 修復 / AIOps 派遣 CREATE TABLE IF NOT EXISTS action_plans ( id SERIAL PRIMARY KEY, action_type VARCHAR(100) NOT NULL, description TEXT, status VARCHAR(50) DEFAULT 'pending', priority INTEGER DEFAULT 3, metadata_json TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); CREATE INDEX IF NOT EXISTS idx_action_plans_type ON action_plans(action_type); -- 授權給 momo 用戶 GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO momo; GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO momo; -- 顯示初始化完成訊息 DO $$ BEGIN RAISE NOTICE '✅ PostgreSQL 初始化完成 - WOOO Analytics'; END $$;