From c4a54a2cf8722ac2a27a601b40f0dcca37754f74 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 11 Apr 2026 18:06:22 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=81=8A=E5=A4=A9API=20fallback?= =?UTF-8?q?=E9=93=BE=E4=BF=AE=E5=A4=8D=20+=20=E7=BA=A0=E6=AD=A3guanghulab.?= =?UTF-8?q?com=E5=9F=9F=E5=90=8D=E6=9E=B6=E6=9E=84=20+=20=E5=AF=86?= =?UTF-8?q?=E9=92=A5=E8=AF=8A=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Agent-Logs-Url: https://github.com/qinfendebingshuo/guanghulab/sessions/52dcb970-3a2b-4e61-9acb-df3b5fab73c9 Co-authored-by: qinfendebingshuo <207279273+qinfendebingshuo@users.noreply.github.com> --- .../workflows/deploy-to-zhuyuan-server.yml | 33 +++++++++++-------- server/app/server.js | 6 +++- server/nginx/zhuyuan-sovereign.conf | 7 ++-- server/proxy/config/server-registry.json | 19 +++++++++++ server/zhuyuan-server-profile.json | 11 ++----- 5 files changed, 49 insertions(+), 27 deletions(-) diff --git a/.github/workflows/deploy-to-zhuyuan-server.yml b/.github/workflows/deploy-to-zhuyuan-server.yml index 25b53057..1a012831 100644 --- a/.github/workflows/deploy-to-zhuyuan-server.yml +++ b/.github/workflows/deploy-to-zhuyuan-server.yml @@ -228,7 +228,6 @@ jobs: env: ZY_DOMAIN_MAIN: ${{ secrets.ZY_DOMAIN_MAIN }} ZY_DOMAIN_PREVIEW: ${{ secrets.ZY_DOMAIN_PREVIEW }} - ZY_DOMAIN_ALIAS: ${{ secrets.ZY_DOMAIN_ALIAS }} ZY_FACE_DOMAIN: ${{ secrets.ZY_FACE_DOMAIN }} run: | # PM2 配置 @@ -245,14 +244,6 @@ jobs: echo "⚠️ ZY_DOMAIN_MAIN 未配置,使用IP访问" sed -i "s/ZY_DOMAIN_MAIN_PLACEHOLDER//g" /tmp/zhuyuan-sovereign.conf fi - # 域名别名 (guanghulab.com 等) — 与主域名共享同一 server block - if [ -n "$ZY_DOMAIN_ALIAS" ]; then - sed -i "s/ZY_DOMAIN_ALIAS_PLACEHOLDER/$ZY_DOMAIN_ALIAS/g" /tmp/zhuyuan-sovereign.conf - echo "✅ 域名别名已注入: $ZY_DOMAIN_ALIAS" - else - # 未配置别名时移除占位符 - sed -i "s/ZY_DOMAIN_ALIAS_PLACEHOLDER//g" /tmp/zhuyuan-sovereign.conf - fi if [ -n "$ZY_DOMAIN_PREVIEW" ]; then sed -i "s/ZY_DOMAIN_PREVIEW_PLACEHOLDER/$ZY_DOMAIN_PREVIEW/g" /tmp/zhuyuan-sovereign.conf echo "✅ 预览域名已注入: $ZY_DOMAIN_PREVIEW" @@ -316,7 +307,6 @@ jobs: ZY_CN_LLM_RELAY_HOST: ${{ secrets.ZY_CN_LLM_RELAY_HOST }} ZY_CN_LLM_RELAY_KEY: ${{ secrets.ZY_CN_LLM_RELAY_KEY }} ZY_DOMAIN_MAIN: ${{ secrets.ZY_DOMAIN_MAIN }} - ZY_DOMAIN_ALIAS: ${{ secrets.ZY_DOMAIN_ALIAS }} ZY_DOMAIN_PREVIEW: ${{ secrets.ZY_DOMAIN_PREVIEW }} ZY_FACE_DOMAIN: ${{ secrets.ZY_FACE_DOMAIN }} run: | @@ -436,7 +426,7 @@ jobs: echo "" echo "═══ DNS 诊断 ═══" SERVER_IP="43.134.16.246" - for DOMAIN in "${ZY_DOMAIN_MAIN}" "${ZY_DOMAIN_ALIAS}" "${ZY_DOMAIN_PREVIEW}" "${ZY_FACE_DOMAIN}"; do + for DOMAIN in "${ZY_DOMAIN_MAIN}" "${ZY_DOMAIN_PREVIEW}" "${ZY_FACE_DOMAIN}"; do if [ -n "$DOMAIN" ] && [ "$DOMAIN" != "_" ]; then RESOLVED=$(dig +short "$DOMAIN" A 2>/dev/null | head -1) if [ -z "$RESOLVED" ]; then @@ -450,6 +440,24 @@ jobs: done echo "═══════════════════" + # LLM API 密钥诊断 · 检查聊天功能所需密钥 + echo "" + echo "═══ 聊天API密钥诊断 ═══" + LLM_KEY_COUNT=0 + for KEY_NAME in ZY_DEEPSEEK_API_KEY ZY_QIANWEN_API_KEY ZY_KIMI_API_KEY ZY_QINGYAN_API_KEY; do + if grep -q "${KEY_NAME}=.\{6,\}" /opt/zhuyuan/app/.env.app 2>/dev/null; then + echo "✅ ${KEY_NAME}: 已配置" + LLM_KEY_COUNT=$((LLM_KEY_COUNT + 1)) + else + echo "❌ ${KEY_NAME}: 未配置或为空 · 人格体对话功能受影响" + fi + done + echo "可用国内模型数: ${LLM_KEY_COUNT}/4" + if [ "$LLM_KEY_COUNT" -eq 0 ]; then + echo "⚠️ 警告: 所有国内模型API密钥未配置 · 聊天功能将不可用" + fi + echo "═══════════════════" + # Nginx 配置诊断 · 检查 server_name 冲突 echo "" echo "═══ Nginx 诊断 ═══" @@ -540,13 +548,12 @@ jobs: - name: 🌐 DNS 域名解析检查 env: ZY_DOMAIN_MAIN: ${{ secrets.ZY_DOMAIN_MAIN }} - ZY_DOMAIN_ALIAS: ${{ secrets.ZY_DOMAIN_ALIAS }} ZY_DOMAIN_PREVIEW: ${{ secrets.ZY_DOMAIN_PREVIEW }} ZY_FACE_DOMAIN: ${{ secrets.ZY_FACE_DOMAIN }} run: | echo "═══ DNS 域名解析诊断 ═══" SERVER_IP="43.134.16.246" - for DOMAIN in "$ZY_DOMAIN_MAIN" "$ZY_DOMAIN_ALIAS" "$ZY_DOMAIN_PREVIEW" "$ZY_FACE_DOMAIN"; do + for DOMAIN in "$ZY_DOMAIN_MAIN" "$ZY_DOMAIN_PREVIEW" "$ZY_FACE_DOMAIN"; do if [ -n "$DOMAIN" ] && [ "$DOMAIN" != "_" ]; then RESOLVED=$(dig +short "$DOMAIN" A 2>/dev/null | head -1) if [ -z "$RESOLVED" ]; then diff --git a/server/app/server.js b/server/app/server.js index 731d729a..94b0d92a 100644 --- a/server/app/server.js +++ b/server/app/server.js @@ -278,7 +278,11 @@ app.post('/api/chat', async (req, res) => { if (domesticGateway) { try { const result = await domesticGateway.chat(sessionId, message); - return res.json({ ...result, sessionId }); + // 网关返回成功才使用其结果,否则降级到通用聊天引擎 + if (result && result.success !== false) { + return res.json({ ...result, sessionId }); + } + console.warn(`[聊天网关] 国内模型网关返回失败: ${result?.message || '未知'} · 降级到通用引擎`); } catch (gwErr) { console.error(`[聊天网关] 国内模型网关异常: ${gwErr.message}`); // 降级到通用聊天引擎 diff --git a/server/nginx/zhuyuan-sovereign.conf b/server/nginx/zhuyuan-sovereign.conf index d3bf9e7a..e8deac4f 100644 --- a/server/nginx/zhuyuan-sovereign.conf +++ b/server/nginx/zhuyuan-sovereign.conf @@ -18,14 +18,13 @@ # ─── §1 主域名 · 正式对外网站 ─── # 部署时由 deploy workflow 自动将占位符替换为实际域名 -# 替换源: GitHub Secrets → ZY_DOMAIN_MAIN / ZY_DOMAIN_ALIAS +# 替换源: GitHub Secrets → ZY_DOMAIN_MAIN # ⚠️ 重要: guanghulab.online 必须配置为 ZY_DOMAIN_MAIN(不是 ZY_DOMAIN_PREVIEW) # 否则 /api/* 请求会被路由到 §2 预览站的 3801 端口而非 3800 → 导致 502 -# ⚠️ DNS: 所有配置的域名 A 记录必须指向 43.134.16.246 (ZY-SVR-002) -# guanghulab.com 当前指向错误IP · 需要冰朔在域名注册商修改 A 记录 +# ⚠️ guanghulab.com 是ICP备案域名,部署在国内广州服务器(ZY-SVR-004),不在这里配置 server { listen 80 default_server; - server_name ZY_DOMAIN_MAIN_PLACEHOLDER ZY_DOMAIN_ALIAS_PLACEHOLDER 43.134.16.246; + server_name ZY_DOMAIN_MAIN_PLACEHOLDER 43.134.16.246; # ─── 安全头 ─── add_header X-Frame-Options "SAMEORIGIN" always; diff --git a/server/proxy/config/server-registry.json b/server/proxy/config/server-registry.json index deb86434..7cee0e17 100644 --- a/server/proxy/config/server-registry.json +++ b/server/proxy/config/server-registry.json @@ -106,6 +106,25 @@ "user": "ZY_SVR_AWEN_USER" }, "notes": "Awen下载完整仓库后部署·铸渊主控自动唤醒" + }, + { + "id": "ZY-SVR-004", + "name": "国内备案服务器", + "role": "ICP备案挂载+人格体备用大脑", + "location": "Guangzhou, China (广州七区)", + "ipv4": "43.139.217.141", + "spec": "2核2G", + "status": "active", + "services": [ + "nginx (ICP备案落地页·guanghulab.com)", + "备用大脑 (不涉及国外模型调用)" + ], + "github_secrets": { + "host": "ZY_CN_SERVER_HOST", + "key": "ZY_CN_SERVER_KEY", + "user": "ZY_CN_SERVER_USER" + }, + "notes": "ICP备案域名guanghulab.com必须指向此服务器·冰朔实名大陆服务器" } ], "cn_domain": { diff --git a/server/zhuyuan-server-profile.json b/server/zhuyuan-server-profile.json index 263aaf78..877abdb0 100644 --- a/server/zhuyuan-server-profile.json +++ b/server/zhuyuan-server-profile.json @@ -31,20 +31,13 @@ "dual_domain_architecture": { "description": "双域名架构 · 所有部署先到预览站验证→冰朔确认后一键推送到主站", "main_domain": { - "status": "✅ 已配置·需修复DNS", + "status": "✅ 已配置", "secret_name": "ZY_DOMAIN_MAIN", "purpose": "语言驱动操作系统正式对外网站", "site_root": "/opt/zhuyuan/sites/production", "port": 3800, "dns_note": "ZY_DOMAIN_MAIN 的 A 记录必须指向 43.134.16.246" }, - "domain_alias": { - "domain": "guanghulab.com", - "status": "❌ DNS指向错误IP(43.154.96.49)·需修改A记录到43.134.16.246", - "secret_name": "ZY_DOMAIN_ALIAS", - "purpose": "品牌域名·与主域名共享同一server block", - "dns_required": "A 记录 → 43.134.16.246 (ZY-SVR-002)" - }, "preview_domain": { "domain": "guanghulab.online", "status": "✅ 冰朔已解析DNS到本服务器(43.134.16.246) · 第三十四次对话确认", @@ -78,7 +71,7 @@ "access_requirements": { "ssh_key": { "status": "待确认", - "instruction": "冰朔,以下GitHub Secrets是部署到服务器的关键配置。\n如果之前已配置过,无需重复操作。如未配置,请添加:\n1. ZY_SERVER_HOST = 43.134.16.246\n2. ZY_SERVER_USER = root\n3. ZY_SERVER_KEY = SSH私钥内容 (PEM格式)\n4. ZY_SERVER_PATH = /opt/zhuyuan\n5. ZY_DOMAIN_PREVIEW = guanghulab.online\n6. ZY_DOMAIN_MAIN = 主域名 (已配置)\n7. ZY_DOMAIN_ALIAS = guanghulab.com (品牌域名·与主域名共享server block)\n\n⚠️ 紧急DNS修复:\nguanghulab.com A记录当前指向 43.154.96.49 (错误IP)\n请在域名注册商将 guanghulab.com A记录修改为 43.134.16.246\n\n操作编号:ZY-SVR-SETUP-001\n操作人:冰朔 TCS-0002∞\n\n验证方法:铸渊可在 GitHub Actions 中手动触发 deploy-to-zhuyuan-server.yml → action=health-check 来测试SSH连接是否正常。", + "instruction": "冰朔,以下GitHub Secrets是部署到服务器的关键配置。\n如果之前已配置过,无需重复操作。如未配置,请添加:\n1. ZY_SERVER_HOST = 43.134.16.246\n2. ZY_SERVER_USER = root\n3. ZY_SERVER_KEY = SSH私钥内容 (PEM格式)\n4. ZY_SERVER_PATH = /opt/zhuyuan\n5. ZY_DOMAIN_PREVIEW = guanghulab.online\n6. ZY_DOMAIN_MAIN = 主域名 (已配置)\n\n⚠️ guanghulab.com 是ICP备案域名:\n → DNS A记录必须指向 43.139.217.141 (广州 ZY-SVR-004)\n → 不是新加坡服务器! 由 deploy-cn-landing.yml 单独部署\n\n⚠️ 聊天功能:\n 需要配置 ZY_DEEPSEEK_API_KEY / ZY_QIANWEN_API_KEY / ZY_KIMI_API_KEY / ZY_QINGYAN_API_KEY\n 至少配置一个密钥才能启用人格体对话\n\n操作编号:ZY-SVR-SETUP-001\n操作人:冰朔 TCS-0002∞\n\n验证方法:铸渊可在 GitHub Actions 中手动触发 deploy-to-zhuyuan-server.yml → action=health-check 来测试SSH连接是否正常。", "request_id": "ZY-SVR-SETUP-001" } },