60 lines
1.6 KiB
Bash
Executable File
60 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
# 一键启动 US-Iran 态势面板:API + 前端 + 爬虫服务
|
||
set -e
|
||
cd "$(dirname "$0")"
|
||
|
||
# 若存在 .env 则加载(可在此设置 DASHSCOPE_API_KEY=sk-xxx,勿提交 .env)
|
||
[ -f .env ] && set -a && . ./.env && set +a
|
||
|
||
# AI 模式:有 DASHSCOPE_API_KEY 时用通义(商业模型,无需 Ollama);否则用 Ollama 或规则
|
||
export CLEANER_AI_DISABLED=0
|
||
export PARSER_AI_DISABLED=0
|
||
# GDELT 国内常超时,仅用 RSS 更新(如需 GDELT 可改为 0)
|
||
export GDELT_DISABLED=1
|
||
export RSS_INTERVAL_SEC=60
|
||
|
||
echo "==> Checking dependencies..."
|
||
[ ! -d node_modules ] && npm install
|
||
|
||
echo "==> Checking crawler Python deps..."
|
||
pip install -q -r crawler/requirements.txt 2>/dev/null || true
|
||
|
||
echo "==> Seeding database (if needed)..."
|
||
# 若指定了 DB_PATH,则以 DB_PATH 为准;否则默认使用 server/data.db
|
||
DB_FILE_PATH="${DB_PATH:-server/data.db}"
|
||
if [ ! -f "$DB_FILE_PATH" ]; then
|
||
echo " - DB file not found at $DB_FILE_PATH, running api:seed once"
|
||
npm run api:seed
|
||
else
|
||
echo " - Existing DB detected at $DB_FILE_PATH, skip seeding"
|
||
fi
|
||
|
||
echo "==> Starting API (http://localhost:3001)..."
|
||
npm run api &
|
||
API_PID=$!
|
||
|
||
# 等待 API 就绪后再启动爬虫
|
||
sleep 2
|
||
|
||
echo "==> Starting GDELT/RSS crawler (http://localhost:8000)..."
|
||
npm run gdelt &
|
||
GDELT_PID=$!
|
||
|
||
echo "==> Starting frontend (Vite dev server)..."
|
||
npm run dev &
|
||
DEV_PID=$!
|
||
|
||
cleanup() {
|
||
echo ""
|
||
echo "==> Shutting down..."
|
||
kill $API_PID $GDELT_PID $DEV_PID 2>/dev/null || true
|
||
exit 0
|
||
}
|
||
trap cleanup SIGINT SIGTERM
|
||
|
||
echo ""
|
||
echo "==> All services running. Frontend: http://localhost:5173 | API: http://localhost:3001"
|
||
echo " Press Ctrl+C to stop all."
|
||
echo ""
|
||
wait
|