目的地只留地名,货物数量不再用箱型,未成交原因去掉艾特。
口语里逗号后面的品名和包装不再粘在目的地上;件数被抽成箱型时改用件数;群里艾特机器人不记进未成交原因。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -157,6 +157,10 @@ class TestDealOutcome(unittest.TestCase):
|
||||
self.assertEqual(harvest_inline_lost_reason("未成交,客户不想要了"), "客户不想要了")
|
||||
self.assertEqual(harvest_inline_lost_reason("未成交:价格太高"), "价格太高")
|
||||
self.assertEqual(harvest_inline_lost_reason("未成交原因客户不想要了"), "客户不想要了")
|
||||
self.assertEqual(
|
||||
harvest_inline_lost_reason("WO202609240010未成交,原因客户不需要了@询价小助手"),
|
||||
"客户不需要了",
|
||||
)
|
||||
self.assertEqual(harvest_inline_lost_reason("未成交"), "")
|
||||
self.assertEqual(harvest_inline_lost_reason("未成交吗"), "")
|
||||
self.assertEqual(harvest_inline_lost_reason("成交"), "")
|
||||
|
||||
@@ -123,6 +123,30 @@ class OralExtractTests(unittest.TestCase):
|
||||
self.assertEqual(bulk["facts"]["包装方式"], "散货")
|
||||
self.assertNotIn("包装方式", bulk["missing"])
|
||||
|
||||
def test_place_stops_before_cargo_and_price(self) -> None:
|
||||
"""目的地只留地名。后面的品名、包装、的价格不能粘在地名上。"""
|
||||
from agent.schema.field_validate import validate_required_fields
|
||||
|
||||
check = validate_required_fields(
|
||||
facts={
|
||||
"目的港": "吉隆坡,普货,散货的价格",
|
||||
"品名": "普货",
|
||||
"包装方式": "散货",
|
||||
"报价日期": "2026-09-29",
|
||||
},
|
||||
business_line="AIR",
|
||||
)
|
||||
self.assertEqual(check["facts"]["目的港"], "吉隆坡")
|
||||
self.assertEqual(check["facts"]["品名"], "普货")
|
||||
self.assertEqual(check["facts"]["包装方式"], "散货")
|
||||
bare = validate_required_fields(
|
||||
facts={"目的港": "洛杉矶,茶叶,纸箱的价格"},
|
||||
business_line="AIR",
|
||||
)
|
||||
self.assertEqual(bare["facts"]["目的港"], "洛杉矶")
|
||||
self.assertEqual(bare["facts"]["品名"], "茶叶")
|
||||
self.assertEqual(bare["facts"]["包装方式"], "纸箱")
|
||||
|
||||
def test_fly_route_overwrites_stale_nkg_kul(self) -> None:
|
||||
from agent.schema.field_validate import harvest_oral_measures
|
||||
from agent.schema.tms_air_query import assemble_air_query
|
||||
|
||||
@@ -143,6 +143,23 @@ class SeaTextInquiryTests(unittest.TestCase):
|
||||
self.assertEqual(check["facts"]["货量"], "15件")
|
||||
self.assertNotIn("货量", check["missing"])
|
||||
|
||||
def test_container_shaped_cargo_qty_uses_pieces(self) -> None:
|
||||
"""货量被抽成箱型时,改用件数。20件、15件同一条规则。"""
|
||||
facts = {
|
||||
"起运港": "广州港",
|
||||
"目的港": "巴生港",
|
||||
"品名": "机器设备",
|
||||
"货量": "40HQ*1",
|
||||
"件数": "20件",
|
||||
"整柜或拼柜": "整柜",
|
||||
"箱型箱量": "40HQ*1",
|
||||
"贸易条款": "DOOR-DOOR",
|
||||
"运输分类": "Port to Port",
|
||||
}
|
||||
check = validate_required_fields(facts=facts, business_line="SEA")
|
||||
self.assertEqual(check["facts"]["货量"], "20件")
|
||||
self.assertEqual(check["facts"]["箱型箱量"], "40HQ*1")
|
||||
|
||||
def test_sea_missing_container_only_asks_container(self) -> None:
|
||||
facts = {
|
||||
"起运港": "上海",
|
||||
|
||||
Reference in New Issue
Block a user