#!/bin/bash
# =============================================================================
# Coba Synology NAS 部署 — 階段 2:部署 FastAPI
# =============================================================================
# 把 coba-backend 程式碼放到 NAS、建 venv、跑 systemd service。
#
# 前置:
#   - 已完成 01_install_services.sh
#   - 已 scp / git clone 把整個 coba-backend 放到 /volume1/coba/app
#   - PostgreSQL 已建好資料庫(coba)+ 帳號(coba),密碼存在 .env
# =============================================================================

set -e

COBA_HOME="/volume1/coba"
APP_DIR="$COBA_HOME/app"

echo "========================================="
echo " Coba 部署:02 - 部署 FastAPI"
echo "========================================="

if [ ! -d "$APP_DIR" ] || [ ! -f "$APP_DIR/requirements.txt" ]; then
    echo "❌ $APP_DIR 不存在或不像 coba-backend"
    echo "   先把 coba-backend 整個複製或 git clone 到那裡:"
    echo "   git clone <repo> $APP_DIR"
    echo "   或: scp -r coba-backend/* user@nas:$APP_DIR/"
    exit 1
fi

# ---------- 1. Python 3.12 venv ----------
echo
echo "[1/5] 建立 Python venv"
cd "$APP_DIR"
if [ ! -d ".venv" ]; then
    # Synology 預設 Python 通常是 3.8/3.9,建議從套件中心裝 Python 3.12
    if command -v python3.12 >/dev/null 2>&1; then
        PY=python3.12
    elif command -v python3 >/dev/null 2>&1; then
        PY=python3
        echo "  ⚠️  沒找到 python3.12,用 $($PY --version)。建議從 Synology 套件中心裝 Python 3.12"
    else
        echo "❌ 找不到 Python"
        exit 1
    fi
    $PY -m venv .venv
fi
.venv/bin/pip install --upgrade pip
.venv/bin/pip install -r requirements.txt
.venv/bin/pip install asyncpg   # 上線用 PostgreSQL,不是 SQLite

# ---------- 2. .env(若不存在則複製範本)----------
echo
echo "[2/5] 設定 .env"
if [ ! -f ".env" ]; then
    cp .env.example .env
    echo "  ⚠️  已建立 .env(從 .env.example),請編輯填:"
    echo "     - POSTGRES_PASSWORD(對應 PostgreSQL 設好的密碼)"
    echo "     - DATABASE_URL=postgresql+asyncpg://coba:<密碼>@127.0.0.1:5432/coba"
    echo "     - JWT_SECRET_KEY(用 python -c 'import secrets; print(secrets.token_urlsafe(64))' 產)"
    echo "     - ANTHROPIC_API_KEY"
    echo "     編輯完再執行此腳本"
    exit 0
fi

# ---------- 3. Alembic migration ----------
echo
echo "[3/5] 跑資料庫 migration"
.venv/bin/alembic upgrade head

# ---------- 4. Seed 第一個 owner ----------
echo
echo "[4/5] Seed 第一個 owner + 預設頻道"
.venv/bin/python -m app.core.seed

# ---------- 5. 寫 systemd service ----------
echo
echo "[5/5] 註冊 systemd service"
cat > /etc/systemd/system/coba.service <<EOF
[Unit]
Description=Coba Backend (FastAPI + Uvicorn)
After=network.target qdrant.service postgresql.service
Requires=qdrant.service

[Service]
Type=simple
WorkingDirectory=$APP_DIR
EnvironmentFile=$APP_DIR/.env
ExecStart=$APP_DIR/.venv/bin/uvicorn app.main:app --host 127.0.0.1 --port 8000 --workers 2
Restart=on-failure
RestartSec=5
User=root
StandardOutput=append:$COBA_HOME/logs/coba.log
StandardError=append:$COBA_HOME/logs/coba.err.log

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable coba
systemctl restart coba
sleep 3

echo
echo "========================================="
echo " Coba 後端已啟動於 http://127.0.0.1:8000"
echo "========================================="
echo "確認:"
echo "  systemctl status coba"
echo "  curl http://127.0.0.1:8000/health"
echo
echo "下一步:設定 Cloudflare Tunnel 對外開放"
echo "  bash 03_cloudflare_tunnel.sh"
