Files
cma-management/backend/app/api/lead.py
T
wecom-project 1efa6b7df9
ci/woodpecker/push/main Pipeline was successful
refactor(lead): 退役 notify_wecom 8800 全员群推送(只保留 notify_boss DM)
- 删除 notify_wecom()(JSON body 打 8800/send,中继只解析 form-encoded,从未发出过消息)与吞异常的 except: pass
- 客户咨询通知唯一通道:notify_boss 推任总 DM(经 ai-cs 分流)
- 去掉随之无用的 urllib.request 导入
- 零行为变更:删的是从不生效的代码;防止后人「修成 form-encoded」把客户个人信息推进全员群

关联决策:ASK-20261021-09(任总 2026-10-22 11:16:8800 仅限 notice_class=content)
派单:finance-20261022-cma-lead-retire-8800-project(父任务 yanxue-20261022-relay-8800-koujing-finance)
2026-10-22 12:49:06 +08:00

54 lines
2.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""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分钟内联系您"}