這兩張表從未存在於生產 DB,導致: - Code Review 每次 _save_to_db() 靜默失敗 - get_history() 永遠返回空陣列 - /code-review/ 頁面歷史永遠空白 已直接在 production DB 執行 CREATE TABLE; 同步更新 docker/postgres/init/01-init.sql, 確保未來重建 DB 時自動建表。 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
95 lines
3.0 KiB
SQL
95 lines
3.0 KiB
SQL
-- =============================================================================
|
|
-- 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),
|
|
商品名稱 TEXT,
|
|
商品編號 VARCHAR(50),
|
|
數量 INTEGER,
|
|
總業績 DECIMAL(15, 2),
|
|
總成本 DECIMAL(15, 2),
|
|
廠商名稱 VARCHAR(200),
|
|
分類名稱 VARCHAR(200),
|
|
品牌名稱 VARCHAR(200),
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- 建立索引以加速查詢
|
|
CREATE INDEX idx_sales_date ON realtime_sales_monthly(日期);
|
|
CREATE INDEX idx_sales_vendor ON realtime_sales_monthly(廠商名稱);
|
|
CREATE INDEX idx_sales_category ON realtime_sales_monthly(分類名稱);
|
|
CREATE INDEX 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 $$;
|