后台成本价、销售价、利润点按费用逐行展示,费用合计用报价官方总价。选完线路只关页面。报价单文件名带上模板名,空运起运地和转人工跟对应工单走。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-10-05 12:33:34 +08:00
co-authored by Cursor
parent 7c77e45e03
commit e95e8869a6
30 changed files with 1926 additions and 75 deletions
+15 -10
View File
@@ -454,9 +454,7 @@ def _air_field_line(key: str, value: str, *, required: bool, example: str = "")
def AIR_DISPLAY_LABEL(key: str) -> str:
"""核对/补问对外名。起运港按产品口径写起运港。"""
if key == "起运港":
return "起运港"
"""核对/补问对外名。空运起运港对外写起运地,内部键不变。"""
return display_name(key, "AIR")
@@ -464,10 +462,11 @@ def air_confirm_card(facts: dict[str, str] | None) -> str:
"""
确定查价前的核对卡。没有工单号。
必填 7 项 + 6 个非必填都列出;空着的非必填留空行。
起运地(非必填)紧挨在目的地(必填)上面。其余非必填仍在报价日期后面。
"""
src = dict(facts or {})
lines = ["运输方式(必填):空运"]
lines.append(_air_field_line("起运港", _air_known_value(src, "起运港"), required=False))
for key, _label in AIR_REQUIRED_FIELDS:
if key == "报价日期":
val = _air_known_value(src, key) or (src.get("报价日期") or "").strip()
@@ -475,6 +474,8 @@ def air_confirm_card(facts: dict[str, str] | None) -> str:
continue
lines.append(_air_field_line(key, _air_known_value(src, key), required=True))
for key, _label in AIR_OPTIONAL_FIELDS:
if key == "起运港":
continue
lines.append(_air_field_line(key, _air_known_value(src, key), required=False))
lines.append("")
lines.append(AIR_CONFIRM_TAIL)
@@ -523,14 +524,15 @@ def ask_clarify(
lines = ["请确认并补充以下信息:"]
if transport_mode:
lines.append(f"运输方式:{transport_mode}")
if not sea:
origin = known(src, "起运港")
if origin:
lines.append(f"起运地:{origin}")
for key, label, _example in rows:
val = known(src, key)
if val:
lines.append(f"{label}:{val}")
if not sea:
origin = known(src, "起运港")
if origin:
lines.append(f"起运地:{origin}")
for key, label, _example in _AIR_OPTIONAL_CLARIFY:
if key == "起运港":
continue
@@ -545,6 +547,10 @@ def ask_clarify(
any_missing = True
seq += 1
lines.append(_pending_field_block(seq, "运输方式", "空运"))
if not sea and not known(src, "起运港"):
any_missing = True
seq += 1
lines.append(_pending_field_block(seq, "起运地", _AIR_EXAMPLES["起运港"], optional=True))
for key, label, example in rows:
if key in missing_set:
any_missing = True
@@ -564,13 +570,12 @@ def ask_clarify(
optional_pending = [
(key, label, example)
for key, label, example in _AIR_OPTIONAL_CLARIFY
if not known(src, key)
if key != "起运港" and not known(src, key)
]
for key, label, example in optional_pending:
any_missing = True
seq += 1
shown = "起运港" if key == "起运港" else label
lines.append(_pending_field_block(seq, shown, example, optional=True))
lines.append(_pending_field_block(seq, label, example, optional=True))
if not any_missing:
return ""
return "\n".join(lines)