员工岗位可重新启用;调价认空运航线;会话存档跳号补拉;陆运报价按车型列回填
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -2264,6 +2264,26 @@ class AirTextInquiryFlow:
|
||||
)
|
||||
return phase
|
||||
|
||||
def abandon_orphan_lost_wait(self, sess: FlowSession) -> None:
|
||||
"""
|
||||
主账已无此单,但仍停在「等未成交原因」:丢掉书签与进程内索引。
|
||||
|
||||
清数后常见:Redis 还挂着 WO,下一句永远 patch 失败,新询价也被抢走。
|
||||
"""
|
||||
sid = (sess.sender_id or "").strip()
|
||||
no = (sess.work_order_no or "").strip()
|
||||
if sid:
|
||||
with self._lock:
|
||||
self._by_sender.pop(sid, None)
|
||||
self._delete_bookmark(sid)
|
||||
if no:
|
||||
with self._lock:
|
||||
self._by_ticket.pop(no, None)
|
||||
upper = no.upper()
|
||||
for key in list(self._by_ticket.keys()):
|
||||
if (key or "").upper() == upper:
|
||||
self._by_ticket.pop(key, None)
|
||||
|
||||
def _capture_lost_reason(self, sess: FlowSession, text: str, reply: ReplyFn) -> str:
|
||||
"""私聊未成交后收下原因,不再追问。"""
|
||||
from agent.policy.deal_outcome import capture_lost_reason
|
||||
@@ -2274,6 +2294,16 @@ class AirTextInquiryFlow:
|
||||
reason=text,
|
||||
)
|
||||
if not result.get("ok"):
|
||||
err = str(result.get("error") or "").strip()
|
||||
# 清数后主账无单:不能再死循环「请再发一句」,否则挡死新询价。
|
||||
if err in {"ticket_not_found", "not_found"}:
|
||||
no = (sess.work_order_no or "").strip()
|
||||
self.abandon_orphan_lost_wait(sess)
|
||||
reply(
|
||||
f"工单 {no or ''} 已不在系统中(可能已清数),无需再补未成交原因。"
|
||||
"请直接发起新询价。"
|
||||
)
|
||||
return "orphan_cleared"
|
||||
reply("未成交原因没有记下,请再发一句。")
|
||||
return "wait_lost_reason"
|
||||
sess.phase = "done"
|
||||
|
||||
Reference in New Issue
Block a user