43 lines
1.9 KiB
Bash
43 lines
1.9 KiB
Bash
#!/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 "✅ 验证完成"
|