调价后的新价格写入报价单;多段段前的货物带到各段,协同群不再把体积里的星号吃掉。海运字段齐了先核对再查价。
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -265,6 +265,58 @@ class ContinueTicketTests(unittest.TestCase):
|
||||
self.assertTrue(any("已记录为「已成交」" in x for x in replies))
|
||||
self.assertIn(wo, "\n".join(replies))
|
||||
|
||||
def test_resume_waiting_lost_reason_saves_sentence(self) -> None:
|
||||
"""等未成交原因时继续工单,下一句要写入原因,不能再要一遍。"""
|
||||
ledger = MemoryLedger()
|
||||
created = ledger.create_ticket(
|
||||
sender_id="u7", 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"},
|
||||
)
|
||||
flow = AirTextInquiryFlow(ledger)
|
||||
replies: list[str] = []
|
||||
|
||||
def reply(text: str, extra=None) -> None:
|
||||
replies.append(text)
|
||||
_ = extra
|
||||
|
||||
self.assertEqual(
|
||||
flow.resume_historical(sender_id="u7", work_order_no=wo, reply=reply),
|
||||
"wait_deal",
|
||||
)
|
||||
self.assertEqual(
|
||||
flow.on_button(sender_id="u7", action=copy.BTN_LOST, reply=reply),
|
||||
"wait_lost_reason",
|
||||
)
|
||||
replies.clear()
|
||||
phase = flow.resume_historical(
|
||||
sender_id="u7", work_order_no=wo, reply=reply, text=""
|
||||
)
|
||||
self.assertEqual(phase, "wait_lost_reason")
|
||||
self.assertTrue(any("请补充未成交原因" in x for x in replies))
|
||||
replies.clear()
|
||||
phase = flow.resume_historical(
|
||||
sender_id="u7",
|
||||
work_order_no=wo,
|
||||
reply=reply,
|
||||
text="客户不需要了",
|
||||
)
|
||||
self.assertEqual(phase, "done")
|
||||
self.assertTrue(any("已记下未成交原因:客户不需要了" in x for x in replies))
|
||||
self.assertFalse(any("请补充未成交原因" in x for x in replies))
|
||||
view = ledger.get_for_agent(work_order_no=wo, sender_id="u7") or {}
|
||||
self.assertEqual(view.get("lost_reason"), "客户不需要了")
|
||||
|
||||
def test_resume_missing_wo_asks(self) -> None:
|
||||
flow = AirTextInquiryFlow(MemoryLedger())
|
||||
replies: list[str] = []
|
||||
|
||||
Reference in New Issue
Block a user