From 300f4b2abd15fc3a1646e3e897fe06a3589f98b0 Mon Sep 17 00:00:00 2001 From: xiaoxia-agent Date: Wed, 16 Sep 2026 11:54:44 +0800 Subject: [PATCH] fix(staging): add DOUBAO_API_KEY to CI env render (fix 502 AI unavailable) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Root cause: Doubao (ARK) AI client configuration was missing from staging .env template and CI render pipeline. The DOUBAO_API_KEY/MODEL/BASE_URL variables were added to packages/config/api_settings.py but never wired through deploy/configs/.env.staging, render_env.sh shared secrets, or ci-pipeline.yml. After recent PRs that added AI endpoints (ai-rewrite, extract-from-douyin, lipsync/digital-human) calling get_doubao_client(), is_available returned False because settings.doubao_api_key was empty → all AI routes returned 502. Fix: 1. deploy/configs/.env.staging: add DOUBAO_API_KEY/MODEL/BASE_URL/TIMEOUT/MAX_RETRIES 2. deploy/configs/.env.production: same (for prod parity) 3. scripts/render_env.sh: add DOUBAO_API_KEY/MODEL/BASE_URL to SHARED_SECRETS 4. .gitea/workflows/ci-pipeline.yml: pass DOUBAO secrets to deploy-staging env 5. Gitea Actions secrets: DOUBAO_API_KEY/MODEL/BASE_URL added (already set) Verified render_env.sh produces correct .env.rendered with all 19 vars substituted. Full unit test suite: 15523 passed. --- .gitea/workflows/ci-pipeline.yml | 3 +++ deploy/configs/.env.production | 19 +++++++++++++++++++ deploy/configs/.env.staging | 19 +++++++++++++++++++ scripts/render_env.sh | 2 +- 4 files changed, 42 insertions(+), 1 deletion(-) diff --git a/.gitea/workflows/ci-pipeline.yml b/.gitea/workflows/ci-pipeline.yml index 9ae5b1fba..2acb1799d 100755 --- a/.gitea/workflows/ci-pipeline.yml +++ b/.gitea/workflows/ci-pipeline.yml @@ -1205,6 +1205,9 @@ jobs: COSYVOICE_API_KEY: ${{ secrets.COSYVOICE_API_KEY }} DASHSCOPE_API_KEY: ${{ secrets.DASHSCOPE_API_KEY }} MEDIAKIT_API_KEY: ${{ secrets.MEDIAKIT_API_KEY }} + DOUBAO_API_KEY: ${{ secrets.DOUBAO_API_KEY }} + DOUBAO_MODEL: ${{ secrets.DOUBAO_MODEL }} + DOUBAO_BASE_URL: ${{ secrets.DOUBAO_BASE_URL }} WECHAT_APP_ID: ${{ secrets.WECHAT_APP_ID }} WECHAT_APP_SECRET: ${{ secrets.WECHAT_APP_SECRET }} run: | diff --git a/deploy/configs/.env.production b/deploy/configs/.env.production index f14279411..278c5cec3 100644 --- a/deploy/configs/.env.production +++ b/deploy/configs/.env.production @@ -216,6 +216,25 @@ MEDIAKIT_TIMEOUT=60 # SENTRY_DSN=${SENTRY_DSN} +# ==================== 豆包大模型 (火山引擎 ARK) ==================== + +# 豆包大模型 API Key(ARK 平台颁发) +# ${DOUBAO_API_KEY} — 替换为实际的 ARK API Key +DOUBAO_API_KEY=${DOUBAO_API_KEY} + +# 模型 Endpoint ID +DOUBAO_MODEL=${DOUBAO_MODEL} + +# API Base URL +DOUBAO_BASE_URL=${DOUBAO_BASE_URL} + +# 请求超时(秒) +DOUBAO_TIMEOUT=60 + +# 最大重试次数 +DOUBAO_MAX_RETRIES=2 + + # ==================== 微信开放平台 OAuth(网页扫码登录)==================== # 回调域名:xiaoxiajianji.com(微信开放平台已配置) WECHAT_OPEN_APP_ID=${WECHAT_APP_ID} diff --git a/deploy/configs/.env.staging b/deploy/configs/.env.staging index 9e09b91eb..ccf90ef41 100644 --- a/deploy/configs/.env.staging +++ b/deploy/configs/.env.staging @@ -233,6 +233,25 @@ MEDIAKIT_BASE_URL=https://mediakit.cn-beijing.volces.com/api/v1 MEDIAKIT_TIMEOUT=60 +# ==================== 豆包大模型 (火山引擎 ARK) ==================== + +# 豆包大模型 API Key(ARK 平台颁发) +# ${DOUBAO_API_KEY} — 替换为实际的 ARK API Key +DOUBAO_API_KEY=${DOUBAO_API_KEY} + +# 模型 Endpoint ID(在 ARK 控制台创建推理接入点后获得) +DOUBAO_MODEL=${DOUBAO_MODEL} + +# API Base URL +DOUBAO_BASE_URL=${DOUBAO_BASE_URL} + +# 请求超时(秒) +DOUBAO_TIMEOUT=60 + +# 最大重试次数 +DOUBAO_MAX_RETRIES=2 + + # ==================== 微信开放平台 OAuth(网页扫码登录)==================== # 回调域名:xiaoxiajianji.com(微信开放平台已配置) WECHAT_OPEN_APP_ID=${WECHAT_APP_ID} diff --git a/scripts/render_env.sh b/scripts/render_env.sh index a5f128045..61ec789f8 100644 --- a/scripts/render_env.sh +++ b/scripts/render_env.sh @@ -57,7 +57,7 @@ if [ "$TARGET_ENV" = "staging" ]; then fi # 共用 secrets 直接导出(如果存在) -SHARED_SECRETS="OSS_ACCESS_KEY_ID OSS_ACCESS_KEY_SECRET COSYVOICE_API_KEY DASHSCOPE_API_KEY MEDIAKIT_API_KEY WECHAT_APP_ID WECHAT_APP_SECRET" +SHARED_SECRETS="OSS_ACCESS_KEY_ID OSS_ACCESS_KEY_SECRET COSYVOICE_API_KEY DASHSCOPE_API_KEY MEDIAKIT_API_KEY DOUBAO_API_KEY DOUBAO_MODEL DOUBAO_BASE_URL WECHAT_APP_ID WECHAT_APP_SECRET" for var in $SHARED_SECRETS; do value="${!var:-}" # 已经在环境中了,无需额外操作