fix: update

This commit is contained in:
Daniel
2026-03-03 17:27:55 +08:00
parent 29c921f498
commit 1764a44eb3
22 changed files with 818 additions and 30 deletions

View File

@@ -0,0 +1,61 @@
#!/usr/bin/env bash
# 检查爬虫数据与面板数据是否联通
# 用法: ./scripts/check-crawler-panel-connectivity.sh
# 需先启动: npm run api可选: npm run gdelt
set -e
API_URL="${API_URL:-http://localhost:3001}"
CRAWLER_URL="${CRAWLER_URL:-http://localhost:8000}"
echo "=========================================="
echo "爬虫 ↔ 面板 联通检查"
echo "API: $API_URL | Crawler: $CRAWLER_URL"
echo "=========================================="
# 1. 爬虫侧situation_update 条数
CRAWLER_SU_COUNT=""
if curl -sf "$CRAWLER_URL/crawler/status" >/dev/null 2>&1; then
if command -v jq &>/dev/null; then
CRAWLER_SU_COUNT=$(curl -sf "$CRAWLER_URL/crawler/status" | jq -r '.situation_update_count // "?"')
else
CRAWLER_SU_COUNT="(需 jq 查看)"
fi
echo "[爬虫] situation_update 条数: $CRAWLER_SU_COUNT"
else
echo "[爬虫] 未启动或不可达 (curl $CRAWLER_URL/crawler/status 失败)"
fi
# 2. 面板侧API 返回的 recentUpdates 条数、lastUpdated
if ! curl -sf "$API_URL/api/health" >/dev/null 2>&1; then
echo "[API] 未启动,请先运行: npm run api"
exit 1
fi
SIT=$(curl -sf "$API_URL/api/situation" 2>/dev/null || echo "{}")
if command -v jq &>/dev/null; then
RU_LEN=$(echo "$SIT" | jq '.recentUpdates | length')
LAST=$(echo "$SIT" | jq -r '.lastUpdated // "?"')
echo "[面板] recentUpdates 条数: $RU_LEN | lastUpdated: $LAST"
else
echo "[面板] 态势数据已获取 (安装 jq 可显示条数)"
fi
# 3. 一致性:爬虫写的是 server/data.dbNode 通过 notify 重载后应一致
echo ""
echo "--- 联动说明 ---"
echo " • 事件脉络 (recentUpdates) ← situation_update 表,由爬虫 write_updates() 写入"
echo " • 爬虫每次抓取后会 POST $API_URL/api/crawler/notifyNode 会 reloadFromFile() 后广播"
echo " • 若爬虫有数据但面板 recentUpdates 很少/为空:检查 Node 终端是否出现 [crawler/notify] DB 已重载"
echo " • 若从未出现:检查 API_BASE 是否指向当前 API默认 http://localhost:3001"
echo " • 战损/基地/力量指数:仅当 AI/规则从新闻中提取到数字时才会更新,多数新闻不会触发"
echo "=========================================="
# 4. 可选:触发一次 notify 看 Node 是否重载(不启动爬虫时可用于测试)
# 非交互时跳过;交互时可用: echo y | ./scripts/check-crawler-panel-connectivity.sh
if [[ -t 0 ]]; then
echo ""
read -r -p "是否发送一次 POST /api/crawler/notify 测试 Node 重载? [y/N] " ans
if [[ "${ans,,}" = "y" ]]; then
curl -sf -X POST "$API_URL/api/crawler/notify" && echo " 已发送 notify请看 Node 终端是否打印 [crawler/notify] DB 已重载"
fi
fi