陆运中港整车和中港零担/集拼查价时,TMS 只认「中港」。工单仍保留细类,避免把两类原样传出去对不上运价。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-10-08 18:30:12 +08:00
co-authored by Cursor
parent 6141978a9e
commit baa4d81be9
7 changed files with 27 additions and 13 deletions
+5 -5
View File
@@ -3,8 +3,8 @@
本文件职责:核对卡通过后、建单查价前,确认当前运输类型的货物字段能拼出查价正文。
带去:运输类型、线路类别、始发/目的/品名/报价日期,以及该类型的体积重量或车型/数量;通关口岸有值才带。
出站类型/线路必须译成 TMS 6.1.1 英文枚举,线路键名 routeCategory。工单与卡片仍用中文。
中港整车、中港零担/集拼出站类型都是 CHINA_HK。中港整车不带车型/数量。
出站类型/线路译成 TMS 用的值,线路键名 routeCategory。工单与卡片仍用销售中文。
中港整车、中港零担/集拼出站类型都只写「中港」。中港整车不带车型/数量。
禁止:把运输分类放进出站;直连 TMS;改六态。
线程:纯函数。
"""
@@ -29,8 +29,8 @@ _TYPE_ENUM = {
"国内运输整车": "DOMESTIC_FTL",
"跨境集拼": "CROSS_BORDER_LTL",
"跨境整车": "CROSS_BORDER_FTL",
"中港整车": "CHINA_HK",
"中港零担/集拼": "CHINA_HK",
"中港整车": "中港",
"中港零担/集拼": "中港",
}
_ROUTE_ENUM = {
"国内长途/零担": "DOMESTIC_LONG_LTL",
@@ -45,7 +45,7 @@ _TAIL_QTY = re.compile(r"^(.*?)[\s,,]+(\d+)\s*(台|辆)?$")
def tms_land_type_code(raw: str) -> str:
"""销售中文运输类型 → TMS 6.1.1 landTransportType。对不上空串。"""
"""销售中文运输类型 → 查价 landTransportType。中港两类都是「中港」。对不上空串。"""
text = (raw or "").strip()
if text in _TYPE_ENUM:
return _TYPE_ENUM[text]
+2 -1
View File
@@ -30,7 +30,7 @@ class TmsLandQueryTest(unittest.TestCase):
got = assemble_land_query(facts)
self.assertTrue(got["ok"])
out = got["outbound"]
self.assertEqual(out["landTransportType"], "CHINA_HK")
self.assertEqual(out["landTransportType"], "中港")
self.assertEqual(out["routeCategory"], "SOUTHEAST_ASIA")
self.assertNotIn("landRouteCategory", out)
self.assertEqual(out["vehicleType"], "9米6")
@@ -52,6 +52,7 @@ class TmsLandQueryTest(unittest.TestCase):
got = assemble_land_query(facts)
self.assertTrue(got["ok"])
out = got["outbound"]
self.assertEqual(out["landTransportType"], "中港")
self.assertNotIn("vehicleType", out)
self.assertNotIn("quantity", out)