"""AI获客 - 客户咨询接口""" from fastapi import APIRouter, HTTPException from pydantic import BaseModel import json, os, datetime, subprocess 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 requirement: str = "" source: str = "sxbh.ltd" 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): """接收客户咨询并保存""" record = data.model_dump() record["timestamp"] = datetime.datetime.now().isoformat() record["status"] = "new" log_dir = "/root/leads" os.makedirs(log_dir, exist_ok=True) with open(f"{log_dir}/leads.json", "a") as f: f.write(json.dumps(record, ensure_ascii=False) + "\n") # 客户咨询通知唯一通道:推任总 DM(经 ai-cs 分流);不再推 8800 全员群 # (2026-10-22 裁定:8800 仅限内容类群发,客户线索含个人信息,不得进全员群) notify_boss(data.name, data.phone, data.requirement) return {"success": True, "message": "咨询已提交,我们将在30分钟内联系您"}