From 4cdd30e321138b5fd633ef0110105aeb2d40cea5 Mon Sep 17 00:00:00 2001 From: Hermes CI Fix Date: Tue, 13 Oct 2026 17:48:00 +0800 Subject: [PATCH] =?UTF-8?q?feat(lead):=20=E7=BD=91=E7=AB=99=E7=BA=BF?= =?UTF-8?q?=E7=B4=A2=E9=A2=9D=E5=A4=96=E6=8E=A8=E9=80=81=E4=BB=BB=E6=80=BB?= =?UTF-8?q?DM=EF=BC=88=E7=BB=8F=20ai-cs=20=E5=AE=9E=E7=9B=98=E5=88=86?= =?UTF-8?q?=E6=B5=81=E8=84=9A=E6=9C=AC=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 notify_boss():POST /api/cma/lead 时,除既有全员群 notify_wecom 外, 额外经 ai-cs 实盘分流脚本(routing-live.py)通知 wecom:200653946(加性,不改动既有逻辑) - 跨 profile 调用必须显式传 HOME/HERMES_HOME=/var/lib/wecom-ai-cs/profile: cma-backend.service Environment 为空,缺省会解析到非 ai-cs profile(实测无 wecom 目标) - 失败静默(capture_output + except pass),不影响主流程 任务: ai-cs-20261013-website-lead-to-boss-and-routing-hook-ops --- backend/app/api/lead.py | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/backend/app/api/lead.py b/backend/app/api/lead.py index 9b986615..8635a021 100644 --- a/backend/app/api/lead.py +++ b/backend/app/api/lead.py @@ -1,10 +1,17 @@ """AI获客 - 客户咨询接口""" from fastapi import APIRouter, HTTPException from pydantic import BaseModel -import json, os, datetime, urllib.request +import json, os, datetime, subprocess, urllib.request router = APIRouter(prefix="/api/cma/lead", tags=["AI获客"]) +# ai-cs 实盘分流脚本(跨 profile 调用) +# 必须以 ai-cs 身份 + 其 HERMES_HOME/HOME 运行:脚本内用 `hermes send` 复用该 profile 的企微凭据; +# cma-backend.service 的 Environment 为空,不显式传入会解析到非 ai-cs 的 profile(root 默认 profile)。 +AI_CS_USER = "ai-cs" +AI_CS_HOME = "/var/lib/wecom-ai-cs/profile" +AI_CS_ROUTING_SCRIPT = AI_CS_HOME + "/scripts/routing-live.py" + class LeadRequest(BaseModel): name: str phone: str @@ -31,6 +38,22 @@ def notify_wecom(name, phone, requirement, source): except: pass # 通知失败不影响主流程 +def notify_boss(name, phone, requirement): + """额外推给任总(经 ai-cs 实盘分流脚本;失败不影响主流程)""" + try: + subprocess.run( + ["runuser", "-u", AI_CS_USER, "--", + "env", f"HOME={AI_CS_HOME}", f"HERMES_HOME={AI_CS_HOME}", + f"USER={AI_CS_USER}", f"LOGNAME={AI_CS_USER}", + "/usr/bin/python3", AI_CS_ROUTING_SCRIPT, + requirement or "(未填需求)", + f"{name} {phone}", + "website:sxbh.ltd"], + timeout=30, capture_output=True, + ) + except Exception: + pass + @router.post("") def create_lead(data: LeadRequest): """接收客户咨询并保存""" @@ -45,5 +68,7 @@ def create_lead(data: LeadRequest): # 异步推送企微通知 notify_wecom(data.name, data.phone, data.requirement, data.source) + # 加性:额外推给任总 DM(口径与 ai-cs 客服分流一致) + notify_boss(data.name, data.phone, data.requirement) return {"success": True, "message": "咨询已提交,我们将在30分钟内联系您"}