- FastAPI 后端: REST API + Bearer Token 鉴权 + PDF 代理 - 180 篇论文数据 (data/papers.json): 9 模块、32 子领域 - 前端: 数据驱动、卡片径向渐变光效、PDF 页面内阅读 - 底部状态栏: arXiv/HF 连通性检测 - PDF 加载: arXiv 优先(5s超时) → HK 本地兜底 - Docker 化部署 (Dockerfile + start.sh + nginx.conf) - arXiv + HF 批量下载器 (api/downloader.py)
44 lines
1.1 KiB
Bash
Executable File
44 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
|
# LLM 论文图书馆 — 启动脚本
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
cd "$SCRIPT_DIR"
|
|
|
|
# 加载环境变量
|
|
if [ -f .env ]; then
|
|
export $(grep -v '^#' .env | xargs)
|
|
fi
|
|
|
|
# 生成 API Key (如果未设置)
|
|
if [ -z "$LLM_LIB_API_KEY" ]; then
|
|
export LLM_LIB_API_KEY=$(python3 -c "import secrets; print(secrets.token_urlsafe(32))")
|
|
echo "API_KEY=$LLM_LIB_API_KEY" > .env
|
|
echo "⚠️ 自动生成 API Key: $LLM_LIB_API_KEY"
|
|
fi
|
|
|
|
echo "═══ LLM 论文图书馆 ═══"
|
|
echo " API Key: ${LLM_LIB_API_KEY:0:8}..."
|
|
echo " Port: ${PORT:-8000}"
|
|
echo " PDF Dir: papers/"
|
|
echo
|
|
|
|
# 首次运行: 下载依赖
|
|
if ! python3 -c "import fastapi" 2>/dev/null; then
|
|
echo "📦 安装依赖..."
|
|
pip install -r requirements.txt -q
|
|
fi
|
|
|
|
# 如果 papers.json 不存在,从 HTML 重新提取
|
|
if [ ! -f data/papers.json ]; then
|
|
echo "📊 提取论文数据..."
|
|
python3 api/extract_data.py || echo "⚠️ extract_data.py 失败,请手动运行"
|
|
fi
|
|
|
|
# 启动服务
|
|
echo "🚀 启动服务..."
|
|
exec python3 -m uvicorn api.server:app \
|
|
--host 0.0.0.0 \
|
|
--port ${PORT:-8000} \
|
|
--log-level ${LOG_LEVEL:-info}
|