feat: EwoooC 初始化 — 完整專案推版至 Gitea
Some checks failed
CD Pipeline / deploy (push) Failing after 59s

- 建立 Gitea Actions CD pipeline (.gitea/workflows/cd.yaml)
- 部署模式: rsync Python 檔案至 188 → docker restart (volume mount)
- Dockerfile/requirements 變動時自動重建 Docker image
- 部署通知: Telegram (開始/成功/失敗)
- 健康檢查: https://mo.wooo.work/health (最多 5 次重試)
- 同步最新 CLAUDE.md / ADR-008 / memory (2026-04-19)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
ogt
2026-04-19 01:21:13 +08:00
commit 1b4f3a7bbe
504 changed files with 387725 additions and 0 deletions

View File

@@ -0,0 +1,67 @@
-- =============================================================================
-- 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
);
-- 授權給 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 $$;

View File

@@ -0,0 +1,81 @@
# =============================================================================
# PostgreSQL 效能優化配置
# WOOO TECH - Momo Pro System
# 針對 8GB RAM 伺服器優化
# =============================================================================
# -----------------------------------------------------------------------------
# 連線設定
# -----------------------------------------------------------------------------
listen_addresses = '*'
max_connections = 100
# -----------------------------------------------------------------------------
# 記憶體配置 (針對 8GB RAM 優化)
# -----------------------------------------------------------------------------
# shared_buffers: 建議設為總 RAM 的 25% (8GB * 0.25 = 2GB)
shared_buffers = 2GB
# work_mem: 每個排序/Hash 操作的記憶體 (大型查詢需要更多)
# 計算: (RAM - shared_buffers) / (max_connections * 2)
work_mem = 64MB
# maintenance_work_mem: VACUUM, CREATE INDEX 等維護操作使用
maintenance_work_mem = 512MB
# effective_cache_size: 告訴 planner 系統總共有多少快取可用
# 建議設為總 RAM 的 75%
effective_cache_size = 6GB
# -----------------------------------------------------------------------------
# 磁碟 I/O 配置
# -----------------------------------------------------------------------------
# 使用 SSD 時建議調高
random_page_cost = 1.1
effective_io_concurrency = 200
# 預讀設定 (對於大表 Seq Scan 很重要)
seq_page_cost = 1.0
# -----------------------------------------------------------------------------
# WAL (Write-Ahead Log) 配置
# -----------------------------------------------------------------------------
wal_buffers = 64MB
checkpoint_completion_target = 0.9
max_wal_size = 2GB
min_wal_size = 1GB
# -----------------------------------------------------------------------------
# 查詢計劃器配置
# -----------------------------------------------------------------------------
# 鼓勵使用索引
enable_seqscan = on
enable_indexscan = on
enable_bitmapscan = on
# 並行查詢 (利用多核心)
max_parallel_workers_per_gather = 2
max_parallel_workers = 4
max_worker_processes = 8
parallel_tuple_cost = 0.01
parallel_setup_cost = 1000
# -----------------------------------------------------------------------------
# 自動 VACUUM 配置
# -----------------------------------------------------------------------------
autovacuum = on
autovacuum_vacuum_scale_factor = 0.1
autovacuum_analyze_scale_factor = 0.05
# -----------------------------------------------------------------------------
# 日誌配置
# -----------------------------------------------------------------------------
log_min_duration_statement = 1000
log_checkpoints = on
log_lock_waits = on
# -----------------------------------------------------------------------------
# 統計收集
# -----------------------------------------------------------------------------
track_activities = on
track_counts = on