Files
ewoooc/docker/postgres/init/01-init.sql
ogt 6852609cba fix(db): 補建 ai_insights / action_plans 表
這兩張表從未存在於生產 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>
2026-04-22 09:25:38 +08:00

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 $$;