From 75c54466d485b6e828d12c9dc4c50379c76a78ff Mon Sep 17 00:00:00 2001 From: Nelson <1475262689@qq.com> Date: Fri, 10 Jul 2026 12:18:35 +0800 Subject: [PATCH] =?UTF-8?q?test:=20=E5=A2=9E=E5=8A=A0=E7=94=9F=E4=BA=A7?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E5=86=92=E7=83=9F=E6=A3=80=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../deployment/RELEASE_CHECKLIST.md | 5 +++ ai_knowledge_base_v2/scripts/phase6_verify.sh | 1 + .../scripts/production_smoke_test.sh | 37 +++++++++++++++++++ 3 files changed, 43 insertions(+) create mode 100755 ai_knowledge_base_v2/scripts/production_smoke_test.sh diff --git a/ai_knowledge_base_v2/deployment/RELEASE_CHECKLIST.md b/ai_knowledge_base_v2/deployment/RELEASE_CHECKLIST.md index 18c32b8..cd91b1f 100644 --- a/ai_knowledge_base_v2/deployment/RELEASE_CHECKLIST.md +++ b/ai_knowledge_base_v2/deployment/RELEASE_CHECKLIST.md @@ -30,6 +30,8 @@ - [ ] 启动管理后台。 - [ ] 启动统一入口 gateway。 - [ ] 检查 `域名/api/health` 后端健康接口。 +- [ ] 检查 `域名/api/ready` 返回数据库和 Redis 均就绪。 +- [ ] 执行 `BASE_URL=https://正式域名 ./scripts/production_smoke_test.sh`。 ## 发布后 @@ -45,6 +47,9 @@ - [ ] 管理后台可以新增知识库。 - [ ] AI 请求日志有记录。 - [ ] 操作日志有记录。 +- [ ] 访问日志为单行 JSON,且可用响应头中的 `X-Request-ID` 定位同一次请求。 +- [ ] 已确认备份任务生成 `.sql.gz` 和对应 `.sha256` 文件。 +- [ ] 已完成至少一次隔离数据库恢复演练。 ## 回滚触发条件 diff --git a/ai_knowledge_base_v2/scripts/phase6_verify.sh b/ai_knowledge_base_v2/scripts/phase6_verify.sh index 4d6efaa..9145960 100755 --- a/ai_knowledge_base_v2/scripts/phase6_verify.sh +++ b/ai_knowledge_base_v2/scripts/phase6_verify.sh @@ -49,5 +49,6 @@ docker compose -f docker-compose.prod.yml config --quiet echo "== 备份恢复脚本语法检查 ==" bash -n scripts/mysql_backup.sh bash -n scripts/mysql_restore.sh +bash -n scripts/production_smoke_test.sh echo "阶段六自动验证完成" diff --git a/ai_knowledge_base_v2/scripts/production_smoke_test.sh b/ai_knowledge_base_v2/scripts/production_smoke_test.sh new file mode 100755 index 0000000..61b779d --- /dev/null +++ b/ai_knowledge_base_v2/scripts/production_smoke_test.sh @@ -0,0 +1,37 @@ +#!/usr/bin/env bash +set -euo pipefail + +BASE_URL="${BASE_URL:-http://127.0.0.1:8080}" +BASE_URL="${BASE_URL%/}" +temporary_dir="$(mktemp -d)" +trap 'rm -rf "$temporary_dir"' EXIT + +check_json_status() { + local path="$1" + local expected="$2" + local output="$temporary_dir/response.json" + local headers="$temporary_dir/headers.txt" + curl --fail --silent --show-error --max-time 10 -D "$headers" -o "$output" "$BASE_URL$path" + grep -qi '^x-request-id:' "$headers" + grep -q "\"status\":\"$expected\"" "$output" + echo "通过:$path" +} + +check_page() { + local path="$1" + local output="$2" + curl --fail --silent --show-error --max-time 10 -o "$output" "$BASE_URL$path" + grep -qi '