""" 陆运 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.schema.tms_land_query import assemble_land_query class TmsLandQueryTest(unittest.TestCase): def test_outbound_omits_class_and_hk_load(self): facts = { "运输类型": "中港零担/集拼", "线路类别": "东南亚", "运输分类": "急件", "起运港": "广州", "目的港": "香港", "品名": "衣服", "车型/数量": "9米6/1", "通关口岸": "皇岗", } got = assemble_land_query(facts) self.assertTrue(got["ok"]) out = got["outbound"] self.assertEqual(out["landTransportType"], "中港") self.assertEqual(out["routeCategory"], "SOUTHEAST_ASIA") self.assertNotIn("landRouteCategory", out) self.assertEqual(out["vehicleType"], "9米6") self.assertEqual(str(out["quantity"]), "1") self.assertEqual(out["customsPort"], "皇岗") self.assertNotIn("运输分类", out) self.assertNotIn("landClass", out) self.assertNotIn("hkLoadType", out) self.assertNotIn("中港装载方式", out) def test_hk_full_truck_omits_vehicle(self): facts = { "运输类型": "中港整车", "线路类别": "东南亚", "起运港": "广州", "目的港": "香港", "品名": "衣服", } got = assemble_land_query(facts) self.assertTrue(got["ok"]) out = got["outbound"] self.assertEqual(out["landTransportType"], "中港") self.assertNotIn("vehicleType", out) self.assertNotIn("quantity", out) def test_domestic_ftl_splits_combo(self): facts = { "运输类型": "国内运输整车", "线路类别": "国内长途/零担", "起运港": "广州", "目的港": "深圳", "品名": "衣服", "车型/数量": "9米6*2", } out = assemble_land_query(facts)["outbound"] self.assertEqual(out["vehicleType"], "9米6") self.assertEqual(out["quantity"], "2") def test_domestic_has_no_customs(self): facts = { "运输类型": "国内运输拼车", "线路类别": "国内长途/零担", "起运港": "广州", "目的港": "深圳", "品名": "衣服", "体积": "100CBM", "毛重": "50kg", } out = assemble_land_query(facts)["outbound"] self.assertNotIn("customsPort", out) self.assertIn("volumeCbm", out) self.assertEqual(out["landTransportType"], "DOMESTIC_LTL") self.assertEqual(out["routeCategory"], "DOMESTIC_LONG_LTL") def test_wo011_pinche_city_dist_uses_tms_enums(self): facts = { "运输类型": "国内运输拼车", "线路类别": "国内城配/拖车/打包", "起运港": "泉州市", "目的港": "南京市", "品名": "通信机柜及线缆配件", "体积": "10CBM", "毛重": "10KG", } got = assemble_land_query(facts) self.assertTrue(got["ok"]) out = got["outbound"] self.assertEqual(out["landTransportType"], "DOMESTIC_LTL") self.assertEqual(out["routeCategory"], "DOMESTIC_CITY_DIST") self.assertNotIn("landRouteCategory", out) if __name__ == "__main__": unittest.main()