调价后的新价格写入报价单;多段段前的货物带到各段,协同群不再把体积里的星号吃掉。海运字段齐了先核对再查价。
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1091,6 +1091,31 @@ class AirGroupCollabTests(unittest.TestCase):
|
||||
self.assertTrue(any(f"工单{wo}的1个附件已保存到后台工单" in t for t in self._texts()))
|
||||
self.assertTrue(any("报价单已发送,请确认成交状态" in t for t in self._texts()))
|
||||
|
||||
def test_reactivate_after_airline_file_is_deal_not_blank_sheet(self) -> None:
|
||||
"""航线附件已报价后,再发工单号回到成交跟进,不再要航线报价。"""
|
||||
wo = self._create_air()
|
||||
handle_air_group(
|
||||
self._msg(sender="air1", text=wo, chat="wr_air_1", mid="af3b"),
|
||||
flow=self.flow,
|
||||
ledger=self.ledger,
|
||||
)
|
||||
handle_air_group(
|
||||
self._file(sender="air1", filename="航线报价.pdf", chat="wr_air_1", mid="af4b"),
|
||||
flow=self.flow,
|
||||
ledger=self.ledger,
|
||||
)
|
||||
before = len(self.groups.sent)
|
||||
phase = handle_air_group(
|
||||
self._msg(sender="sales1", text=wo, chat="wr_air_1", mid="af4c"),
|
||||
flow=self.flow,
|
||||
ledger=self.ledger,
|
||||
)
|
||||
self.assertEqual(phase, "activated_deal")
|
||||
added = self.groups.sent[before:]
|
||||
texts = "\n".join(x.get("content") or "" for x in added)
|
||||
self.assertIn("请确认成交状态", texts)
|
||||
self.assertFalse(any(x.get("kind") == "file" for x in added))
|
||||
|
||||
def test_image_rejected(self) -> None:
|
||||
wo = self._create_air()
|
||||
handle_air_group(
|
||||
@@ -1376,6 +1401,45 @@ class AirGroupCollabTests(unittest.TestCase):
|
||||
self.assertIn("锁舱失败的原因:该航班日期不存在可锁定的配载记录", joined)
|
||||
self.assertNotIn("TMS接口异常,IT运维排查中", joined)
|
||||
|
||||
def test_paused_after_lock_still_records_lost_reason(self) -> None:
|
||||
"""锁舱失败标了暂停后,未成交和原因仍要入账,不能回 TMS 异常。"""
|
||||
wo = self._create_air()
|
||||
handle_air_group(
|
||||
self._msg(sender="sales1", text=wo, chat="wr_air_paused_lost", mid="pl0"),
|
||||
flow=self.flow,
|
||||
ledger=self.ledger,
|
||||
injected_intent="air_activate",
|
||||
)
|
||||
self.ledger.mark_system_exception(
|
||||
work_order_no=wo,
|
||||
system_exception="TMS",
|
||||
system_exception_reason="空运锁舱接口调用失败",
|
||||
step="tms_lock",
|
||||
payload={},
|
||||
)
|
||||
self.groups.sent.clear()
|
||||
phase = handle_air_group(
|
||||
self._msg(sender="sales1", text="未成交", chat="wr_air_paused_lost", mid="pl1"),
|
||||
flow=self.flow,
|
||||
ledger=self.ledger,
|
||||
injected_intent="deal_lost",
|
||||
)
|
||||
self.assertEqual(phase, "wait_lost_reason")
|
||||
self.assertNotIn("TMS接口异常", "\n".join(self._texts()))
|
||||
self.groups.sent.clear()
|
||||
phase = handle_air_group(
|
||||
self._msg(sender="sales1", text="客户不需要了", chat="wr_air_paused_lost", mid="pl2"),
|
||||
flow=self.flow,
|
||||
ledger=self.ledger,
|
||||
injected_intent="other",
|
||||
)
|
||||
self.assertEqual(phase, "done")
|
||||
joined = "\n".join(self._texts())
|
||||
self.assertIn("已记下未成交原因:客户不需要了", joined)
|
||||
self.assertNotIn("TMS接口异常", joined)
|
||||
ticket = self.ledger.get_ticket(work_order_no=wo)
|
||||
self.assertEqual(ticket.lost_reason, "客户不需要了")
|
||||
|
||||
def test_release_fail_tells_operator_and_tms_reason(self) -> None:
|
||||
"""释放失败同理:操作人、原因、已通知IT,不要系统异常兜底。"""
|
||||
wo = self._create_air()
|
||||
|
||||
Reference in New Issue
Block a user