陆运选项不全时改为复制填空清单,方便销售按编号回填。
停发填写样例图,同群只跟当前工单,重量体积统一为 KG/CBM。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -96,11 +96,13 @@ class AirTextInquiryTests(unittest.TestCase):
|
||||
self.assertIn("目的地:克拉克", text)
|
||||
self.assertIn("品名:茶叶", text)
|
||||
self.assertIn("件数:10件", text)
|
||||
self.assertIn("待补充:", text)
|
||||
self.assertIn("重量:(如:100KGS)", text)
|
||||
self.assertIn("体积:(如:2CBM)", text)
|
||||
self.assertIn("包装类型:(如:托盘)", text)
|
||||
self.assertIn("货源地(非必填)", text)
|
||||
self.assertIn(copy.CLARIFY_PASTE_HINT, text)
|
||||
self.assertNotIn("待补充:", text)
|
||||
self.assertIn("1.重量(KG)(必填):\n(如:100)", text)
|
||||
self.assertIn("2.体积(CBM)(必填):\n(如:2)", text)
|
||||
self.assertIn("3.包装类型(必填):\n(如:托盘、散货)", text)
|
||||
self.assertNotIn("重量:(如:", text)
|
||||
self.assertIn("货源地(非必填):\n(如:东莞)", text)
|
||||
|
||||
def test_inquiry_card_matches_sales_format(self) -> None:
|
||||
text = copy.inquiry_card(
|
||||
@@ -128,8 +130,8 @@ class AirTextInquiryTests(unittest.TestCase):
|
||||
"目的地:克拉克",
|
||||
"品名:茶叶",
|
||||
"件数:10件",
|
||||
"重量:1",
|
||||
"体积:8",
|
||||
"重量(KG):1",
|
||||
"体积(CBM):8",
|
||||
"包装类型:托盘",
|
||||
"报价日期:2026-09-12",
|
||||
"工单已创建,正在查询TMS报价。",
|
||||
@@ -199,7 +201,33 @@ class AirTextInquiryTests(unittest.TestCase):
|
||||
injected_mode="",
|
||||
)
|
||||
self.assertEqual(phase, "need_mode")
|
||||
self.assertIn("运输方式", self.replies[-1])
|
||||
self.assertIn(copy.ASK_TRANSPORT, self.replies[-1])
|
||||
self.assertIn("1.陆运", self.replies[-1])
|
||||
self.assertIn("2.海运", self.replies[-1])
|
||||
self.assertIn("3.空运", self.replies[-1])
|
||||
|
||||
def test_missing_mode_accepts_number_or_word(self) -> None:
|
||||
"""未定运输方式时,回 3 或「空运」都走空运。"""
|
||||
self.flow.on_text(
|
||||
sender_id="u_mode_num",
|
||||
text="帮我看看价格",
|
||||
reply=self._reply,
|
||||
injected_facts={},
|
||||
injected_mode="",
|
||||
)
|
||||
phase = self.flow.on_text(sender_id="u_mode_num", text="3", reply=self._reply)
|
||||
self.assertNotEqual(phase, "need_mode")
|
||||
self.assertEqual(self.flow.session_of("u_mode_num").business_line, "AIR")
|
||||
self.flow.on_text(
|
||||
sender_id="u_mode_word",
|
||||
text="帮我看看价格",
|
||||
reply=self._reply,
|
||||
injected_facts={},
|
||||
injected_mode="",
|
||||
)
|
||||
phase = self.flow.on_text(sender_id="u_mode_word", text="空运", reply=self._reply)
|
||||
self.assertNotEqual(phase, "need_mode")
|
||||
self.assertEqual(self.flow.session_of("u_mode_word").business_line, "AIR")
|
||||
|
||||
def test_pack_bulk_cargo_accepted_as_user_said(self) -> None:
|
||||
facts = dict(COMPLETE_AIR)
|
||||
@@ -251,13 +279,48 @@ class AirTextInquiryTests(unittest.TestCase):
|
||||
self.assertIn("请确认并补充以下信息", last)
|
||||
self.assertIn("运输方式:空运", last)
|
||||
self.assertIn("起运地:上海", last)
|
||||
self.assertIn("待补充:", last)
|
||||
self.assertIn(copy.CLARIFY_PASTE_HINT, last)
|
||||
self.assertIn("目的地", last)
|
||||
self.assertIn("件数", last)
|
||||
self.assertIn("如:", last)
|
||||
self.assertIn("报价日期:", last)
|
||||
self.assertNotIn("报价日期:(如", last)
|
||||
|
||||
def test_clarify_paste_reply_fills_missing_required(self) -> None:
|
||||
"""销售复制清单只填冒号后的值,空着的包装类型继续补问。"""
|
||||
phase = self.flow.on_text(
|
||||
sender_id="paste1",
|
||||
text="空运询价",
|
||||
reply=self._reply,
|
||||
injected_facts={
|
||||
"起运港": "南京",
|
||||
"目的港": "吉隆坡",
|
||||
"品名": "茶叶",
|
||||
"报价日期": "2026-09-17",
|
||||
},
|
||||
injected_mode="AIR",
|
||||
)
|
||||
self.assertEqual(phase, "clarify")
|
||||
phase = self.flow.on_text(
|
||||
sender_id="paste1",
|
||||
text=(
|
||||
"1.件数(必填):10\n"
|
||||
"(如:10)\n"
|
||||
"2.重量(KG)(必填):10\n"
|
||||
"(如:100)\n"
|
||||
"3.体积(CBM)(必填):10\n"
|
||||
"(如:2)\n"
|
||||
"4.包装类型(必填):\n"
|
||||
"(如:托盘、散货)"
|
||||
),
|
||||
reply=self._reply,
|
||||
)
|
||||
self.assertEqual(phase, "clarify")
|
||||
last = self.replies[-1]
|
||||
self.assertIn("件数:10件", last)
|
||||
self.assertIn("包装类型(必填)", last)
|
||||
self.assertNotIn("包装类型:托盘、散货", last)
|
||||
|
||||
def test_complete_air_hit_then_skip_adopt_excel_deal(self) -> None:
|
||||
phase = self._on_text(
|
||||
sender_id="u1",
|
||||
@@ -272,7 +335,7 @@ class AirTextInquiryTests(unittest.TestCase):
|
||||
self.assertIn("运输方式:空运", joined)
|
||||
self.assertIn("起运地:上海", joined)
|
||||
self.assertIn("目的地:洛杉矶", joined)
|
||||
self.assertIn("重量:", joined)
|
||||
self.assertIn("重量(KG):", joined)
|
||||
self.assertIn("正在查询TMS报价", joined)
|
||||
self.assertNotIn("【询价卡片】", joined)
|
||||
self.assertNotIn("[test]", joined)
|
||||
@@ -400,8 +463,8 @@ class AirTextInquiryTests(unittest.TestCase):
|
||||
joined = "\n".join(self.replies)
|
||||
self.assertIn("起运地:南京", joined)
|
||||
self.assertIn("目的地:吉隆坡", joined)
|
||||
self.assertIn("重量:", joined)
|
||||
self.assertIn("体积:", joined)
|
||||
self.assertIn("重量(KG):", joined)
|
||||
self.assertIn("体积(CBM):", joined)
|
||||
self.assertIn("包装类型:散货", joined)
|
||||
self.assertIn("报价日期:2026-09-16", joined)
|
||||
self.assertNotIn("重量(KG)", joined)
|
||||
@@ -985,7 +1048,7 @@ class AirTextInquiryTests(unittest.TestCase):
|
||||
self.assertIn("【WO202609140001报价方案】", text)
|
||||
self.assertIn("工单号:WO202609140001", text)
|
||||
self.assertIn("起运地:上海", text)
|
||||
self.assertIn("体积:2.5", text)
|
||||
self.assertIn("体积(CBM):2.5", text)
|
||||
self.assertIn("空运费:USD 1,200", text)
|
||||
self.assertNotIn("时效", text)
|
||||
self.assertIn("报价有效期:2026-09-20", text)
|
||||
|
||||
Reference in New Issue
Block a user