Files
ewoooc/docker/postgres/init/01-init.sql
2026-04-29 21:00:46 +08:00

111 lines
3.7 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),
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 $$;