From 3ce77ed606c7f58adfccbcfaf1a9723d0f5eaed2 Mon Sep 17 00:00:00 2001 From: v6ole Date: Sun, 12 Jul 2026 19:22:40 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=8B=9C=E8=AE=BF=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E6=97=B6=E8=87=AA=E5=8A=A8=E8=81=94=E5=8A=A8?= =?UTF-8?q?=E5=95=86=E6=9C=BA=E8=B7=9F=E8=BF=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - POST /visits 创建拜访后,自动查询同客户下「跟进中」的商机 - 为每个匹配商机追加一条跟进记录(mini_business_log) - 内容: 沟通内容 + 客户需求拼接 - 方式: 拜访方式自动映射(上门→上门/电话→电话/微信→微信/出差→其他) - 仅创建时触发,更新/导入不联动 Co-Authored-By: Claude --- backend/app/api/visits.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/backend/app/api/visits.py b/backend/app/api/visits.py index f02ab82..736707b 100644 --- a/backend/app/api/visits.py +++ b/backend/app/api/visits.py @@ -167,6 +167,33 @@ async def create_visit( current_user["name"], "拜访自动完成", ) + # Auto-create follow-up logs for active mini business opportunities + from app.models.mini_business import MiniBusiness + from app.models.mini_business_log import MiniBusinessLog + method_map = {"上门": "上门", "电话": "电话", "微信": "微信", "出差": "其他"} + active_biz = await db.execute( + select(MiniBusiness).where( + MiniBusiness.customer_id == data.customer_id, + MiniBusiness.status == "跟进中", + ) + ) + for biz in active_biz.scalars().all(): + parts = [] + if data.communication_content and data.communication_content.strip(): + parts.append(f"沟通内容:{data.communication_content.strip()}") + if data.customer_demand and data.customer_demand.strip(): + parts.append(f"客户需求:{data.customer_demand.strip()}") + log_content = "\n".join(parts) if parts else "拜访跟进" + follow_method = method_map.get(data.visit_method, "其他") + log = MiniBusinessLog( + business_id=biz.id, + log_date=parse_date(data.visit_date), + method=follow_method, + content=log_content, + created_by=uuid.UUID(current_user["user_id"]), + ) + db.add(log) + # Create draft copies for companions for companion_id in data.companions: if companion_id != uuid.UUID(current_user["user_id"]):