落地陆运群内协同:按填写样例拉群并只列本单协同项,进群把私聊已抽到的字段带上。
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
"""
|
||||
陆运群协同项:六套名单、展示名、预填、口语危险品。
|
||||
不连企微 / TMS / 主账。
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
import sys
|
||||
import unittest
|
||||
|
||||
ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
|
||||
if ROOT not in sys.path:
|
||||
sys.path.insert(0, ROOT)
|
||||
|
||||
from agent.llm.extract_text import extract_collab_fields
|
||||
from agent.schema.field_validate import (
|
||||
collab_display_name,
|
||||
collab_fields_for_ticket,
|
||||
harvest_oral_collab,
|
||||
land_collab_fields,
|
||||
pick_collab_from_facts,
|
||||
)
|
||||
|
||||
|
||||
class LandCollabFieldsTest(unittest.TestCase):
|
||||
def test_domestic_ltl_keys(self):
|
||||
keys = land_collab_fields("国内运输拼车", "国内长途/零担")
|
||||
self.assertEqual(keys, ("客户名称", "包装方式", "货值", "是否为危险品"))
|
||||
|
||||
def test_domestic_ftl_longhaul_keys(self):
|
||||
keys = land_collab_fields("国内运输整车", "国内长途/零担")
|
||||
self.assertEqual(keys, ("客户名称", "货值", "包装方式", "是否为危险品"))
|
||||
|
||||
def test_domestic_ftl_order(self):
|
||||
keys = land_collab_fields("国内运输整车", "国内城配/拖车/打包")
|
||||
self.assertEqual(keys, ("客户名称", "货值", "包装方式", "是否为危险品"))
|
||||
|
||||
def test_cross_ftl_no_vehicle(self):
|
||||
keys = land_collab_fields("跨境整车", "东南亚")
|
||||
self.assertIn("HS编码", keys)
|
||||
self.assertNotIn("车型/数量", keys)
|
||||
|
||||
def test_hk_ftl_has_vehicle(self):
|
||||
keys = land_collab_fields("中港整车", "中港/中亚/中欧")
|
||||
self.assertIn("车型/数量", keys)
|
||||
self.assertEqual(keys[0], "客户名称")
|
||||
|
||||
def test_unlisted_pair_empty(self):
|
||||
self.assertEqual(land_collab_fields("国内运输拼车", "东南亚"), ())
|
||||
|
||||
def test_land_hs_display(self):
|
||||
self.assertEqual(collab_display_name("HS编码", "LAND"), "海关编码")
|
||||
self.assertEqual(collab_display_name("HS编码", "SEA"), "商品海关编码")
|
||||
|
||||
def test_ticket_sea_air(self):
|
||||
self.assertIn("是否含电", collab_fields_for_ticket({}, "SEA"))
|
||||
self.assertEqual(
|
||||
collab_fields_for_ticket({}, "AIR"),
|
||||
("是否含电", "是否含磁"),
|
||||
)
|
||||
|
||||
def test_pick_skips_inquiry_vehicle(self):
|
||||
got = pick_collab_from_facts(
|
||||
{"包装方式": "纸箱", "车型/数量": "9米/1", "海关编码": "8479"},
|
||||
land_collab_fields("跨境整车", "东南亚"),
|
||||
)
|
||||
self.assertEqual(got.get("包装方式"), "纸箱")
|
||||
self.assertEqual(got.get("HS编码"), "8479")
|
||||
self.assertNotIn("车型/数量", got)
|
||||
|
||||
def test_dg_oral(self):
|
||||
self.assertEqual(harvest_oral_collab("普货")["是否为危险品"], "否")
|
||||
self.assertEqual(harvest_oral_collab("危险品")["是否为危险品"], "是")
|
||||
self.assertEqual(harvest_oral_collab("不是危险品")["是否为危险品"], "否")
|
||||
|
||||
def test_labeled_without_colon(self):
|
||||
allowed = land_collab_fields("国内运输拼车", "国内长途/零担")
|
||||
got = extract_collab_fields(
|
||||
"客户名称张三 包装方式编织袋 货值 10万",
|
||||
allowed_keys=allowed,
|
||||
)
|
||||
self.assertEqual(got.get("客户名称"), "张三")
|
||||
self.assertEqual(got.get("包装方式"), "编织袋")
|
||||
self.assertEqual(got.get("货值"), "10万")
|
||||
|
||||
def test_bare_pack_ignored(self):
|
||||
allowed = land_collab_fields("国内运输拼车", "国内长途/零担")
|
||||
self.assertEqual(extract_collab_fields("编织袋", allowed_keys=allowed), {})
|
||||
|
||||
def test_trade_terms_filtered_for_ltl(self):
|
||||
allowed = land_collab_fields("国内运输拼车", "国内长途/零担")
|
||||
got = extract_collab_fields("客户名称张三,贸易条款 FOB", allowed_keys=allowed)
|
||||
self.assertEqual(got, {"客户名称": "张三"})
|
||||
|
||||
def test_sea_labeled_still_works(self):
|
||||
got = extract_collab_fields("贸易条款:FOB")
|
||||
self.assertEqual(got.get("贸易条款"), "FOB")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user