refactor: split websocket flows and add brain action decision pipeline

This commit is contained in:
2026-03-02 16:04:33 +08:00
parent 4022ed8f7a
commit b5153048c4
22 changed files with 2325 additions and 2426 deletions

View File

@@ -0,0 +1,45 @@
import re
from datetime import datetime
def extract_and_save_customer_info_flow(client, message: str, customer_id: str, db):
"""从消息中提取客户信息并保存。"""
if not message or not customer_id:
return
email_pattern = r"[\w\.-]+@[\w\.-]+\.\w+"
email_match = re.search(email_pattern, message)
if email_match:
db.update_email(customer_id, email_match.group())
phone_pattern = r"1[3-9]\d{9}"
phone_match = re.search(phone_pattern, message)
if phone_match:
db.update_phone(customer_id, phone_match.group())
wechat_pattern = r"[Vv微信]+号[:]?\s*([\w-]+)"
wechat_match = re.search(wechat_pattern, message)
if wechat_match:
db.update_wechat(customer_id, wechat_match.group(1))
budget_keywords = ["预算", "不超过", "最多", "便宜点", "便宜"]
for keyword in budget_keywords:
if keyword in message:
db.add_personality_tag(customer_id, "关注价格")
break
personality_keywords = {
"爽快": "爽快",
"干脆": "爽快",
"纠结": "纠结",
"墨迹": "纠结",
"砍价": "砍价",
"": "砍价",
}
for keyword, tag in personality_keywords.items():
if keyword in message:
db.add_personality_tag(customer_id, tag)
profile = db.get_customer(customer_id)
profile.last_contact = datetime.now().isoformat()
db.save_customer(profile)