Files

43 lines
1.9 KiB
Bash
Raw Permalink Normal View History

2026-09-09 22:05:00 +08:00
#!/bin/bash
# V1.1 部署验证脚本
BASE="http://localhost:8085/api/v1"
echo "========================================"
echo " 善缘丹阳 V1.1 部署验证"
echo "========================================"
# Check containers
echo ""
echo "【容器状态】"
docker ps --format " {{.Names}}\t{{.Status}}" | grep danyang
# Health check
echo ""
echo "【API健康】"
HEALTH=$(curl -s "$BASE/health/live")
echo " 后端: $(echo $HEALTH | python3 -c 'import sys,json;print(json.load(sys.stdin)["data"]["status"])' 2>/dev/null || echo 'FAIL')"
ADMIN_CODE=$(curl -s -o /dev/null -w '%{http_code}' http://localhost:8086/)
echo " Admin: HTTP $ADMIN_CODE"
# Login and test. Credentials must be supplied by the caller; never embed defaults.
: "${OPERATOR_USERNAME:?请设置 OPERATOR_USERNAME}"
: "${OPERATOR_PASSWORD:?请设置 OPERATOR_PASSWORD}"
LOGIN_BODY=$(python3 -c 'import json,os; print(json.dumps({"username":os.environ["OPERATOR_USERNAME"],"password":os.environ["OPERATOR_PASSWORD"]}))')
TOKEN=$(curl -s -X POST "$BASE/auth/operator/login" -H "Content-Type: application/json" -d "$LOGIN_BODY" | python3 -c 'import sys,json;print(json.load(sys.stdin)["data"]["token"])')
H="Authorization: Bearer $TOKEN"
echo ""
echo "【核心API验证】"
for endpoint in "/home" "/content/categories" "/operator/analytics/v11-dashboard" "/operator/feature-flags"; do
STATUS=$(curl -s -H "$H" "$BASE$endpoint" | python3 -c 'import sys,json;d=json.load(sys.stdin);print("OK" if d.get("success") else "FAIL")' 2>/dev/null)
echo " $endpoint → $STATUS"
done
echo ""
echo "【数据库记录】"
docker exec danyang-match-postgres psql -U postgres -d danyang_match -t -c \
"SELECT ' operators: ' || COUNT(*) FROM operators UNION ALL SELECT ' users: ' || COUNT(*) FROM users UNION ALL SELECT ' banners: ' || COUNT(*) FROM home_banners UNION ALL SELECT ' categories: ' || COUNT(*) FROM content_categories;" 2>/dev/null
echo ""
echo "✅ 验证完成"