落地私聊图片询价:识图当口播复用三线文字流程,图上航线三字码保持原样,避免被改写成中文地名。
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -15,7 +15,7 @@ if ROOT not in sys.path:
|
||||
|
||||
os.environ.setdefault("LEDGER_BACKEND", "memory")
|
||||
|
||||
from agent.llm.extract_text import extract_inquiry_snapshot
|
||||
from agent.llm.extract_text import extract_inquiry_snapshot, parse_labeled_facts
|
||||
from agent.llm.mode_extract_fields import invoke_shell, parse_extract_payload
|
||||
from agent.policy.air_text_flow import AirTextInquiryFlow
|
||||
from agent.ledger.memory_ledger import MemoryLedger
|
||||
@@ -65,6 +65,22 @@ class OralExtractTests(unittest.TestCase):
|
||||
self.assertEqual(snap["business_line"], "AIR")
|
||||
self.assertFalse(snap["facts"].get("起运港"))
|
||||
|
||||
def test_labeled_customs_port(self) -> None:
|
||||
self.assertEqual(parse_labeled_facts("通关口岸:皇岗").get("通关口岸"), "皇岗")
|
||||
snap = extract_inquiry_snapshot("通关口岸(非必填):皇岗")
|
||||
self.assertEqual(snap["facts"].get("通关口岸"), "皇岗")
|
||||
snap2 = extract_inquiry_snapshot("通关口岸皇岗")
|
||||
self.assertEqual(snap2["facts"].get("通关口岸"), "皇岗")
|
||||
|
||||
def test_b_keeps_land_customs_port(self) -> None:
|
||||
parsed = parse_extract_payload(
|
||||
{
|
||||
"transport_mode": "LAND",
|
||||
"fields": {"起运港": "广州", "通关口岸": "皇岗"},
|
||||
}
|
||||
)
|
||||
self.assertEqual(parsed["facts"].get("通关口岸"), "皇岗")
|
||||
|
||||
def test_assemble_air_query_zhuhai_clark(self) -> None:
|
||||
from agent.schema.tms_air_query import assemble_air_query
|
||||
|
||||
@@ -134,6 +150,46 @@ class OralExtractTests(unittest.TestCase):
|
||||
self.assertNotIn("起运地:NKG", shown)
|
||||
self.assertNotIn("起运地:南京", shown)
|
||||
|
||||
def test_iata_pair_kept_not_rewritten_to_city(self) -> None:
|
||||
from agent.schema.field_validate import harvest_oral_measures
|
||||
from agent.schema.tms_air_query import assemble_air_query
|
||||
from agent.policy import inquiry_copy as copy
|
||||
|
||||
oral = "空运 SZX-CGK 发光二级管组件 11P 2400KG 20cbm"
|
||||
facts = harvest_oral_measures(
|
||||
oral,
|
||||
{"起运港": "深圳", "目的港": "雅加达", "品名": "发光二级管组件"},
|
||||
)
|
||||
self.assertEqual(facts["起运港"], "SZX")
|
||||
self.assertEqual(facts["目的港"], "CGK")
|
||||
assembled = assemble_air_query(
|
||||
{
|
||||
**facts,
|
||||
"件数": "11P",
|
||||
"毛重": "2400KG",
|
||||
"体积": "20cbm",
|
||||
"包装方式": "托盘",
|
||||
"报价日期": "2026-09-18",
|
||||
}
|
||||
)
|
||||
self.assertEqual(assembled["facts"]["originCode"], "SZX")
|
||||
self.assertEqual(assembled["facts"]["destinationCode"], "CGK")
|
||||
card = copy.inquiry_card(work_order_no="WO1", facts=assembled["facts"])
|
||||
self.assertIn("起运地:SZX", card)
|
||||
self.assertIn("目的地:CGK", card)
|
||||
self.assertNotIn("深圳", card)
|
||||
self.assertNotIn("雅加达", card)
|
||||
|
||||
def test_currency_pair_is_not_air_route(self) -> None:
|
||||
from agent.schema.field_validate import harvest_oral_measures
|
||||
|
||||
facts = harvest_oral_measures(
|
||||
"空运 货值 USD-CNY 茶叶",
|
||||
{"起运港": "上海", "目的港": "洛杉矶"},
|
||||
)
|
||||
self.assertEqual(facts["起运港"], "上海")
|
||||
self.assertEqual(facts["目的港"], "洛杉矶")
|
||||
|
||||
def test_oral_pack_and_quote_date_from_current_sentence(self) -> None:
|
||||
from agent.schema.field_validate import harvest_oral_measures
|
||||
|
||||
@@ -225,6 +281,13 @@ class OralExtractTests(unittest.TestCase):
|
||||
self.assertEqual(norm["毛重"], "180")
|
||||
self.assertEqual(norm["体积"], "2.5")
|
||||
|
||||
def test_extract_prompt_keeps_iata(self) -> None:
|
||||
from agent.llm.mode_extract_fields import build_extract_messages
|
||||
|
||||
blob = str(build_extract_messages("空运 SZX-CGK"))
|
||||
self.assertIn("SZX-CGK", blob)
|
||||
self.assertIn("禁止翻译成城市名", blob)
|
||||
|
||||
def test_chat_fn_fixture_drives_flow(self) -> None:
|
||||
def chat_fn(**kwargs):
|
||||
return SimpleNamespace(
|
||||
|
||||
Reference in New Issue
Block a user