fix: handle designer schedule questions

This commit is contained in:
2026-03-14 08:35:06 +08:00
parent 5b36693c2e
commit 1b136d17ad

View File

@@ -98,6 +98,21 @@ _PAYMENT_LINK_REQUEST_KEYWORDS = (
"给我链接", "给我链接",
) )
_DESIGNER_SCHEDULE_QUESTION_KEYWORDS = (
"几点上班",
"什么时候上班",
"大概什么时候上班",
"一般几点上班",
"明天几点上班",
"设计师几点上班",
"设计师什么时候上班",
"几点在线",
"什么时候在线",
"设计师在吗",
"上班了没",
"设计师上班了吗",
)
def _clip(text: str, limit: int = 1200) -> str: def _clip(text: str, limit: int = 1200) -> str:
if text is None: if text is None:
@@ -214,6 +229,15 @@ def _requests_payment_link(current_text: str, history: Optional[List[dict]] = No
return ("付款" in text or "支付" in text or "拍单" in text or "下单" in text) and "链接" in text return ("付款" in text or "支付" in text or "拍单" in text or "下单" in text) and "链接" in text
def _asks_designer_schedule(current_text: str, history: Optional[List[dict]] = None) -> bool:
text = _normalize_text(current_text)
if not text:
return False
if any(keyword in text for keyword in _DESIGNER_SCHEDULE_QUESTION_KEYWORDS):
return True
return ("上班" in text or "在线" in text) and ("几点" in text or "什么时候" in text or "在吗" in text)
class CustomerServiceBrain: class CustomerServiceBrain:
""" """
重构后的单一 Agent 大脑: 重构后的单一 Agent 大脑:
@@ -271,16 +295,18 @@ class CustomerServiceBrain:
"4. **客户说没有参考图**:直接转人工:'好的,我这就叫设计师帮您找哈'\n" "4. **客户说没有参考图**:直接转人工:'好的,我这就叫设计师帮您找哈'\n"
"5. **客户问尺寸/能否打印/退款**:直接转人工:'这个设计师帮您看下哈'\n" "5. **客户问尺寸/能否打印/退款**:直接转人工:'这个设计师帮您看下哈'\n"
"6. **付款链接特判**:客户明确说'发付款链接''支付链接''拍单链接''下单链接'时,视为强成交信号,必须立即调用转人工工具;严禁只回复'直接下单'\n" "6. **付款链接特判**:客户明确说'发付款链接''支付链接''拍单链接''下单链接'时,视为强成交信号,必须立即调用转人工工具;严禁只回复'直接下单'\n"
"7. **转接时机(严格两步)**:除付款链接特判外,必须同时满足【有图】+【客户明确或可直接判断的需求】才能转接\n" "7. **设计师上班时间特判**:客户问'几点上班''什么时候上班''设计师在吗''什么时候在线'时,默认是在问设计师。不要按闲聊处理,也不要回复'我只处理业务'\n"
" 应优先自然回答设计师上班/在线情况,例如'设计师八点后陆续上班哈''还没上班,上班马上帮您处理'\n"
"8. **转接时机(严格两步)**:除付款链接特判外,必须同时满足【有图】+【客户明确或可直接判断的需求】才能转接。\n"
" 客户只发了图但没说需求 → 先问'亲亲这张是找原图还是修复哈?'\n" " 客户只发了图但没说需求 → 先问'亲亲这张是找原图还是修复哈?'\n"
" 客户说了'有吗''能找吗''找图''找原图''有大图吗' → 直接按【找原图】意图处理,不要重复追问。\n" " 客户说了'有吗''能找吗''找图''找原图''有大图吗' → 直接按【找原图】意图处理,不要重复追问。\n"
" 客户说了'修复''高清''清晰点''放大清晰' → 直接按【高清修复】意图处理,不要重复追问。\n" " 客户说了'修复''高清''清晰点''放大清晰' → 直接按【高清修复】意图处理,不要重复追问。\n"
"8. **下线安抚**只有工具返回ERROR时才能提设计师不在。根据错误码区分\n" "9. **下线安抚**只有工具返回ERROR时才能提设计师不在。根据错误码区分\n"
" - ERROR_DESIGNER_NOT_STARTED → 说'还没上班,记下了上班马上处理'(严禁说下班)\n" " - ERROR_DESIGNER_NOT_STARTED → 说'还没上班,记下了上班马上处理'(严禁说下班)\n"
" - ERROR_DESIGNER_OFFLINE → 说'下班了,需求记下明天回'\n" " - ERROR_DESIGNER_OFFLINE → 说'下班了,需求记下明天回'\n"
" - ERROR_DESIGNER_BUSY → 说'稍等,我帮你联系下'(严禁说下班)\n" " - ERROR_DESIGNER_BUSY → 说'稍等,我帮你联系下'(严禁说下班)\n"
"9. 正在转接中:如果系统提示已在转接,回:'已经在帮你催了哈,稍等下!'\n" "10. 正在转接中:如果系统提示已在转接,回:'已经在帮你催了哈,稍等下!'\n"
"10. **每次转接必须调用工具**:不要猜测,每次都重新调用。\n\n" "11. **每次转接必须调用工具**:不要猜测,每次都重新调用。\n\n"
"【情绪识别与应急转人工】\n" "【情绪识别与应急转人工】\n"
"当客户出现以下信号时,立即调用转人工工具,不要继续机械回复:\n" "当客户出现以下信号时,立即调用转人工工具,不要继续机械回复:\n"
@@ -325,6 +351,13 @@ class CustomerServiceBrain:
"不要只回复'直接下单''平台拍单',必须立即调用转人工工具转接设计师跟进付款。】\n" "不要只回复'直接下单''平台拍单',必须立即调用转人工工具转接设计师跟进付款。】\n"
f"{user_content}" f"{user_content}"
) )
elif _asks_designer_schedule(user_content, history):
user_content = (
"【系统通知:客户现在是在问设计师几点上班、什么时候在线、有没有在。"
"这是有效业务上下文,不要按闲聊或无关业务拒绝。"
"请直接自然回答设计师上班/在线情况;如果还没上班,就说上班后马上处理。】\n"
f"{user_content}"
)
# 客户已发图:告知 AI 图已收到,引导问需求,但不要直接转接 # 客户已发图:告知 AI 图已收到,引导问需求,但不要直接转接
has_image_message = bool(msg.image_urls) or msg.msg_type == 1 has_image_message = bool(msg.image_urls) or msg.msg_type == 1