#!/usr/bin/env bash # ══════════════════════════════════════════════════ # 01_setup_project.sh # 初始化项目:创建目录、生成 .env 文件 # 用法:bash scripts/01_setup_project.sh # ══════════════════════════════════════════════════ set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_DIR="$(dirname "$SCRIPT_DIR")" RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; BLUE='\033[0;34m'; NC='\033[0m' info() { echo -e "${BLUE}[INFO]${NC} $*"; } ok() { echo -e "${GREEN}[OK]${NC} $*"; } warn() { echo -e "${YELLOW}[WARN]${NC} $*"; } cd "$PROJECT_DIR" info "项目目录:$PROJECT_DIR" # ── 创建运行时目录 ────────────────────────────── info "创建运行时目录..." mkdir -p data/uploads data/parsed logs models mkdir -p services/embedding services/mcp-server mkdir -p services/compliance-backend/app/{core,api,services,models} ok "目录结构创建完成" # ── 复制 .env 文件 ────────────────────────────── if [[ ! -f ".env" ]]; then cp .env.example .env warn "已创建 .env 文件,请编辑并填写必要配置:" warn " 必填:DEEPSEEK_API_KEY(或 DASHSCOPE_API_KEY)" warn " 可选:修改各组件密码" echo "" echo -e "${YELLOW}是否现在编辑 .env 文件?(y/n)${NC}" read -r ans if [[ "$ans" == "y" ]]; then ${EDITOR:-nano} .env fi else ok ".env 文件已存在,跳过复制" fi # ── 验证 .env 关键字段 ────────────────────────── info "验证 .env 配置..." source .env 2>/dev/null || true if [[ -z "${DEEPSEEK_API_KEY:-}" && -z "${DASHSCOPE_API_KEY:-}" ]]; then warn "⚠️ 未设置 LLM API Key!" warn " 请在 .env 中设置 DEEPSEEK_API_KEY 或 DASHSCOPE_API_KEY" warn " DeepSeek 申请:https://platform.deepseek.com" else ok "LLM API Key 已配置" fi # ── 验证 Docker ───────────────────────────────── info "检查 Docker 环境..." if ! command -v docker &>/dev/null; then warn "Docker 未安装,请先运行:bash scripts/00_install_docker_ubuntu.sh" exit 1 fi docker compose version > /dev/null ok "Docker Compose 可用:$(docker compose version)" # ── 显示下一步 ────────────────────────────────── echo "" echo -e "${GREEN}══════════════════════════════════════════${NC}" echo -e "${GREEN} 项目初始化完成!${NC}" echo -e "${GREEN}══════════════════════════════════════════${NC}" echo "" echo "下一步操作:" echo " 1. 拉取镜像(可选,较慢):bash scripts/02_pull_images.sh" echo " 2. 启动全部服务: bash scripts/06_start_all.sh" echo " 3. 检查健康状态: bash scripts/check_health.sh"