#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" SERVER_DIR="$ROOT_DIR/server" REPORT_DIR="${MIGRATION_DRIFT_REPORT_DIR:-$ROOT_DIR/artifacts/qa-flow/migration-drift-$(date +%Y%m%d-%H%M%S)}" STATUS_LOG="$REPORT_DIR/prisma-migrate-status.txt" mkdir -p "$REPORT_DIR" echo ">>> [migration-drift] Prisma migrate status(只读)" set +e ( cd "$SERVER_DIR" npx prisma migrate status ) >"$STATUS_LOG" 2>&1 status=$? set -e cat "$STATUS_LOG" if [[ "$status" -eq 0 ]]; then echo "[migration-drift][PASS] 当前 DATABASE_URL 对应数据库与迁移目录一致" echo "[migration-drift] report=$STATUS_LOG" exit 0 fi echo "[migration-drift][WARN] Prisma migrate status 返回非 0:$status" echo "[migration-drift][WARN] 未执行 migrate reset,也未修改数据库。" echo "[migration-drift][WARN] 安全替代回归命令:bash scripts/qa/run-isolated-regression-dedup.sh" echo "[migration-drift][WARN] 若确需重建本地开发库,必须先人工确认备份与影响范围。" echo "[migration-drift] report=$STATUS_LOG" if [[ "${MIGRATION_DRIFT_STRICT:-0}" == "1" ]]; then exit "$status" fi exit 0