完成五人团队正式内用最小收口(07-18-small-team-internal-readiness)
这个提交包含在:
+66
-7
@@ -19,6 +19,8 @@ QA_DB_DOCKER_CONTAINER="${QA_DB_DOCKER_CONTAINER:-hyb-oa-trialrun-db}"
|
||||
QA_DOCKER_USE_SG="${QA_DOCKER_USE_SG:-0}"
|
||||
if [[ "$MODE" == "auth-security-local" ]]; then
|
||||
DEFAULT_QA_DB_PREFIX="hyb_oa_auth"
|
||||
elif [[ "$MODE" == "payment-concurrency-local" ]]; then
|
||||
DEFAULT_QA_DB_PREFIX="hyb_oa_payment"
|
||||
else
|
||||
DEFAULT_QA_DB_PREFIX="hyb_oa_webgate"
|
||||
fi
|
||||
@@ -46,7 +48,7 @@ qa_require_cmd() {
|
||||
|
||||
qa_usage() {
|
||||
cat <<USAGE
|
||||
Usage: bash scripts/qa/run-web-gates.sh <smoke-local|full-local|auth-security-local|business-flow-local|project-wide-visual-local|qg6-visual-matrix-local|r70-assist-local|r106-visual-local|r108-mobile-local|r109-mobile-local|r110-mobile-local|smoke-live>
|
||||
Usage: bash scripts/qa/run-web-gates.sh <smoke-local|full-local|auth-security-local|payment-concurrency-local|business-flow-local|project-wide-visual-local|qg6-visual-matrix-local|r70-assist-local|r106-visual-local|r108-mobile-local|r109-mobile-local|r110-mobile-local|smoke-live>
|
||||
|
||||
可选环境变量:
|
||||
QA_PORT / QA_HOST
|
||||
@@ -223,13 +225,9 @@ qa_dropdb() {
|
||||
return 0
|
||||
fi
|
||||
|
||||
if ! qa_psql -c "SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = '${QA_DB_NAME}' AND pid <> pg_backend_pid();" >/dev/null; then
|
||||
echo "[ERROR] 临时数据库连接清理失败" >&2
|
||||
return 1
|
||||
fi
|
||||
if [[ "$QA_DB_CLIENT" == "docker" ]]; then
|
||||
if ! qa_docker exec -e "PGPASSWORD=$QA_DB_PASSWORD" "$QA_DB_DOCKER_CONTAINER" \
|
||||
dropdb --if-exists -U "$QA_DB_USER" "$QA_DB_NAME" >/dev/null; then
|
||||
dropdb --force --if-exists -U "$QA_DB_USER" "$QA_DB_NAME" >/dev/null; then
|
||||
echo "[ERROR] 临时数据库删除失败" >&2
|
||||
return 1
|
||||
fi
|
||||
@@ -237,7 +235,7 @@ qa_dropdb() {
|
||||
return
|
||||
fi
|
||||
|
||||
if ! PGPASSWORD="$QA_DB_PASSWORD" dropdb --if-exists -h "$QA_DB_HOST" -p "$QA_DB_PORT" -U "$QA_DB_USER" "$QA_DB_NAME" >/dev/null; then
|
||||
if ! PGPASSWORD="$QA_DB_PASSWORD" dropdb --force --if-exists -h "$QA_DB_HOST" -p "$QA_DB_PORT" -U "$QA_DB_USER" "$QA_DB_NAME" >/dev/null; then
|
||||
echo "[ERROR] 临时数据库删除失败" >&2
|
||||
return 1
|
||||
fi
|
||||
@@ -391,6 +389,59 @@ qa_run_auth_security_local() {
|
||||
)
|
||||
}
|
||||
|
||||
qa_run_payment_concurrency_local() {
|
||||
case "$QA_DB_HOST" in
|
||||
127.0.0.1|localhost|::1) ;;
|
||||
*)
|
||||
echo "[ERROR] payment-concurrency-local 只允许 loopback PostgreSQL" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
if [[ ! "$QA_DB_NAME" =~ ^hyb_oa_payment_[A-Za-z0-9_]+$ ]]; then
|
||||
echo "[ERROR] payment-concurrency-local 数据库名必须使用 hyb_oa_payment_ 前缀" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
qa_select_port
|
||||
export JOBS_ENABLED=false
|
||||
export RATE_LIMIT_ENABLED=false
|
||||
export TRUST_PROXY_HOPS=0
|
||||
export PAYMENT_BATCH_ENABLED=true
|
||||
export ERP_SYNC_ENABLED=false
|
||||
export SERVE_CLIENT_DIST=false
|
||||
unset JWT_SECRET AUTH_CODE_PEPPER FIELD_ENCRYPTION_KEY
|
||||
qa_export_app_env
|
||||
export SERVE_CLIENT_DIST=false
|
||||
export METRICS_ENABLED=false
|
||||
export EMAIL_ENABLED=false
|
||||
export SMTP_HOST=""
|
||||
export SMTP_PORT=""
|
||||
export SMTP_SECURE=false
|
||||
export SMTP_USER=""
|
||||
export SMTP_PASS=""
|
||||
export IM_NOTIFIER_ENABLED=false
|
||||
export WECOM_ENABLED=false
|
||||
export WECOM_AGENT_SECRET=""
|
||||
export WECOM_CONTACT_SECRET=""
|
||||
export WECOM_HR_ASSISTANT_SECRET=""
|
||||
export OIDC_ENABLED=false
|
||||
export OIDC_CLIENT_SECRET=""
|
||||
export STORAGE_DRIVER=local
|
||||
JWT_SECRET="$(node -e 'process.stdout.write(require("node:crypto").randomBytes(32).toString("hex"))')"
|
||||
AUTH_CODE_PEPPER="$(node -e 'process.stdout.write(require("node:crypto").randomBytes(32).toString("hex"))')"
|
||||
FIELD_ENCRYPTION_KEY="$(node -e 'process.stdout.write(require("node:crypto").randomBytes(32).toString("base64"))')"
|
||||
export JWT_SECRET AUTH_CODE_PEPPER FIELD_ENCRYPTION_KEY
|
||||
export PAYMENT_CONCURRENCY_DATABASE_CONFIRM="$QA_DB_NAME"
|
||||
|
||||
qa_prepare_db
|
||||
|
||||
echo ">>> 执行付款真实 PostgreSQL 并发回归"
|
||||
(
|
||||
cd "$SERVER_DIR"
|
||||
RUN_PAYMENT_POSTGRES_CONCURRENCY=1 node src/scripts/check-payment-postgres-concurrency.js
|
||||
)
|
||||
}
|
||||
|
||||
qa_prepare_db() {
|
||||
echo ">>> 生成并校验 Prisma Client"
|
||||
(
|
||||
@@ -725,6 +776,14 @@ case "$MODE" in
|
||||
trap qa_cleanup EXIT
|
||||
qa_run_auth_security_local
|
||||
;;
|
||||
payment-concurrency-local)
|
||||
qa_require_cmd curl
|
||||
qa_require_db_client
|
||||
qa_require_cmd node
|
||||
qa_require_cmd npm
|
||||
trap qa_cleanup EXIT
|
||||
qa_run_payment_concurrency_local
|
||||
;;
|
||||
business-flow-local)
|
||||
qa_require_cmd curl
|
||||
qa_require_db_client
|
||||
|
||||
在新工单中引用
屏蔽一个用户