fix:对齐生产环境的数据字段

This commit is contained in:
Daniel
2026-03-04 19:19:50 +08:00
parent 26938449f0
commit a3bf8abda5
4 changed files with 421 additions and 0 deletions

View File

@@ -0,0 +1,64 @@
#!/usr/bin/env bash
# 检查攻击地点/打击线是否完整(与 seed.js 一致)
# 用法: DB_PATH=server/data.db ./scripts/check-attack-locations.sh
# 裸机: cd /root/usa && ./scripts/check-attack-locations.sh
set -e
PROJECT_ROOT="${PROJECT_ROOT:-$(cd "$(dirname "$0")/.." && pwd)}"
DB_PATH="${DB_PATH:-$PROJECT_ROOT/server/data.db}"
echo "=========================================="
echo "攻击地点 / 打击线 检查"
echo "DB: $DB_PATH"
echo "=========================================="
if [[ ! -f "$DB_PATH" ]]; then
echo "错误: 数据库文件不存在"
exit 1
fi
if ! command -v sqlite3 &>/dev/null; then
echo "需要 sqlite3。安装: yum install sqlite 或 apt install sqlite3"
exit 1
fi
# 期望数量(与 server/seed.js 一致)
EXPECT_US=62 # getUsLocations: naval + attacked + newBases
EXPECT_IRAN=18 # iranLocs 条数
EXPECT_ISRAEL=4
EXPECT_LINCOLN=5
EXPECT_FORD=7
n_us=$(sqlite3 "$DB_PATH" "SELECT COUNT(*) FROM key_location WHERE side='us';" 2>/dev/null || echo "0")
n_iran=$(sqlite3 "$DB_PATH" "SELECT COUNT(*) FROM key_location WHERE side='iran';" 2>/dev/null || echo "0")
n_israel=$(sqlite3 "$DB_PATH" "SELECT COUNT(*) FROM map_strike_line WHERE source_id='israel';" 2>/dev/null || echo "0")
n_lincoln=$(sqlite3 "$DB_PATH" "SELECT COUNT(*) FROM map_strike_line WHERE source_id='lincoln';" 2>/dev/null || echo "0")
n_ford=$(sqlite3 "$DB_PATH" "SELECT COUNT(*) FROM map_strike_line WHERE source_id='ford';" 2>/dev/null || echo "0")
echo ""
echo "key_location:"
echo " us (美军基地等): 当前 $n_us 条,期望 $EXPECT_US"
echo " iran (伊朗被袭点): 当前 $n_iran 条,期望 $EXPECT_IRAN"
echo ""
echo "map_strike_line (盟军打击伊朗):"
echo " israel: 当前 $n_israel 条,期望 $EXPECT_ISRAEL"
echo " lincoln: 当前 $n_lincoln 条,期望 $EXPECT_LINCOLN"
echo " ford: 当前 $n_ford 条,期望 $EXPECT_FORD"
echo "=========================================="
ok=0
[[ "$n_us" -ge "$EXPECT_US" ]] && [[ "$n_iran" -ge "$EXPECT_IRAN" ]] && \
[[ "$n_israel" -ge "$EXPECT_ISRAEL" ]] && [[ "$n_lincoln" -ge "$EXPECT_LINCOLN" ]] && \
[[ "$n_ford" -ge "$EXPECT_FORD" ]] && ok=1
if [[ $ok -eq 1 ]]; then
echo "结论: 攻击地点/打击线数量正常"
exit 0
fi
echo "结论: 数量不足,请在生产执行 seed 以与当前代码一致:"
echo " cd $PROJECT_ROOT"
echo " cp server/data.db server/data.db.bak-\$(date +%Y%m%d-%H%M%S)"
echo " DB_PATH=server/data.db node server/seed.js"
echo " 重启 API 后刷新页面"
exit 1