Files
gaokao-volunteer-system/scripts/gaokao-production-doctor.sh
Hermes Agent 223177fb13
Some checks failed
CI / pytest (Python 3.10) (push) Has been cancelled
CI / pytest (Python 3.11) (push) Has been cancelled
CI / pytest (Python 3.12) (push) Has been cancelled
docs(ops): production readiness doctor + checklist update + env example
2026-07-06 17:09:14 +08:00

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