重启后仍能跳过协同出方案,未成交可同一句带原因;海陆有价卡改为直接生成报价单。
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -659,5 +659,57 @@ class LandLostReasonTests(unittest.TestCase):
|
||||
self.assertTrue(any(t == "已记下未成交原因:价格高。" for t in replies))
|
||||
|
||||
|
||||
class LandSkipAfterRestartTests(unittest.TestCase):
|
||||
def test_skip_collab_after_restart_from_ledger(self) -> None:
|
||||
"""
|
||||
陆运已报价主账也会收成 wait_adopt。进程无书签时点「不需要协同」仍须出方案卡。
|
||||
"""
|
||||
ledger = MemoryLedger()
|
||||
facts = {
|
||||
"起运港": "广州",
|
||||
"目的港": "深圳",
|
||||
"品名": "衣服",
|
||||
"体积": "100CBM",
|
||||
"毛重": "50kg",
|
||||
"运输类型": "国内运输拼车",
|
||||
"线路类别": "国内长途/零担",
|
||||
"运输分类": "急件",
|
||||
}
|
||||
created = ledger.create_ticket(
|
||||
sender_id="u-land-skip", business_line="LAND", facts=facts
|
||||
)
|
||||
wo = created["work_order_no"]
|
||||
ledger.upsert_quote(
|
||||
work_order_no=wo,
|
||||
quote={"total": "CNY 800", "source_label": "TMS 标准报价"},
|
||||
to_status="已报价",
|
||||
)
|
||||
view = ledger.get_for_agent(work_order_no=wo, sender_id="u-land-skip")
|
||||
self.assertEqual(view.get("wait_phase"), "wait_adopt")
|
||||
|
||||
restarted = LandTextInquiryFlow(ledger)
|
||||
replies: list[str] = []
|
||||
|
||||
def reply(text: str, extra=None) -> str:
|
||||
replies.append(text)
|
||||
_ = extra
|
||||
return ""
|
||||
|
||||
phase = restarted.on_button(
|
||||
sender_id="u-land-skip",
|
||||
action=copy.BTN_SKIP_COLLAB,
|
||||
reply=reply,
|
||||
card_meta={
|
||||
"event_key": f"skip_collab:{wo}",
|
||||
"task_id": f"price-{wo}-land",
|
||||
"response_code": "rc-land-skip",
|
||||
},
|
||||
)
|
||||
self.assertEqual(phase, "wait_adopt")
|
||||
joined = "\n".join(replies)
|
||||
self.assertIn("已跳过内部协同", joined)
|
||||
self.assertIn(f"{wo}报价方案", joined)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user