私聊建单前拦住枪支弹药爆炸物和毒品,避免真家伙进入报价。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-10-14 20:24:13 +08:00
co-authored by Cursor
parent 9ffba70741
commit 617c5e2619
8 changed files with 656 additions and 7 deletions
+35 -1
View File
@@ -40,7 +40,9 @@ from agent.schema.tms_land_query import assemble_land_query
logger = logging.getLogger(__name__)
_LAND_FRONT = frozenset({"need_mode", "need_land_options", "clarify", "wait_confirm", "wait_land_route", "idle", ""})
_LAND_FRONT = frozenset(
{"need_mode", "need_land_options", "clarify", "wait_confirm", "wait_land_route", "sensitive_block", "idle", ""}
)
class LandTextInquiryFlow(SeaTextInquiryFlow):
@@ -97,6 +99,16 @@ class LandTextInquiryFlow(SeaTextInquiryFlow):
if sess and sess.phase == "wait_confirm" and looks_like_confirm(text):
# 确定查价不再抽字段,避免「确定」被模型改成空运/空 facts。
logger.info("land.confirm sender=%s", sender_id)
refused = self._refuse_sensitive(
sender_id=sender_id,
text=text,
facts=dict(sess.facts),
reply=reply,
sess=sess,
business_line=sess.business_line,
)
if refused:
return refused
return self._confirm_or_hold(
sender_id=sender_id,
facts=dict(sess.facts),
@@ -176,6 +188,18 @@ class LandTextInquiryFlow(SeaTextInquiryFlow):
# 复制清单冒号空着的项,菜单文字和模型猜测都不能当成已填。
facts = drop_blank_paste_options(facts, source)
if not mode or mode == "LAND":
refused = self._refuse_sensitive(
sender_id=sender_id,
text=text,
facts=facts,
reply=reply,
sess=sess,
business_line=mode or (sess.business_line if sess else ""),
)
if refused:
return refused
if not mode:
mode = "LAND" if (sess and (sess.business_line or "").upper() == "LAND") else ""
if not mode:
@@ -296,6 +320,16 @@ class LandTextInquiryFlow(SeaTextInquiryFlow):
"""
import uuid
refused = self._refuse_sensitive(
sender_id=sender_id,
text="",
facts=facts,
reply=reply,
sess=self.session_of(sender_id),
business_line="LAND",
)
if refused:
return refused
tms_ready = assemble_land_query(facts)
if not tms_ready.get("ok"):
return self._advance_front(