落地销售调价:按自然语言改价并单独记销售价,拉群和后台不再把调后价当成 TMS 原价。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-20 14:40:20 +08:00
co-authored by Cursor
parent e4743541f7
commit 26dd5d72a1
36 changed files with 2795 additions and 176 deletions
+40 -5
View File
@@ -55,9 +55,23 @@ class IntentRouter:
"""
return self._a().route_stub_fixture(text=text, sender_id=sender_id)
def route(self, *, text: str, sender_id: str) -> RouteDecision:
"""一条入站一个 RouteDecision。"""
return self._a().route(text=text, sender_id=sender_id)
def route(
self,
*,
text: str,
sender_id: str,
session_quoted: bool = False,
fee_names: Optional[list[str]] = None,
work_order_no: str = "",
) -> RouteDecision:
"""一条入站一个 RouteDecision。已报价时把书签事实交给 A 认调价。"""
return self._a().route(
text=text,
sender_id=sender_id,
session_quoted=session_quoted,
fee_names=fee_names,
work_order_no=work_order_no,
)
def route_inbound(
self,
@@ -70,7 +84,7 @@ class IntentRouter:
入站后再路由。
点卡片是结构化事件,不进大模型。
自由文字交给 DeepSeek A 认意图(续办 / 新询价 / 闲聊),不要求固定口令。
自由文字交给 DeepSeek A 认意图(续办 / 新询价 / 调价 / 闲聊),不要求固定口令。
"""
if not sender_id:
return RouteDecision(intent="reject_no_sender", confidence=1.0)
@@ -92,7 +106,28 @@ class IntentRouter:
logger.info("route 陆运核对卡确定:跳过闲聊模型 sender=%s", sender_id)
return RouteDecision(intent="ordinary_text_inquiry", confidence=1.0)
logger.info("route 确定类短句但无陆运核对卡,仍走模型 sender=%s", sender_id)
return self.route(text=text, sender_id=sender_id)
quoted = False
names: list[str] = []
wo = ""
try:
from agent.policy.quote_adjust_ops import quoted_adjust_flow
from agent.schema.quote_adjust import quote_fee_rows
flow = quoted_adjust_flow(sender_id)
sess = flow.session_of(sender_id) if flow is not None else None
if sess is not None:
quoted = True
wo = str(getattr(sess, "work_order_no", "") or "")
names = [str(r.get("name") or "") for r in quote_fee_rows(getattr(sess, "quote", None))]
except Exception:
logger.exception("route 收集调价书签失败 sender=%s", sender_id)
return self.route(
text=text,
sender_id=sender_id,
session_quoted=quoted,
fee_names=names,
work_order_no=wo,
)
def enqueue_ordered_actions(
self,