#!/usr/bin/env bash # 上传后自检:代码是否到位、.env 是否含 Flock、容器是否在跑旧镜像 # 用法:cd /home/project/chajia && bash deploy/verify-upload-bt-host-mysql.sh set -euo pipefail ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)" ENV_FILE="${ROOT_DIR}/.env" COMPOSE_FILE="${ROOT_DIR}/deploy/docker-compose.bt-host-mysql.yml" RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' ok() { echo -e "${GREEN}[OK]${NC} $*"; } bad() { echo -e "${RED}[缺]${NC} $*"; } warn() { echo -e "${YELLOW}[注意]${NC} $*"; } cd "$ROOT_DIR" fail=0 echo "=== 1) 磁盘上的新代码(上传是否落到正确目录)===" for p in \ "app/api/flock/quotes/route.ts" \ "workers/rpa/flock-freight.ts" \ "workers/rpa/mothership-logged-in-quote.ts" \ "deploy/update-code-only-bt-host-mysql.sh" \ "deploy/datagrip-manual-migrate-20260716.sql" do if [[ -f "$ROOT_DIR/$p" ]]; then ok "有 $p"; else bad "无 $p"; fail=1; fi done echo "" echo "=== 2) .env 新参数(不重建也会导致前端看不到 Flock)===" if [[ ! -f "$ENV_FILE" ]]; then bad "没有 .env" fail=1 else for key in FLOCK_RPA_ENABLED FLOCK_QUOTE_MODE NEXT_PUBLIC_FLOCK_POLL_TIMEOUT_MS; do if grep -qE "^[[:space:]]*${key}=" "$ENV_FILE"; then ok "$key=$(grep -E "^[[:space:]]*${key}=" "$ENV_FILE" | tail -1 | cut -d= -f2-)" else bad ".env 缺少 $key" fail=1 fi done if grep -qE "^[[:space:]]*RPA_BROWSER_CHANNEL=chrome" "$ENV_FILE"; then bad "存在 RPA_BROWSER_CHANNEL=chrome(Docker 会挂,请删除)" fail=1 else ok "未设置 RPA_BROWSER_CHANNEL=chrome" fi fi echo "" echo "=== 3) 容器是否在跑(上传源码不会自动进镜像)===" if docker compose --env-file "$ENV_FILE" -f "$COMPOSE_FILE" ps 2>/dev/null | grep -q next-app; then docker compose --env-file "$ENV_FILE" -f "$COMPOSE_FILE" ps warn "若刚上传代码但未执行 update-code-only,容器仍是旧镜像 → 页面无新功能" else bad "compose 未检测到 next-app,请检查路径/compose 文件" fail=1 fi echo "" echo "=== 4) 结论 ===" if [[ $fail -ne 0 ]]; then bad "自检未通过。先补齐缺失项,再执行:" echo " bash deploy/update-code-only-bt-host-mysql.sh" exit 1 fi ok "磁盘代码与 .env 看起来齐全。" warn "若页面仍是旧版:必须重建镜像(上传 ≠ 生效):" echo " bash deploy/update-code-only-bt-host-mysql.sh" echo " docker compose --env-file .env -f deploy/docker-compose.bt-host-mysql.yml exec redis redis-cli FLUSHDB"