Files
QuestionProject/ai_knowledge_base_v2/scripts/phase6_verify.sh

54 lines
1.6 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
echo "== 后端编译检查 =="
cd "$ROOT_DIR/apps/backend"
./.venv/bin/python -m compileall app
echo "== 后端 OpenAPI 检查 =="
DATABASE_URL=sqlite:///:memory: ./.venv/bin/python - <<'PY'
from app.main import app
paths = app.openapi().get("paths", {})
print(f"OpenAPI paths: {len(paths)}")
assert len(paths) >= 32
PY
echo "== 后端关键测试 =="
./.venv/bin/python -m pytest -q
echo "== Alembic MySQL 静态 SQL 检查 =="
./.venv/bin/alembic upgrade head --sql >/tmp/ai_kb_v2_migration.sql
wc -l /tmp/ai_kb_v2_migration.sql
echo "== 用户端 H5 构建 =="
cd "$ROOT_DIR/apps/user-client"
npm run build
echo "== 管理后台构建 =="
cd "$ROOT_DIR/apps/admin-web"
npm run build
echo "== Docker Compose 配置检查 =="
cd "$ROOT_DIR"
docker compose -f docker-compose.dev.yml config --quiet
echo "== 生产 Docker Compose 配置检查 =="
MYSQL_ROOT_PASSWORD=test-root \
MYSQL_PASSWORD=test-db \
REDIS_PASSWORD=test-redis \
DATABASE_URL='mysql+pymysql://ai_kb:test-db@mysql:3306/ai_knowledge_base_v2?charset=utf8mb4' \
REDIS_URL='redis://:test-redis@redis:6379/0' \
JWT_SECRET_KEY='test-jwt-secret-at-least-32-characters' \
CONFIG_ENCRYPTION_KEY='MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA=' \
BOOTSTRAP_ADMIN_USERNAME=admin \
BOOTSTRAP_ADMIN_PASSWORD='Strong-Test-Password-2026' \
docker compose -f docker-compose.prod.yml config --quiet
echo "== 备份恢复脚本语法检查 =="
bash -n scripts/mysql_backup.sh
bash -n scripts/mysql_restore.sh
echo "阶段六自动验证完成"