#!/bin/bash

# 知识库系统启动脚本

# 颜色定义
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color

# 打印带颜色的消息
print_message() {
    echo -e "${GREEN}[知识库系统]${NC} $1"
}

print_warning() {
    echo -e "${YELLOW}[警告]${NC} $1"
}

print_error() {
    echo -e "${RED}[错误]${NC} $1"
}

# 检查Docker是否安装
check_docker() {
    if ! command -v docker &> /dev/null; then
        print_error "Docker未安装，请先安装Docker: https://docs.docker.com/get-docker/"
        exit 1
    fi
    
    if ! command -v docker-compose &> /dev/null; then
        print_error "Docker Compose未安装，请先安装Docker Compose: https://docs.docker.com/compose/install/"
        exit 1
    fi
}

# 检查环境文件
check_env_file() {
    if [ ! -f .env ]; then
        print_warning ".env文件不存在，将从.env.example创建"
        cp .env.example .env
        print_message ".env文件已创建，请根据需要修改配置"
    fi
}

# 创建必要的目录
create_directories() {
    print_message "创建必要的目录..."
    mkdir -p data/documents data/processed data/vectors data/embedding_cache
}

# 启动服务
start_services() {
    print_message "启动服务..."
    docker-compose -f docker/docker-compose.yml up -d
}

# 停止服务
stop_services() {
    print_message "停止服务..."
    docker-compose -f docker/docker-compose.yml down
}

# 重启服务
restart_services() {
    print_message "重启服务..."
    docker-compose -f docker/docker-compose.yml restart
}

# 显示服务状态
show_status() {
    print_message "服务状态:"
    docker-compose -f docker/docker-compose.yml ps
}

# 显示日志
show_logs() {
    service=$1
    if [ -z "$service" ]; then
        print_message "显示所有服务的日志..."
        docker-compose -f docker/docker-compose.yml logs --tail=100 -f
    else
        print_message "显示服务 $service 的日志..."
        docker-compose -f docker/docker-compose.yml logs --tail=100 -f $service
    fi
}

# 构建服务
build_services() {
    print_message "构建服务..."
    docker-compose -f docker/docker-compose.yml build
}

# 显示帮助信息
show_help() {
    echo "知识库系统管理脚本"
    echo ""
    echo "用法: $0 [命令]"
    echo ""
    echo "命令:"
    echo "  start       启动所有服务"
    echo "  stop        停止所有服务"
    echo "  restart     重启所有服务"
    echo "  status      显示服务状态"
    echo "  logs        显示所有服务的日志"
    echo "  logs <服务>  显示指定服务的日志"
    echo "  build       构建服务"
    echo "  help        显示帮助信息"
    echo ""
}

# 主函数
main() {
    # 检查Docker
    check_docker
    
    # 检查环境文件
    check_env_file
    
    # 创建必要的目录
    create_directories
    
    # 处理命令
    case "$1" in
        start)
            start_services
            ;;
        stop)
            stop_services
            ;;
        restart)
            restart_services
            ;;
        status)
            show_status
            ;;
        logs)
            show_logs "$2"
            ;;
        build)
            build_services
            ;;
        help|*)
            show_help
            ;;
    esac
}

# 执行主函数
main "$@" 