""" 陆运五套询价必填校验。不连 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.field_validate import display_name, validate_required_fields class LandFieldValidateTest(unittest.TestCase): def test_ltl_missing_volume(self): got = validate_required_fields( facts={"起运港": "广州", "目的港": "深圳", "品名": "衣服", "毛重": "50kg"}, business_line="LAND", land_subtype="国内运输拼车", ) self.assertFalse(got["ok"]) self.assertIn("体积", got["missing"]) def test_hk_lcl_still_needs_vehicle(self): got = validate_required_fields( facts={ "起运港": "广州", "目的港": "香港", "品名": "衣服", "体积": "10CBM", "毛重": "50kg", }, business_line="LAND", land_subtype="中港零担/集拼", ) self.assertIn("车型/数量", got["missing"]) self.assertNotIn("数量", got["missing"]) self.assertNotIn("车型", got["missing"]) def test_hk_full_truck_skips_vehicle(self): got = validate_required_fields( facts={ "起运港": "广州", "目的港": "香港", "品名": "衣服", }, business_line="LAND", land_subtype="中港整车", ) self.assertTrue(got["ok"]) self.assertNotIn("车型/数量", got["missing"]) def test_domestic_ftl_one_field(self): got = validate_required_fields( facts={ "起运港": "广州", "目的港": "深圳", "品名": "衣服", "车型/数量": "9米6/1", }, business_line="LAND", land_subtype="国内运输整车", ) self.assertTrue(got["ok"]) self.assertEqual(got["facts"]["车型/数量"], "9米6/1") def test_cross_ftl_folds_split_keys(self): got = validate_required_fields( facts={ "起运港": "广州", "目的港": "河内", "品名": "衣服", "车型": "9米6", "数量": "1", }, business_line="LAND", land_subtype="跨境整车", ) self.assertTrue(got["ok"]) self.assertEqual(got["facts"]["车型/数量"], "9米6/1") def test_quote_date_defaults(self): got = validate_required_fields( facts={ "起运港": "广州", "目的港": "深圳", "品名": "衣服", "体积": "100CBM", "毛重": "50kg", }, business_line="LAND", land_subtype="国内运输拼车", ) self.assertTrue(got["ok"]) self.assertRegex(got["facts"]["报价日期"], r"^\d{4}-\d{2}-\d{2}$") def test_land_display_names(self): self.assertEqual(display_name("起运港", "LAND"), "始发站") self.assertEqual(display_name("品名", "LAND"), "货物品名") if __name__ == "__main__": unittest.main()