#!/bin/bash

#############################################
# AI 夜間開發系統 - 一鍵安裝腳本
#############################################

set -e

# 顏色定義
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

echo -e "${BLUE}"
cat << "EOF"
╔═══════════════════════════════════════════════════════╗
║                                                       ║
║        🌙 AI 夜間持續開發系統 - 快速安裝             ║
║                                                       ║
║     Let AI Code While You Sleep! 😴💻                ║
║                                                       ║
╚═══════════════════════════════════════════════════════╝
EOF
echo -e "${NC}"

echo ""
echo "此腳本將幫你完成以下設置："
echo "  1. 檢查系統需求"
echo "  2. 設定權限"
echo "  3. 建立目錄結構"
echo "  4. 配置環境變數"
echo "  5. 安裝 Cron Job"
echo "  6. 選擇並啟動第一個專案"
echo ""

read -p "按 Enter 開始安裝，或 Ctrl+C 取消..." 

echo ""
echo -e "${YELLOW}[步驟 1/6] 檢查系統需求...${NC}"

# 檢查 bash 版本
if [ -z "$BASH_VERSION" ]; then
    echo -e "${RED}✗ 需要 Bash shell${NC}"
    exit 1
fi
echo -e "${GREEN}✓ Bash shell 已安裝${NC}"

# 檢查 git
if ! command -v git &> /dev/null; then
    echo -e "${RED}✗ 未安裝 Git${NC}"
    echo "請先安裝 Git: sudo apt-get install git"
    exit 1
fi
echo -e "${GREEN}✓ Git 已安裝${NC}"

# 檢查 cron
if ! command -v crontab &> /dev/null; then
    echo -e "${RED}✗ 未安裝 Cron${NC}"
    echo "請先安裝 Cron: sudo apt-get install cron"
    exit 1
fi
echo -e "${GREEN}✓ Cron 已安裝${NC}"

# 檢查 AI CLI
AI_CLI_FOUND=false
if command -v claude &> /dev/null; then
    echo -e "${GREEN}✓ Claude CLI 已安裝${NC}"
    AI_CLI_FOUND=true
    DEFAULT_AI="claude"
elif command -v copilot &> /dev/null; then
    echo -e "${GREEN}✓ GitHub Copilot CLI 已安裝${NC}"
    AI_CLI_FOUND=true
    DEFAULT_AI="copilot"
elif command -v gemini &> /dev/null; then
    echo -e "${GREEN}✓ Gemini CLI 已安裝${NC}"
    AI_CLI_FOUND=true
    DEFAULT_AI="gemini"
fi

if [ "$AI_CLI_FOUND" = false ]; then
    echo -e "${YELLOW}⚠ 未偵測到 AI CLI 工具${NC}"
    echo ""
    echo "請安裝以下其中一種："
    echo "  • Claude CLI: npm install -g @anthropic-ai/claude-cli"
    echo "  • GitHub Copilot CLI: npm install -g @github/copilot-cli"
    echo ""
    read -p "是否繼續安裝（稍後手動安裝 AI CLI）？(y/n) " -n 1 -r
    echo
    if [[ ! $REPLY =~ ^[Yy]$ ]]; then
        exit 1
    fi
    DEFAULT_AI="claude"
fi

echo ""
echo -e "${YELLOW}[步驟 2/6] 設定權限...${NC}"

chmod +x "$SCRIPT_DIR/ai-dev-loop.sh"
chmod +x "$SCRIPT_DIR/ai-dev-control.sh"
chmod +x "$SCRIPT_DIR/install-cron.sh"
chmod +x "$SCRIPT_DIR/project-configs.sh"

echo -e "${GREEN}✓ 所有腳本已設為可執行${NC}"

echo ""
echo -e "${YELLOW}[步驟 3/6] 建立目錄結構...${NC}"

# 建立 log 目錄
mkdir -p "$HOME/.ai-dev-logs"
echo -e "${GREEN}✓ Log 目錄已建立: $HOME/.ai-dev-logs${NC}"

# 建立 projects 目錄
mkdir -p "$HOME/projects"
echo -e "${GREEN}✓ 專案目錄已建立: $HOME/projects${NC}"

echo ""
echo -e "${YELLOW}[步驟 4/6] 配置環境變數...${NC}"

# 將 project-configs.sh 加入 shell 配置
SHELL_CONFIG=""
if [ -f "$HOME/.bashrc" ]; then
    SHELL_CONFIG="$HOME/.bashrc"
elif [ -f "$HOME/.zshrc" ]; then
    SHELL_CONFIG="$HOME/.zshrc"
fi

if [ -n "$SHELL_CONFIG" ]; then
    if ! grep -q "ai-dev" "$SHELL_CONFIG"; then
        echo "" >> "$SHELL_CONFIG"
        echo "# AI Dev System" >> "$SHELL_CONFIG"
        echo "source $SCRIPT_DIR/project-configs.sh" >> "$SHELL_CONFIG"
        echo -e "${GREEN}✓ 環境配置已加入: $SHELL_CONFIG${NC}"
    else
        echo -e "${YELLOW}⚠ 配置已存在於: $SHELL_CONFIG${NC}"
    fi
else
    echo -e "${YELLOW}⚠ 找不到 shell 配置檔${NC}"
fi

echo ""
echo -e "${YELLOW}[步驟 5/6] 安裝 Cron Job...${NC}"
echo ""

read -p "是否要安裝 Cron Job？(每小時 00, 20, 40 分執行) (y/n) " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
    bash "$SCRIPT_DIR/install-cron.sh"
else
    echo -e "${YELLOW}已跳過 Cron 安裝，稍後可執行: ./install-cron.sh${NC}"
fi

echo ""
echo -e "${YELLOW}[步驟 6/6] 選擇並啟動第一個專案...${NC}"
echo ""
echo "可用的專案："
echo "  1) sdd        - SDD Spec 管理系統"
echo "  2) wedding    - 婚禮規劃 APP"
echo "  3) iso27001   - ISO27001 管理系統"
echo "  4) blog       - 部落格 AI 撰寫"
echo "  5) language   - 外語學習系統"
echo "  6) 跳過（稍後手動啟動）"
echo ""

read -p "請選擇 (1-6): " project_choice

case $project_choice in
    1)
        PROJECT="sdd"
        PROJECT_NAME="SDD Spec 管理系統"
        ;;
    2)
        PROJECT="wedding"
        PROJECT_NAME="婚禮規劃 APP"
        ;;
    3)
        PROJECT="iso27001"
        PROJECT_NAME="ISO27001 管理系統"
        ;;
    4)
        PROJECT="blog"
        PROJECT_NAME="部落格 AI 撰寫"
        ;;
    5)
        PROJECT="language"
        PROJECT_NAME="外語學習系統"
        ;;
    6)
        echo -e "${YELLOW}已跳過專案啟動${NC}"
        PROJECT=""
        ;;
    *)
        echo -e "${RED}無效選擇，已跳過專案啟動${NC}"
        PROJECT=""
        ;;
esac

if [ -n "$PROJECT" ]; then
    echo ""
    echo -e "${GREEN}正在啟動專案: $PROJECT_NAME${NC}"
    bash "$SCRIPT_DIR/ai-dev-control.sh" start "$PROJECT"
fi

echo ""
echo -e "${GREEN}"
cat << "EOF"
╔═══════════════════════════════════════════════════════╗
║                                                       ║
║              ✅ 安裝完成！                            ║
║                                                       ║
╚═══════════════════════════════════════════════════════╝
EOF
echo -e "${NC}"

echo ""
echo -e "${BLUE}接下來的步驟：${NC}"
echo ""

if [ -n "$PROJECT" ]; then
    PROJECT_DIR="$HOME/projects/$PROJECT"
    echo "1. 編輯專案的 Prompt 檔案："
    echo -e "   ${YELLOW}nano $PROJECT_DIR/.ai-dev-prompt.txt${NC}"
    echo ""
    echo "   💡 參考範例："
    echo -e "   ${YELLOW}cat $SCRIPT_DIR/prompt-examples.md${NC}"
    echo ""
    
    if [ "$AI_CLI_FOUND" = false ]; then
        echo "2. 安裝 AI CLI 工具（必要）："
        echo -e "   ${YELLOW}npm install -g @anthropic-ai/claude-cli${NC}"
        echo ""
    fi
    
    echo "3. 測試執行一次："
    echo -e "   ${YELLOW}$SCRIPT_DIR/ai-dev-control.sh run${NC}"
    echo ""
    
    echo "4. 查看系統狀態："
    echo -e "   ${YELLOW}$SCRIPT_DIR/ai-dev-control.sh status${NC}"
    echo ""
    
    echo "5. 查看執行 log："
    echo -e "   ${YELLOW}$SCRIPT_DIR/ai-dev-control.sh logs latest${NC}"
    echo ""
else
    echo "1. 選擇並啟動專案："
    echo -e "   ${YELLOW}$SCRIPT_DIR/ai-dev-control.sh start <project>${NC}"
    echo ""
    echo "2. 查看可用命令："
    echo -e "   ${YELLOW}$SCRIPT_DIR/ai-dev-control.sh help${NC}"
    echo ""
fi

echo -e "${BLUE}下次 Cron 執行時間：${NC}"
if crontab -l 2>/dev/null | grep -q "ai-dev-loop.sh"; then
    next_hour=$(date +"%H")
    next_minute="00"
    current_minute=$(date +"%M")
    
    if [ $current_minute -lt 20 ]; then
        next_minute="20"
    elif [ $current_minute -lt 40 ]; then
        next_minute="40"
    else
        next_minute="00"
        next_hour=$((next_hour + 1))
    fi
    
    echo "  每小時的 00, 20, 40 分"
    echo -e "  下一次: ${YELLOW}今天 $next_hour:$next_minute${NC}"
else
    echo -e "  ${YELLOW}Cron 尚未安裝${NC}"
fi

echo ""
echo -e "${BLUE}需要幫助？${NC}"
echo "  • 完整文件: $SCRIPT_DIR/README.md"
echo "  • Prompt 範例: $SCRIPT_DIR/prompt-examples.md"
echo "  • 控制面板: $SCRIPT_DIR/ai-dev-control.sh help"
echo ""

echo -e "${GREEN}🚀 祝你的 AI 夜間開發順利！${NC}"
echo -e "${GREEN}💤 今晚就讓 AI 幫你寫程式吧！${NC}"
echo ""
