- 全链路:多源JD接入/清洗交叉验证/结构化抽取(星火+离线双通道)/时序知识图谱/新岗位发现/演化分析/人岗匹配/学习路径 - WebUI 五视图:驾驶舱/图谱工作台/岗位演化/匹配(单人+批量)/学习路径 - 设置中心(config.json)/Token鉴权/SQLite状态库/语义向量通道(BGE-M3本地或联网API) - 71 个 pytest 用例;数据目录仅保留结构(.gitkeep),数据由 scripts/generate_dataset.py 复现
82 lines
3.0 KiB
Bash
82 lines
3.0 KiB
Bash
#!/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 "=========================================="
|