机器人显示名与站点标题可配;多段联运列表投影;协同群监听对账;工单附件落存;模板与工单后台补强
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -265,6 +265,64 @@ class ContinueTicketTests(unittest.TestCase):
|
||||
self.assertTrue(any("已记录为「已成交」" in x for x in replies))
|
||||
self.assertIn(wo, "\n".join(replies))
|
||||
|
||||
def test_resume_lost_with_reason_replays_closed_ack(self) -> None:
|
||||
"""未成交且原因已记:继续工单只重播关单回执,不再要原因、不问运输方式。"""
|
||||
from agent.policy.bot_reply import override_catalog
|
||||
|
||||
ledger = MemoryLedger()
|
||||
created = ledger.create_ticket(
|
||||
sender_id="u-lost-done", business_line="AIR", facts=COMPLETE_AIR
|
||||
)
|
||||
wo = created["work_order_no"]
|
||||
ledger.upsert_quote(
|
||||
work_order_no=wo,
|
||||
quote={"total": "USD 1", "eta": "-", "valid_until": "-"},
|
||||
to_status="已报价",
|
||||
)
|
||||
ledger.render_quote(
|
||||
work_order_no=wo,
|
||||
business_line="AIR",
|
||||
facts=COMPLETE_AIR,
|
||||
quote={"total": "USD 1"},
|
||||
)
|
||||
ledger.transition(
|
||||
work_order_no=wo, to_status="未成交", lost_reason="客人比价了"
|
||||
)
|
||||
override_catalog(
|
||||
{
|
||||
"lost.reason_ack": (
|
||||
"已将未成交原因“{{lost_reason}}”记录在后台,"
|
||||
"工单 {{ticket_no}}已关闭,智能体不再跟进该工单,请悉知。"
|
||||
)
|
||||
}
|
||||
)
|
||||
flow = AirTextInquiryFlow(ledger)
|
||||
replies: list[str] = []
|
||||
|
||||
def reply(text: str, extra=None) -> None:
|
||||
replies.append(text)
|
||||
_ = extra
|
||||
|
||||
try:
|
||||
phase = flow.resume_historical(
|
||||
sender_id="u-lost-done",
|
||||
work_order_no=wo,
|
||||
reply=reply,
|
||||
text=f"继续工单{wo}",
|
||||
)
|
||||
finally:
|
||||
override_catalog(None)
|
||||
self.assertEqual(phase, "done")
|
||||
self.assertEqual(
|
||||
replies,
|
||||
[
|
||||
f"已将未成交原因“客人比价了”记录在后台,"
|
||||
f"工单 {wo}已关闭,智能体不再跟进该工单,请悉知。"
|
||||
],
|
||||
)
|
||||
self.assertFalse(any("请补充未成交原因" in x for x in replies))
|
||||
self.assertFalse(any("运输方式" in x for x in replies))
|
||||
|
||||
def test_resume_waiting_lost_reason_saves_sentence(self) -> None:
|
||||
"""等未成交原因时继续工单,下一句要写入原因,不能再要一遍。"""
|
||||
ledger = MemoryLedger()
|
||||
|
||||
Reference in New Issue
Block a user