#!/usr/bin/env bash # ============================================================ # CareerNexus 职联 初始化脚本(Linux / macOS / Git Bash) # 作用:建虚拟环境 → 装依赖 → 写离线默认配置(触发首次引导)→ 生成数据集 # 用法:bash init.sh 或 chmod +x init.sh && ./init.sh # ============================================================ set -e cd "$(dirname "$0")" echo "==========================================" echo " CareerNexus 职联 · 初始化" echo "==========================================" # ---------- 1. 检查 Python(跳过 WindowsApps 商店占位 stub) ---------- PY="" for cand in python python3 py; do command -v "$cand" >/dev/null 2>&1 || continue # 跳过 Microsoft Store 占位 stub(运行 --version 无输出) case "$(command -v "$cand")" in *WindowsApps*) continue;; esac ver=$("$cand" --version 2>/dev/null) if [ -n "$ver" ]; then PY="$cand"; PYVER="$ver"; break; fi done if [ -z "$PY" ]; then echo "[错误] 未找到可用的 Python 3.11+(检测到商店占位 stub 不算)" echo " 请安装 Python 并加入 PATH,或安装后重试" exit 1 fi echo "[1/5] Python 版本: $PYVER ($PY)" # ---------- 2. 创建虚拟环境 ---------- if [ ! -f ".venv/bin/python" ] && [ ! -f ".venv/Scripts/python.exe" ]; then echo "[2/5] 创建虚拟环境 .venv ..." $PY -m venv .venv else echo "[2/5] 虚拟环境已存在,跳过" fi # Windows venv 与 POSIX venv 路径兼容 if [ -f ".venv/bin/python" ]; then VENV_PY=.venv/bin/python else VENV_PY=.venv/Scripts/python.exe fi # ---------- 3. 安装依赖(镜像站优先,失败回退官方源) ---------- echo "[3/5] 安装依赖(清华镜像站)..." if ! "$VENV_PY" -m pip install -q -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple; then echo "镜像站失败,改用官方源重试..." "$VENV_PY" -m pip install -q -r requirements.txt fi # ---------- 4. 写入离线默认配置(config.json) ---------- # mode=demo 离线演示模式;guided=false 使首次启动弹出"初始设置"引导; # 已有配置先备份为 config.json.bak if [ -f config.json ]; then echo "[4/5] 检测到已有 config.json,备份为 config.json.bak" cp -f config.json config.json.bak fi echo "[4/5] 写入离线默认配置 config.json ..." cat > config.json <<'EOF' { "mode": "demo", "guided": false, "embed_provider": "local" } EOF # ---------- 5. 生成自备数据集 ---------- if [ ! -d "data/jd_raw" ]; then echo "[5/5] 生成自备数据集(seed=2026)..." "$VENV_PY" scripts/generate_dataset.py else echo "[5/5] 数据集已存在,跳过(需重建请运行 $VENV_PY scripts/generate_dataset.py)" fi echo "" echo "==========================================" echo " 初始化完成!当前为离线演示模式" echo " 启动:$VENV_PY main.py" echo " 首次启动会弹出「初始设置」,可在其中配置" echo " 星火 LLM 密钥与语义向量模型(亦可跳过)" echo "=========================================="