77 lines
2.1 KiB
Bash
Executable File
77 lines
2.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# gaokao-production-doctor.sh
|
|
# 检查生产部署前置条件,返回 ready / not-ready + 缺失项清单。
|
|
# 用法: bash scripts/gaokao-production-doctor.sh [--env-file .env]
|
|
|
|
ENV_FILE="${1:-}"
|
|
if [ -n "$ENV_FILE" ] && [ -f "$ENV_FILE" ]; then
|
|
set -a; source "$ENV_FILE"; set +a
|
|
fi
|
|
|
|
PASS=0
|
|
FAIL=0
|
|
MISSING=()
|
|
|
|
check() {
|
|
local name="$1"
|
|
local value="${!2:-}"
|
|
if [ -n "$value" ] && [ "$value" != "mock" ] && [ "$value" != "dev" ]; then
|
|
echo " [PASS] $name"
|
|
PASS=$((PASS + 1))
|
|
else
|
|
echo " [FAIL] $name (empty or placeholder)"
|
|
FAIL=$((FAIL + 1))
|
|
MISSING+=("$name")
|
|
fi
|
|
}
|
|
|
|
echo "=== Gaokao Production Readiness Doctor ==="
|
|
echo ""
|
|
|
|
echo "--- Environment ---"
|
|
check "GAOKAO_ENV" GAOKAO_ENV
|
|
|
|
echo ""
|
|
echo "--- Security Keys ---"
|
|
check "GAOKAO_JWT_SECRET" GAOKAO_JWT_SECRET
|
|
check "GAOKAO_PORTAL_TOKEN_SECRET" GAOKAO_PORTAL_TOKEN_SECRET
|
|
check "GAOKAO_ORDERS_FERNET_KEY" GAOKAO_ORDERS_FERNET_KEY
|
|
check "GAOKAO_ADMIN_PASS" GAOKAO_ADMIN_PASS
|
|
|
|
echo ""
|
|
echo "--- Payment (alipay) ---"
|
|
check "GAOKAO_PAYMENT_PROVIDER" GAOKAO_PAYMENT_PROVIDER
|
|
check "GAOKAO_PAYMENT_APP_ID" GAOKAO_PAYMENT_APP_ID
|
|
check "GAOKAO_PAYMENT_PRIVATE_KEY_PATH" GAOKAO_PAYMENT_PRIVATE_KEY_PATH
|
|
check "GAOKAO_PAYMENT_ALIPAY_PUBLIC_KEY_PATH" GAOKAO_PAYMENT_ALIPAY_PUBLIC_KEY_PATH
|
|
check "GAOKAO_PAYMENT_NOTIFY_URL" GAOKAO_PAYMENT_NOTIFY_URL
|
|
check "GAOKAO_PAYMENT_RETURN_URL" GAOKAO_PAYMENT_RETURN_URL
|
|
check "GAOKAO_PAYMENT_WEBHOOK_SECRET" GAOKAO_PAYMENT_WEBHOOK_SECRET
|
|
|
|
echo ""
|
|
echo "--- LLM ---"
|
|
check "GAOKAO_LLM_PROVIDER" GAOKAO_LLM_PROVIDER
|
|
check "GAOKAO_LLM_API_KEY" GAOKAO_LLM_API_KEY
|
|
|
|
echo ""
|
|
echo "--- SMTP / Alert ---"
|
|
check "GAOKAO_SMTP_HOST" GAOKAO_SMTP_HOST
|
|
check "GAOKAO_SMTP_SENDER" GAOKAO_SMTP_SENDER
|
|
check "GAOKAO_ALERT_RECIPIENTS" GAOKAO_ALERT_RECIPIENTS
|
|
|
|
echo ""
|
|
echo "--- Summary ---"
|
|
echo "PASS: $PASS"
|
|
echo "FAIL: $FAIL"
|
|
if [ "$FAIL" -gt 0 ]; then
|
|
echo "MISSING: ${MISSING[*]}"
|
|
echo ""
|
|
echo "RESULT: NOT READY — 请补全上述缺失的外部凭证后重新运行。"
|
|
exit 1
|
|
else
|
|
echo "RESULT: READY — 所有前置条件已满足,可以执行生产部署。"
|
|
exit 0
|
|
fi
|