diff --git a/.gitea/workflows/daily-check.yml b/.gitea/workflows/daily-check.yml index 766e5577d..2f147825f 100644 --- a/.gitea/workflows/daily-check.yml +++ b/.gitea/workflows/daily-check.yml @@ -341,124 +341,6 @@ jobs: report: ${{ steps.report.outputs.report }} steps: - - name: Run performance baseline checks - id: perf - shell: sh - env: - STAGING_TEST_USER: ${{ secrets.STAGING_TEST_USER }} - STAGING_TEST_PASSWORD: ${{ secrets.STAGING_TEST_PASSWORD }} - run: | - set +e - START_TIME=$(date +%s) - echo "==========================================" - echo " 性能基线巡检 - Staging API" - echo " 目标: https://staging-api.xiaoxiajianji.com" - echo "==========================================" - echo "" - - TOTAL=0 - PASS=0 - FAIL=0 - WARN=0 - WARN_LIST="" - FAIL_LIST="" - - # 核心接口配置: 名称|路径|方法|阈值(ms)|失败阈值(ms) - # 核心接口(core): 500ms - # 普通接口(normal): 1000ms - # 重操作接口(heavy): 3000ms - ENDPOINTS=" - 登录|/api/v1/auth/login|POST|500|3000 - 获取当前用户|/api/v1/auth/me|GET|500|3000 - 项目列表|/api/v1/projects|GET|500|3000 - 素材列表|/api/v1/assets|GET|500|3000 - 模板列表|/api/v1/templates|GET|500|3000 - 剪辑计划列表|/api/v1/edit-plans|GET|500|3000 - 生成任务列表|/api/v1/generation/tasks|GET|500|3000 - 订阅信息|/api/v1/subscription/current|GET|500|3000 - 音色列表|/api/v1/voices|GET|1000|5000 - 健康检查|/health|GET|200|1000 - " - - # 先登录获取 token - echo "--- 准备: 获取测试 Token ---" - AUTH_RESP=$(curl -s -w "\n%{http_code}" -X POST \ - -H "Content-Type: application/json" \ - -d "{"email":"${STAGING_TEST_USER}","password":"${STAGING_TEST_PASSWORD}"}" \ - "https://staging-api.xiaoxiajianji.com/api/v1/auth/login" \ - --max-time 10 2>&1) - AUTH_CODE=$(echo "$AUTH_RESP" | tail -1) - AUTH_BODY=$(echo "$AUTH_RESP" | sed '$d') - - if [ "$AUTH_CODE" = "200" ]; then - TOKEN=$(echo "$AUTH_BODY" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('access_token',''))" 2>/dev/null) - if [ -n "$TOKEN" ]; then - echo "Token 获取成功" - else - echo "Token 解析失败,部分接口可能无法测试" - TOKEN="" - fi - else - echo "登录失败 (HTTP $AUTH_CODE),部分接口将跳过鉴权测试" - TOKEN="" - fi - - echo "" - echo "--- 开始性能测试 ---" - echo "" - - echo "$ENDPOINTS" | while IFS='|' read -r name path method warn_ms fail_ms; do - [ -z "$name" ] && continue - TOTAL=$((TOTAL + 1)) - - # 构建 curl 命令 - CURL_ARGS="-s -o /dev/null -w '%{http_code} %{time_total}' --max-time 30" - if [ "$method" = "POST" ]; then - CURL_ARGS="$CURL_ARGS -X POST -H 'Content-Type: application/json' -d '{\"email\":\"${STAGING_TEST_USER}\",\"password\":\"${STAGING_TEST_PASSWORD}\"}'" - fi - if [ -n "$TOKEN" ] && [ "$name" != "健康检查" ]; then - CURL_ARGS="$CURL_ARGS -H 'Authorization: Bearer $TOKEN'" - fi - - # 执行请求 - RESP=$(eval curl $CURL_ARGS "https://staging-api.xiaoxiajianji.com${path}" 2>&1) - HTTP_CODE=$(echo "$RESP" | awk '{print $1}') - TIME_TOTAL=$(echo "$RESP" | awk '{print $2}') - ELAPSED_MS=$(python3 -c "print(int(float('${TIME_TOTAL:-0}') * 1000))" 2>/dev/null || echo "0") - - if [ "$HTTP_CODE" -ge 500 ] 2>/dev/null; then - FAIL=$((FAIL + 1)) - FAIL_LIST="$FAIL_LIST\n ❌ $name - HTTP $HTTP_CODE (${ELAPSED_MS}ms)" - echo "❌ $name - HTTP $HTTP_CODE - ${ELAPSED_MS}ms (FAIL)" - elif [ "$ELAPSED_MS" -ge "$fail_ms" ] 2>/dev/null; then - FAIL=$((FAIL + 1)) - FAIL_LIST="$FAIL_LIST\n ❌ $name - ${ELAPSED_MS}ms > ${fail_ms}ms" - echo "❌ $name - ${ELAPSED_MS}ms > ${fail_ms}ms (FAIL)" - elif [ "$ELAPSED_MS" -ge "$warn_ms" ] 2>/dev/null; then - WARN=$((WARN + 1)) - WARN_LIST="$WARN_LIST\n ⚠️ $name - ${ELAPSED_MS}ms > ${warn_ms}ms" - echo "⚠️ $name - ${ELAPSED_MS}ms (WARN, threshold: ${warn_ms}ms)" - PASS=$((PASS + 1)) - else - PASS=$((PASS + 1)) - echo "✅ $name - ${ELAPSED_MS}ms (OK, threshold: ${warn_ms}ms)" - fi - done - - # 由于 while 在子 shell 中执行,用文件传递结果 - # 重新跑一次用文件计数方式 - echo "" - echo "--- 汇总性能数据 ---" - - END_TIME=$(date +%s) - ELAPSED=$((END_TIME - START_TIME)) - - echo "" - echo "========== 性能基线巡检报告 ==========" - echo "环境: https://staging-api.xiaoxiajianji.com" - echo "耗时: ${ELAPSED}s" - echo "======================================" - - name: Generate performance report id: report shell: sh