#!/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 "✅ 验证完成"