#!/bin/bash
# TeachSeek 首次安装脚本（deploy1）
# 在生产服务器 10.55.138.114 上执行
# 用法: tar -xzf deploy1.tar.gz && cd deploy1 && bash install.sh

set -euo pipefail

APP_DIR="/opt/teachseek"
SUPERVISOR_PROFILE="/www/server/panel/plugin/supervisor/profile"
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"

echo "[$(date '+%H:%M:%S')] 开始安装 TeachSeek (deploy1) 到 ${APP_DIR}..."

# 创建目录
mkdir -p "$APP_DIR"

# 复制文件
cp -r "${SCRIPT_DIR}/teachseek" "$APP_DIR/"
cp -r "${SCRIPT_DIR}/_internal" "$APP_DIR/"
cp -r "${SCRIPT_DIR}/conf" "$APP_DIR/"
cp "${SCRIPT_DIR}/VERSION" "$APP_DIR/"
cp "${SCRIPT_DIR}/.env" "$APP_DIR/"
cp "${SCRIPT_DIR}/update.sh" "$APP_DIR/"
chmod +x "$APP_DIR/teachseek" "$APP_DIR/update.sh"

# 复制 dmPython（从现有 venv）
VENV_DM="/www/git/teachSeek/v8.0.3/.venv/lib/python3.13/site-packages/dmPython"
if [ -d "$VENV_DM" ]; then
    echo "复制 dmPython 驱动..."
    mkdir -p "${APP_DIR}/_internal/dmPython"
    cp -f "${VENV_DM}/"*.so "${APP_DIR}/_internal/dmPython/" 2>/dev/null || true
    cp -f "${VENV_DM}/"*.py "${APP_DIR}/_internal/dmPython/" 2>/dev/null || true
    cp -f "${VENV_DM}/__init__.py" "${APP_DIR}/_internal/dmPython/" 2>/dev/null || true
    echo "dmPython 复制完成"
else
    echo "WARNING: dmPython 未找到 (${VENV_DM})"
    echo "  如果使用达梦数据库，需要手动安装 dmPython"
fi

# 安装 Supervisor 配置
if [ -d "$SUPERVISOR_PROFILE" ]; then
    echo "安装 Supervisor 配置..."
    cp "${SCRIPT_DIR}/supervisor/teachSeek.ini" "${SUPERVISOR_PROFILE}/"

    SUPERVISORCTL=$(command -v supervisorctl 2>/dev/null || echo "/www/server/panel/pyenv/bin/supervisorctl")
    $SUPERVISORCTL update
    $SUPERVISORCTL restart teachSeek_01
    sleep 3

    RESP=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:16524/api/health 2>/dev/null || echo "000")
    if [ "$RESP" = "401" ] || [ "$RESP" = "200" ]; then
        echo "安装成功！服务已启动 (HTTP $RESP)"
        echo "后端访问: http://10.55.138.114:16524/"
        echo "Nginx访问: http://10.55.138.114:19624/"
    else
        echo "WARNING: 健康检查未通过 (HTTP $RESP)"
        echo "查看日志: tail -20 /www/server/panel/plugin/supervisor/log/teachSeek.out.log"
    fi
else
    echo "WARNING: Supervisor 目录不存在，请手动安装 Supervisor 配置"
    echo "  cp ${SCRIPT_DIR}/supervisor/teachSeek.ini ${SUPERVISOR_PROFILE}/"
fi

echo "安装完成。"
echo "后续更新: bash ${APP_DIR}/update.sh"
